简体中文 | English
目前sophon-pipeline已不再添加新feature,不再适配新平台,如果您有新需求,请移步sophon-stream: https://github.com/sophgo/sophon-stream
目前sophon-pipeline所提供的模型、测试视频流等数据的下载方式由nas云盘变更为sftp,请安装以下依赖用于下载数据:
pip3 install dfss -i https://pypi.tuna.tsinghua.edu.cn/simple --upgrade
Sophon Pipeline提供一个简易的基于Pipeline的高性能加速框架,使用该框架能够将前处理/推理/后处理分别运行在3个线程上,最大化的实现并行, 用户只需要继承一个类,实现自己的前处理/后处理,就可以实现整个流程。
Sophon Pipeline特性
- 单线程单模型
- 多线程单模型
- 多线程多模型
- 多模型串联
- 拉流、推流
- 视频结构可视化
主要目录结构和模块说明:
目录 | 模块 | 功能说明 |
---|---|---|
modules | bmgui | 存放Sophon Pipeline用来GUI显示视频的模块 |
bmgui-lite | 由于SDK自带的OpenCV没有显示功能,此模块提供bm::imshow来显示视频 | |
bmutility | 提供了基础库,字符串、定时器等 | |
tracker | 提供了CPU跟踪模块 | |
examples | yolov5/v6/v7/v8 | yolo系列目标检测,支持yolov5、yolov6、yolov7、yolov8系列模型 |
ppyoloe | PP-YOLOE系列目标检测,支持PP-YOLOE、PP-YOLOE+系列模型 | |
video_stitch | 4路yolov5s目标检测 + 拼接 + 编码 + RTSP服务 | |
retinaface | retinaface人脸检测 | |
multi | 并联运行两个yolov5目标检测 | |
face_recognition | 串联运行人脸检测 + 人脸关键点 + 人脸特征提取 | |
openpose | openpose人体关键点检测 | |
face_detect | ssh_squeezenet人脸检测 | |
yolact | yolact检测 |
Sophon Pipeline的主要结构设计如下图:
更新说明
版本 | 说明 |
---|---|
v0.3.7 | 添加yolact例程,适配1684x(x86 PCIe、SoC、arm PCIe),1684(x86 PCIe、SoC、arm PCIe);添加yolov5_opt、yolov7_opt模型 |
v0.3.5 | 添加ppyoloe例程,适配1684x(x86 PCIe、SoC、arm PCIe),1684(x86 PCIe、SoC、arm PCIe) |
v0.3.4 | 添加yolov6、yolov7、yolov8例程,适配1684x(x86 PCIe、SoC),1684(x86 PCIe、SoC);添加1684x fp16模型;所有例程适配1684/1684X arm PCIe(银河麒麟V10) |
v0.3.1 | 添加openpose、face_detect例程,适配1684x(x86 PCIe、SoC),1684(x86 PCIe、SoC) |
v0.3.0 | 添加multi、face_recognition例程,适配1684x(x86 PCIe、SoC),1684(x86 PCIe、SoC) |
v0.2.0 | 添加retinaface例程,适配1684x(x86 PCIe、SoC),1684(x86 PCIe、SoC) |
v0.1.2 | 添加yolov5、video_stitch例程,适配1684x(x86 PCIe、SoC),1684(x86 PCIe、SoC) |
如果您在x86平台安装了PCIe加速卡z,并使用它测试本例程,您需要安装 libsophon
、sophon-opencv
和sophon-ffmpeg
。libsophon
的安装可参考《LIBSOPHON使用手册.pdf》,sophon-opencv
和sophon-ffmpeg
的安装可参考《MULTIMEDIA使用手册.pdf》。注:需要获取《LIBSOPHON使用手册.pdf》和《MULTIMEDIA使用手册.pdf》,请联系技术支持。
sophon-pipeline主要依赖
- libsophon
- sophon-ffmpeg
- sophon-opencv
具体版本依赖关系
sophon-pipeline版本 | 依赖libsophon版本 | 依赖sophon-ffmpeg版本 | 依赖sophon-opencv版本 |
---|---|---|---|
v0.3.7 | >=0.4.7 | >=0.6.2 | >=0.6.2 |
v0.3.5 | >=0.4.6 | >=0.6.0 | >=0.6.0 |
v0.3.4 | >=0.4.4 | >=0.5.1 | >=0.5.1 |
v0.3.4 | >=0.4.4 | >=0.5.1 | >=0.5.1 |
v0.3.1 | >=0.4.3 | >=0.5.0 | >=0.5.0 |
v0.2.0 | >=0.4.2 | >=0.4.0 | >=0.4.0 |
v0.1.2 | >=0.4.1 | >=0.3.1 | >=0.3.1 |
Ubuntu 安装QT依赖:
sudo apt install -y qtbase5-dev
Tracker 功能需要安装 Eigen 依赖:
sudo apt-get install -y libeigen3-dev
其他依赖:
sudo apt-get install -y libgflags-dev libgoogle-glog-dev libexiv2-dev
对于arm SoC平台,内部已经集成了相应的libsophon、sophon-opencv和sophon-ffmpeg运行库包,位于/opt/sophon/
下。
通常在x86主机上交叉编译程序,使之能够在arm SoC平台运行。您需要在x86主机上使用SOPHON SDK搭建交叉编译环境,将程序所依赖的头文件和库文件打包至soc-sdk目录中。
交叉编译环境和相关依赖环境的准备步骤详见:arm_soc平台编译准备。
如果遇到其他交叉编译问题,请参考《LIBSOPHON使用手册.pdf》的4.2.2节 x86 交叉编译程序章节。
对于arm PCIe平台,环境和相关依赖环境的准备步骤详见:arm_pcie平台编译准备。
# 若编译需要x86平台上运行的程序,在x86平台机器上编译:
./tools/compile.sh x86
# 若编译需要SoC平台上运行的程序,需要先根据2.2.2节准备好相关依赖,在x86平台机器上运行下述命令进行编译:
./tools/compile.sh soc ${soc-sdk}
# 若编译需要arm64平台上运行的程序,在arm64平台机器上编译:
./tools/compile.sh arm64
编译完成后,demo程序将保存在${SOPHON_PIPELINE}/release/${APP}/${PLATFORM}
文件夹下,若您是使用SoC平台,还需要将编译后的demo程序拷贝到SoC机器上运行。
SE7模型性能
例程及模型名称 | int8 inference(ms) | int8(FPS) | fp16 inference(ms) | fp16(FPS) |
---|---|---|---|---|
yolov5s | 3.29 | 182 | 6.27 | 129 |
yolov5_opt🚀 | 2.37 | 260 | 6.13 | 137 |
yolov6s | 3.03 | 108 | 4.42 | 105 |
yolov7 | 8.93 | 98 | 22.5 | 40 |
yolov7_opt🚀 | 7.14 | 119 | 19.63 | 48 |
yolov8s | 3.69 | 157 | 7.00 | 130 |
ppyoloe_s | 5.39 | 167 | 8.46 | 115 |
ppyoloe_plus_s | 5.10 | 160 | 7.86 | 115 |
openpose_coco_18 | 5.38 | 40 | 11.26 | 37 |
openpose_body_25 | 3.43 | 29 | 7.00 | 28 |
yolact_base | 13.86 | 63 | - | - |
yolact_darknet53 | 12.96 | 68 | - | - |
yolact_resnet50 | 12.27 | 70 | - | - |
retinaface_mobilenet0.25 | 0.67 | ≥500 | 0.81 | ≥500 |
face_detect | 1.16 | ≥500 | 1.45 | ≥500 |
face_recognition | - | - | - | - |
multi | - | - | - | - |
video_stitch | - | - | - | - |
测试说明:
- 测试环境:SE7微服务器,8核cpu,cpu频率为2.3GHz,tpu频率为1000MHz,vpu频率为800MHz,jpu频率为800MHz。SDK版本为v23.03.01。测试视频和测试参数为各例程下默认视频和参数。
- inference只包含模型推理,不包含数据预处理和模型输出后处理部分,是平均一张图像推理耗时。
- FPS为各例程下SE7能运行的最大FPS值。
SE5模型性能
例程及模型名称 | int8 inference(ms) | int8(FPS) |
---|---|---|
yolov5s | 6.21 | 131 |
yolov6s | 8.01 | 90 |
yolov7 | 17.64 | 33 |
yolov8s | 7.49 | 118 |
ppyoloe_s | 20.49 | 46 |
ppyoloe_plus_s | 19.62 | 50 |
openpose_coco_18 | 9.65 | 39 |
openpose_body_25 | 6.20 | 27 |
yolact_base | 32.75 | 29 |
yolact_darknet53 | 30.15 | 31 |
yolact_resnet50 | 28.72 | 33 |
retinaface_mobilenet0.25 | 1.77 | ≥475 |
face_detect | 1.42 | ≥475 |
face_recognition | - | - |
multi | - | - |
video_stitch | - | - |
测试说明:
- 测试环境:SE5微服务器,8核cpu,cpu频率为2.3GHz,tpu频率为550MHz,vpu频率为640MHz,jpu频率为160MHz。SDK版本为v23.03.01。测试视频和测试参数为各例程下默认视频和参数。
- inference只包含模型推理,不包含数据预处理和模型输出后处理部分,是平均一张图像推理耗时。
- FPS为各例程下SE5能运行的最大FPS值。