Skip to content

sophgo/sophon-demo

Folders and files

NameName
Last commit message
Last commit date

Latest commit

68494ec · Apr 28, 2025
Apr 23, 2025
Mar 10, 2025
Dec 27, 2023
Apr 28, 2025
Sep 12, 2024
Apr 23, 2025
Apr 20, 2023
Apr 20, 2023
Oct 26, 2022
Apr 24, 2025
Apr 24, 2025
Apr 1, 2025

Repository files navigation

简体中文 | English

SOPHON-DEMO介绍

简介

SOPHON-DEMO基于SOPHONSDK接口进行开发,提供一系列主流算法的移植例程。包括基于TPU-NNTC和TPU-MLIR的模型编译与量化,基于BMRuntime的推理引擎移植,以及基于BMCV/OpenCV的前后处理算法移植。

SOPHONSDK是算能科技基于其自主研发的深度学习处理器所定制的深度学习SDK,涵盖了神经网络推理阶段所需的模型优化、高效运行时支持等能力,为深度学习应用开发和部署提供易用、高效的全栈式解决方案。目前可兼容BM1684/BM1684X/BM1688(CV186X)。

目录结构与说明

SOPHON-DEMO提供的例子从易到难分为tutorialsampleapplication三个模块,tutorial模块存放一些基础接口的使用示例,sample模块存放一些经典算法在SOPHONSDK上的串行示例,application模块存放一些典型场景的典型应用。

