Inference 提供一个简易的基于Pipeline的高性能加速框架,使用该框架能够将前处理/推理/后处理分别运行在3个线程上,最大化的实现并行, 用户只需要继承一个类,然后实现自己的前处理/后处理/就可以实现整个流程了。
主要目录结构和模块说明:
目录 | 功能说明 |
---|---|
bmgui-lite | 由于BMNNSDK2自带的OpenCV没有显示功能,此模块提供bm:imshow来显示视频,作为补充。 |
bmgui | 存放Inference用来GUI显示视频的模块 |
bmutility | 提供了特别多的基础库,字符串、定时器等 |
cvs10 | 提供了算能一路的参考实现 |
ddr_reduction | 提供一种节约DDR占用的软件实现方案 |
examples | 多个pipeline demo参考 |
Inference的主要结构设计如下图:
目录examples下有想相关的例子可以参考。目前提供了如下例子:
难易程度 | 目录 | 说明 | 模型个数 |
---|---|---|---|
入门 | face_detect | Sequeezenet 人脸检测 | 1 |
入门 | retinaface | Retinaface 人脸检测 | 1 |
入门 | yolov5 | yolov5s 对象检测 | 1 |
进阶 | openpose | OpenPose 18/25个关键点 | 1 |
进阶 | multi | 两个yolov5模型通过配置文件并行 | 2 |
高级 | face_recognition | 演示多个模型如何串联 | 3 |
高级 | video_stitch | 4路检检测+拼接+编码+RTSP服务 | 1 |
Inference framework 依赖 SophonSDK. 请到算能官网(www.sophgo.com) 进行下载,解压、安装。 SDK的安装方法可以参考如下链接:
Ubuntu 安装QT依赖:
sudo apt install qtbase5-dev
Tracker 功能需要安装 Eigen 依赖:
sudo apt-get install -y libeigen3-dev
Retinaface 模块需要安装 glog/exiv2 依赖:
sudo apt-get install -y libgoogle-glog-dev libexiv2-dev
-
export REL_TOP=$sdk_dir 根据实际位置修改为BMNNSDK跟路径
-
NOTE
如果需要本地显示最终的结果需要手工编辑./compile.sh 找到USE_QTGUI 选项, 设置为ON。 SOC平台,需要下载自定义的QT支持库,可以联系技术支持。TARGET_ARCH=x86 表示编译的程序在x86平台的机器上运行 TARGET_ARCH=soc 表示编译的程序在小盒子上运行 TARGET_ARCH=arm64 表示编译的程序在国产ARM CPU的机器上运行
appname=face_detect 人脸检测 appname=openpose 人体骨骼检测 appname=yolov5 物体检测 appname=retinaface 人脸检测
./compile.sh [target_arch] example: ./compile.sh x86 # x85平台 ./compile.sh soc # SOC平台
cd ./release/facedetect_demo
./x86/facedetect_demo --help 查看命行帮助信息
相关模型请从下面网盘下载,如有问题,请联系技术支持
链接:https://pan.baidu.com/s/16d5E_NTj4ubVPkPmR6GG5A 提取码:sp2w
特別注意:
openpose
的模型openpose_200_200.bmodel
已弃用!!! 请使用NAS网盘中的新openpose量化模型:openpose_coco_17_216_384.bmodel
或openpose_body_25_216_384.bmodel
演示程序支持远程显示,应用于SE5/SM5等没有本地界面的平台,检测程序在设备端进行检测,然后讲结果发送到一个指定的目的地址,客户端负责接收带有结果的流,然后显示。 具体配置方法,请参考SE5-OpenPose-Demo配置文档.docx
客户端的源代码请参考如下链接:https://github.com/sophon-ai-algo/face_demo_client