Web demo mjh20192019-11-11 17:19:24 回复 4 查看 视频SDK 视频处理编程库 CNStream
Web demo

1.前言

       本文所叙述的APP主要是依赖于CNStream SDK开源框架开发的目标检测型的Web demo。在开发中采用的是B/S架构,使用flask、gunicorn和nginx来进行web端的快速部署;目标检测推理过程使用CNStream开发框架来完成对MLU100/MLU270的调度;web端和推理端通过python来进行粘合,使用python中ctypes库来完成对CNStream推理接口的封装。

       该APP最终呈现出的效果如下:

detection.PNG

2.主要实现流程

2.1 通过对CNStream的SDK接口的调用,完成调用自己推理模型的接口,并实现C语言的封装(原因:python中ctypes对C++的支持不好),最终生成libdetector.so共享库,cnstream编译后可在cnstream/apps/lib/目录找到,详细有关代码可参考:cntream/apps/web/detection.cpp。

2.2 使用python中ctypes库完成对共享库libdetector.so加载,进一步封装成python的接口,详细有关代码可参考:cntream/apps/web/interface/detector.py。

2.3 使用flask完成对服务端代码的编写,静态文件都放在cnstream/apps/web/static/中,模板网页放在cnstream/apps/web/templates中,详细有关代码可参考:cntream/apps/web/object_detector_sever.py。


3.使用流程

 3.1 编译cnstream

mkdir build
cd build
cmake .. && make -j16

3.2 安装所需的相关库

cd ../apps/web
./pre_required_helper.sh

3.3 运行app

./run.sh

3.4 gunicorn常用参数

bind = "0.0.0.0:10001"    # 绑定的ip和port
workers = 4               # 运行的进程数
worker_class = "gevent"   # 协程的使用
daemon = False            # 是否在后台运行

3.5 nginx配置的使用

sudo service nginx stop 
sudo nginx -c $PWD/nginx/nginx.conf 
sudo service nginx start

上述命令用于nginx配置文件的应用,使用后可使用10001端口完成对80端口的监听,可按需修改nginx.conf


4.视频展示

detection.gif

官方微博 官方微信
版权所有 © 2019 寒武纪 Cambricon 备案/许可证号:京ICP备17003415
关闭