tutorial 说明 支持硬件
resize resize接口。针对图像做缩放操作 BM1684/BM1684X/BM1688/CV186H
crop crop接口,从输入图片中抠出需要用的图片区域 BM1684/BM1684X/BM1688/CV186H
crop_and_resize_padding 将图片指定位置指定大小部分图片抠出,缩放后填充到大图中,空余部分填充指定像素数值 BM1684/BM1684X/BM1688/CV186H
ocv_jpgbasic 使用sophon-opencv硬件加速实现图片编解码 BM1684/BM1684X/BM1688/CV186H
ocv_vidbasic 使用sophon-opencv硬件加速实现视频解码,并将视频记录为png或jpg格式 BM1684/BM1684X/BM1688/CV186H
blend 融合拼接两张图 BM1688/CV186X
stitch 拼接两张图片 BM1684X/BM1688/CV186H
avframe_ocv avframe到cv::mat的转换例程 BM1684/BM1684X
ocv_avframe bgr mat到yuv420p avframe的转换例程 BM1684/BM1684X/BM1688/CV186H
bm1688_2core2task_yolov5 使用bm1688的双核双任务推理部署的yolov5 BM1688
mmap mmap接口,映射TPU内存到CPU BM1684X/BM1688/CV186H
video_encode 视频编码和推流 BM1684/BM1684X/BM1688/CV186H
yolov8_ffmpeg_encode 解码+推理+画框+视频编码和推流 BM1684X
sample 算法类别 编程语言 BModel 支持硬件
LPRNet 车牌识别 C++/Python FP32/FP16/INT8 BM1684/BM1684X/BM1688/CV186X
ResNet 图像分类 C++/Python FP32/FP16/INT8 BM1684/BM1684X/BM1688/CV186X
Recognize-Anything 图像分类 Python FP32/FP16 BM1684X
YOLOv8_cls 图像分类 C++/Python FP32/FP16/INT8 BM1684X/BM1688/CV186X
RetinaFace 人脸检测 C++/Python FP32/FP16/INT8 BM1684/BM1684X/BM1688
SCRFD 人脸检测 C++/Python FP32/FP16/INT8 BM1684/BM1684X/BM1688/CV186X
segformer 语义分割 C++/Python FP32/FP16 BM1684/BM1684X/BM1688/CV186X
SAM 语义分割 Python FP32/FP16 BM1684X
SAM2 语义分割 Python FP32/FP16 BM1688
yolact 实例分割 C++/Python FP32/FP16/INT8 BM1684/BM1684X
YOLOv8_plus_seg 实例分割 C++/Python FP32/FP16/INT8 BM1684X/BM1688
YOLOv8_plus_seg_fuse 实例分割(TPU后处理) C++/Python INT8 BM1684X/BM1688
YOLOv9_seg 实例分割 C++/Python FP32/FP16/INT8 BM1684X/BM1688
PP-OCR OCR C++/Python FP32/FP16 BM1684/BM1684X/BM1688/CV186X
OpenPose 人体关键点检测 C++/Python FP32/FP16/INT8 BM1684/BM1684X/BM1688
YOLOv8_pose 人体关键点检测 C++/Python FP32/FP16/INT8 BM1684/BM1684X/BM1688/CV186X
HRNet_pose 人体关键点检测 C++/Python FP32/FP16/INT8 BM1684X/BM1688/CV186X
C3D 视频动作识别 C++/Python FP32/FP16/INT8 BM1684/BM1684X/BM1688/CV186X
SlowFast 视频动作识别 C++/Python FP32/FP16/INT8 BM1684X/BM1688
DeepSORT 多目标跟踪 C++/Python FP32/FP16/INT8 BM1684/BM1684X/BM1688/CV186X
ByteTrack 多目标跟踪 C++/Python FP32/FP16/INT8 BM1684/BM1684X/BM1688/CV186X
CenterNet 目标检测、姿态识别 C++/Python FP32/FP16/INT8 BM1684/BM1684X/BM1688
YOLOv5 目标检测 C++/Python FP32/FP16/INT8 BM1684/BM1684X/BM1688/CV186X
YOLOv34 目标检测 C++/Python FP32/INT8 BM1684/BM1684X/BM1688
YOLOX 目标检测 C++/Python FP32/INT8 BM1684/BM1684X/BM1688/CV186X
SSD 目标检测 C++/Python FP32/INT8 BM1684/BM1684X
YOLOv7 目标检测 C++/Python FP32/FP16/INT8 BM1684/BM1684X/BM1688/CV186X
YOLOv8_plus_det 目标检测 C++/Python FP32/FP16/INT8 BM1684/BM1684X/BM1688/CV186X
YOLOv9_det 目标检测 C++/Python FP32/FP16/INT8 BM1684/BM1684X/BM1688/CV186X
YOLOv11_det 目标检测 C++/Python FP32/FP16/INT8 BM1684X/BM1688/CV186X
YOLOv12_det 目标检测 C++/Python FP32/FP16/INT8 BM1684X/BM1688/CV186X
YOLOv5_opt 目标检测 C++/Python FP32/FP16/INT8 BM1684X
YOLOv5_fuse 目标检测 C++/Python FP32/FP16/INT8 BM1684X/BM1688/CV186X
YOLOv10 目标检测 C++/Python FP32/FP16/INT8 BM1684X/BM1688/CV186X
ppYOLOv3 目标检测 C++/Python FP32/FP16/INT8 BM1684/BM1684X/BM1688/CV186X
ppYoloe 目标检测 C++/Python FP32/FP16 BM1684/BM1684X/BM1688/CV186X
YOLO_world 目标检测 Python FP32/FP16/INT8 BM1684X/BM1688/CV186X
YOLOv8_obb 旋转框目标检测 C++/Python FP32/FP16 BM1684X/BM1688/CV186X
WeNet 语音识别 C++/Python FP32/FP16 BM1684/BM1684X/BM1688/CV186X
Whisper 语音识别 Python FP16 BM1684X
Seamless 语音识别 Python FP32/FP16 BM1684X/BM1688
BERT 语言模型 C++/Python FP32/FP16 BM1684/BM1684X/BM1688/CV186X
ChatGLM2 大规模语言模型 C++/Python FP16/INT8/INT4 BM1684X
Llama2 大规模语言模型 C++/Python FP16/INT8/INT4 BM1684X
ChatGLM3 大规模语言模型 Python FP16/INT8/INT4 BM1684X/BM1688
Qwen 大规模语言模型 C++/Python FP16/INT8/INT4 BM1684X/BM1688/CV186X
MiniCPM 大规模语言模型 C++ INT8/INT4 BM1684X/BM1688/CV186X
Baichuan2 大规模语言模型 Python INT8/INT4 BM1684X
ChatGLM4 大规模语言模型 Python INT8/INT4 BM1684X
MiniCPM3 大规模语言模型 Python INT8/INT4 BM1684X
DeepSeek 大规模语言模型 Python INT4 BM1684X/BM1688
Janus 大规模语言模型 Python INT4 BM1684X/BM1688
StableDiffusionV1.5 图像生成 Python FP32/FP16 BM1684X
StableDiffusionXL 图像生成 Python FP32/FP16 BM1684X
FLUX.1 图像生成 Python FP32/INT4 BM1684X
GroundingDINO 多模态目标检测 Python FP16 BM1684X/BM1688/CV186X
Qwen-VL-Chat 大规模视觉语言模型 Python FP16/INT8 BM1684X
Qwen2-VL 大规模视觉语言模型 Python INT4 BM1684X
Qwen2.5-VL 大规模视觉语言模型 Python INT4 BM1684X/BM1688
InternVL2 大规模视觉语言模型 Python INT4 BM1684X/BM1688
Vila 大规模视觉语言模型 Python INT8/INT4 BM1684X/BM1688
Llama3_2_Vision 大规模视觉语言模型 Python INT8/INT4 BM1684X
Real-ESRGAN 超分辨 C++/Python FP32/FP16/INT8 BM1684X/BM1688/CV186X
P2PNet 人群计数 C++/Python FP32/FP16/INT8 BM1684/BM1684X/BM1688/CV186X
CLIP 图文匹配 C++/Python FP16 BM1684X/BM1688/CV186X
BLIP 多模态图文模型 Python FP32 BM1684/BM1684X/BM1688
SuperGlue 特征匹配 C++ FP32/FP16 BM1684X/BM1688/CV186X
VITS_CHINESE 语音生成 Python FP32/FP16 BM1684X/BM1688/CV186X
ChatTTS 语音生成 Python BF16/INT8/INT4 BM1684X/BM1688
DirectMHP 头部姿势估计 C++/Python FP32/FP16 BM1684X/BM1688/CV186X
CAM++ 说话人识别 C++/Python FP32 BM1684X/BM1688/CV186X
FaceFormer 音频驱动口型 Python FP32 BM1684X
MP_SENet 语音降噪 Python FP32/BF16 BM1684X
LightStereo 立体匹配 C++/Python FP32/FP16 BM1684X/BM1688/CV186X
application 应用场景 编程语言 支持硬件
VLPR 多路车牌检测+识别 C++/Python BM1684/BM1684X/BM1688/CV186X
YOLOv5_multi 多路目标检测 C++ BM1684/BM1684X/BM1688
YOLOv5_multi_QT 多路目标检测+QT_HDMI显示 C++ BM1684X
Grounded-sam 自动化图像检测和分割系统 Python BM1684X
cv-demo 双目鱼眼、广角拼接应用 C++ BM1688
YOLOv5_fuse_multi_QT 多路目标检测+QT_HDMI显示 C++ BM1688/CV186X
ChatDoc 快速提取文档内容并用于问答 Python BM1684X/BM1688
LLM_api_server 类Openai_api的LLM服务 Python BM1684X/BM1688
Audio_assistant 语音助手 C++/Python BM1684X/BM1688

