×

签到

分享到微信

打开微信,使用扫一扫进入页面后,点击右上角菜单,

点击“发送给朋友”或“分享到朋友圈”完成分享

CNStream demo---Web版本推理演示 mjh20192019-11-11 17:19:24 回复 23 查看 视频SDK 视频处理编程库 CNStream
CNStream demo---Web版本推理演示
分享到:

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

版权所有 © 2024 寒武纪 Cambricon.com 备案/许可证号:京ICP备17003415号-1
关闭