打开微信,使用扫一扫进入页面后,点击右上角菜单,
点击“发送给朋友”或“分享到朋友圈”完成分享
1.前言
本文所叙述的APP主要是依赖于CNStream SDK开源框架开发的目标检测型的Web demo。在开发中采用的是B/S架构,使用flask、gunicorn和nginx来进行web端的快速部署;目标检测推理过程使用CNStream开发框架来完成对MLU100/MLU270的调度;web端和推理端通过python来进行粘合,使用python中ctypes库来完成对CNStream推理接口的封装。
该APP最终呈现出的效果如下:
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.视频展示
热门帖子
精华帖子