版本说明

版本 说明
0.2.10 完善和修复文档、代码问题,Qwen例程支持C++,sample模块新增YOLOv12_det、YOLOv8_plus_seg_fuse、Janus、Qwen2.5-VL。tutorial模块新增yolov8_ffmpeg_encode。
0.2.9 完善和修复文档、代码问题,Qwen例程支持deepseek-r1-distill-qwen2-1.5b、deepseek-r1-distill-qwen2-7b,sample模块新增Llama3_2_Vision,新增YOLOv8_plus_det代替YOLOv8_det、YOLOv9_det、YOLOv11_det,新增YOLOv8_plus_seg代替YOLOv8_seg、YOLOv9_seg。
0.2.8 完善和修复文档、代码问题,sample模块新增MiniCPM3、LightStereo、Qwen2-VL、YOLO-world例程。
0.2.7 完善和修复文档、代码问题,sample模块新增CAM++、ChatTTS、FaceFormer、MP_SENet、Vila例程。application模块新增ChatDoc、LLM_api_server、Audio_assistant例程。
0.2.6 完善和修复文档、代码问题,sample模块新增YOLOv11_det、FLUX.1、SlowFast、YOLOv8_obb例程。
0.2.5 完善和修复文档、代码问题,去除所有sample的公共依赖。sample模块新增SAM2、HRNet_pose、InternVL2、BLIP、DirectMHP、VITS_CHINESE例程,application新增cv-demo、YOLOv5_fuse_multi_QT例程。
0.2.4 完善和修复文档、代码问题,修复VideoDecFFM系统内存泄漏问题,sample模块新增YOLOv8_pose、Qwen-VL-Chat例程,application新增Grounded-sam例程。
0.2.3 完善和修复文档、代码问题,sample模块新增例程StableDiffusionXL、ChatGLM4、Seamless、YOLOv10,tutorial模块新增mmap、video_encode例程。
0.2.2 完善和修复文档、代码问题,部分例程补充CV186X支持,sample模块新增Whisper、Real-ESRGAN、SCRFD、P2PNet、MiniCPM、CLIP、SuperGlue、YOLOv5_fuse、YOLOv8_seg、YOLOv9_seg、Baichuan2等例程,tutorial模块新增avframe_ocv、ocv_avframe、bm1688_2core2task_yolov5例程。
0.2.1 完善和修复文档、代码问题,部分例程补充CV186X支持,YOLOv5适配SG2042,sample模块新增例程GroundingDINO、Qwen1_5,StableDiffusionV1_5新支持多种分辨率,Qwen、Llama2、ChatGLM3添加web和多会话模式。tutorial模块新增blend和stitch例程
0.2.0 完善和修复文档、代码问题,新增application和tutorial模块,新增例程ChatGLM3和Qwen,SAM添加web ui,BERT、ByteTrack、C3D适配BM1688,原YOLOv8更名为YOLOv8_det并且添加cpp后处理加速方法,优化常用例程的auto_test,更新TPU-MLIR安装方式为pip
0.1.10 修复文档、代码问题,新增ppYoloe、YOLOv8_seg、StableDiffusionV1.5、SAM,重构yolact,CenterNet、YOLOX、YOLOv8适配BM1688,YOLOv5、ResNet、PP-OCR、DeepSORT补充BM1688性能数据,WeNet提供C++交叉编译方法
0.1.9 修复文档、代码问题,新增segformer、YOLOv7、Llama2例程,重构YOLOv34,YOLOv5、ResNet、PP-OCR、DeepSORT、LPRNet、RetinaFace、YOLOv34、WeNet适配BM1688,OpenPose后处理加速,chatglm2添加编译方法和int8/int4量化。
0.1.8 完善修复文档、代码问题,新增BERT、ppYOLOv3、ChatGLM2,重构YOLOX,PP-OCR添加beam search,OpenPose添加tpu-kernel后处理加速,更新SFTP下载方式。
0.1.7 修复文档等问题,一些例程支持BM1684 mlir,重构PP-OCR、CenterNet例程,YOLOv5添加sail支持
0.1.6 修复文档等问题,新增ByteTrack、YOLOv5_opt、WeNet例程
0.1.5 修复文档等问题,新增DeepSORT例程,重构ResNet、LPRNet例程
0.1.4 修复文档等问题,新增C3D、YOLOv8例程
0.1.3 新增OpenPose例程,重构YOLOv5例程(包括适配arm PCIe、支持TPU-MLIR编译BM1684X模型、使用ffmpeg组件替换opencv解码等)
0.1.2 修复文档等问题,重构SSD相关例程,LPRNet/cpp/lprnet_bmcv使用ffmpeg组件替换opencv解码
0.1.1 修复文档等问题,使用BMNN相关类重构LPRNet/cpp/lprnet_bmcv
0.1.0 提供LPRNet等10个例程,适配BM1684X(x86 PCIe、SoC),BM1684(x86 PCIe、SoC)

环境依赖

SOPHON-DEMO主要依赖TPU-MLIR、TPU-NNTC、LIBSOPHON、SOPHON-FFMPEG、SOPHON-OPENCV、SOPHON-SAIL,对于BM1684/BM1684X SOPHONSDK,其版本要求如下:

SOPHON-DEMO TPU-MLIR TPU-NNTC LIBSOPHON SOPHON-FFMPEG SOPHON-OPENCV SOPHON-SAIL SOPHONSDK
0.2.10 >=1.15 >=3.1.7 >=0.5.0 >=0.7.3 >=0.7.3 >=3.8.0 >=v24.04.01
0.2.9 >=1.15 >=3.1.7 >=0.5.0 >=0.7.3 >=0.7.3 >=3.8.0 >=v24.04.01
0.2.8 >=1.9 >=3.1.7 >=0.5.0 >=0.7.3 >=0.7.3 >=3.8.0 >=v24.04.01
0.2.7 >=1.9 >=3.1.7 >=0.5.0 >=0.7.3 >=0.7.3 >=3.8.0 >=v24.04.01
0.2.6 >=1.9 >=3.1.7 >=0.5.0 >=0.7.3 >=0.7.3 >=3.8.0 >=v24.04.01
0.2.5 >=1.9 >=3.1.7 >=0.5.0 >=0.7.3 >=0.7.3 >=3.7.0 >=v24.04.01
0.2.4 >=1.9 >=3.1.7 >=0.5.0 >=0.7.3 >=0.7.3 >=3.7.0 >=v24.04.01
0.2.3 >=1.8 >=3.1.7 >=0.5.0 >=0.7.3 >=0.7.3 >=3.7.0 >=v24.04.01
0.2.2 >=1.8 >=3.1.7 >=0.5.0 >=0.7.3 >=0.7.3 >=3.7.0 >=v23.10.01
0.2.1 >=1.7 >=3.1.7 >=0.5.0 >=0.7.3 >=0.7.3 >=3.7.0 >=v23.10.01
0.2.0 >=1.6 >=3.1.7 >=0.5.0 >=0.7.3 >=0.7.3 >=3.7.0 >=v23.10.01
0.1.10 >=1.2.2 >=3.1.7 >=0.4.6 >=0.6.0 >=0.6.0 >=3.7.0 >=v23.07.01
0.1.9 >=1.2.2 >=3.1.7 >=0.4.6 >=0.6.0 >=0.6.0 >=3.7.0 >=v23.07.01
0.1.8 >=1.2.2 >=3.1.7 >=0.4.6 >=0.6.0 >=0.6.0 >=3.6.0 >=v23.07.01
0.1.7 >=1.2.2 >=3.1.7 >=0.4.6 >=0.6.0 >=0.6.0 >=3.6.0 >=v23.07.01
0.1.6 >=0.9.9 >=3.1.7 >=0.4.6 >=0.6.0 >=0.6.0 >=3.4.0 >=v23.05.01
0.1.5 >=0.9.9 >=3.1.7 >=0.4.6 >=0.6.0 >=0.6.0 >=3.4.0 >=v23.03.01
0.1.4 >=0.7.1 >=3.1.5 >=0.4.4 >=0.5.1 >=0.5.1 >=3.3.0 >=v22.12.01
0.1.3 >=0.7.1 >=3.1.5 >=0.4.4 >=0.5.1 >=0.5.1 >=3.3.0 -
0.1.2 Not support >=3.1.4 >=0.4.3 >=0.5.0 >=0.5.0 >=3.2.0 -
0.1.1 Not support >=3.1.3 >=0.4.2 >=0.4.0 >=0.4.0 >=3.1.0 -
0.1.0 Not support >=3.1.3 >=0.3.0 >=0.2.4 >=0.2.4 >=3.1.0 -

对于BM1688/CV186AH SOPHONSDK,其版本要求如下:

SOPHON-DEMO TPU-MLIR LIBSOPHON SOPHON-FFMPEG SOPHON-OPENCV SOPHON-SAIL SOPHONSDK
0.2.10 >=1.15 >=0.4.9 >=1.7.0 >=1.7.0 >=3.8.0 >=v1.7.0
0.2.9 >=1.15 >=0.4.9 >=1.7.0 >=1.7.0 >=3.8.0 >=v1.7.0
0.2.8 >=1.10 >=0.4.9 >=1.7.0 >=1.7.0 >=3.8.0 >=v1.7.0
0.2.7 >=1.10 >=0.4.9 >=1.7.0 >=1.7.0 >=3.8.0 >=v1.7.0
0.2.6 >=1.10 >=0.4.9 >=1.7.0 >=1.7.0 >=3.8.0 >=v1.7.0
0.2.5 >=1.9 >=0.4.9 >=1.7.0 >=1.7.0 >=3.8.0 >=v1.7.0
0.2.4 >=1.9 >=0.4.9 >=1.7.0 >=1.7.0 >=3.8.0 >=v1.7.0
0.2.3 >=1.8 >=0.4.9 >=1.7.0 >=1.7.0 >=3.8.0 >=v1.7.0
0.2.2 >=1.8 >=0.4.9 >=1.6.0 >=1.6.0 >=3.8.0 >=v1.6.0
0.2.1 >=1.7 >=0.4.9 >=1.5.0 >=1.5.0 >=3.8.0 >=v1.5.0
0.2.0 >=1.6 >=0.4.9 >=1.5.0 >=1.5.0 >=3.7.0 >=v1.5.0

注意

  1. 不同例程对版本的要求可能存在差异,具体以例程的README为准,可能需要安装其他第三方库。
  2. BM1688/CV186X与BM1684/BM1684X对应的sdk不是同一套,在官网上已作区分,请注意。

技术资料

请通过算能官网技术资料获取相关文档、资料及视频教程。

社区

算能社区鼓励开发者多交流,共学习。开发者可以通过以下渠道进行交流和学习。

算能社区网站:https://www.sophgo.com/

算能开发者论坛:https://developer.sophgo.com/forum/index.html

贡献

欢迎参与贡献。更多详情,请参阅我们的贡献者Wiki

许可证

Apache License 2.0