Skip to content

Commit

Permalink
feat(YOLOv9_seg): support riscv SG2042.
Browse files Browse the repository at this point in the history
jira: https://jira.sophgo.com/browse/SOPHONSILK-210

Change-Id: I80126b6d1009050d1bc9b85171960b5503a628b8
(cherry picked from commit 52f4260b10e75b1c55387583c67f97f238dfab8c)
  • Loading branch information
mlt authored and sophon-leevi committed Jan 15, 2025
1 parent 11afc58 commit d411921
Show file tree
Hide file tree
Showing 3 changed files with 37 additions and 9 deletions.
28 changes: 27 additions & 1 deletion sample/YOLOv9_seg/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
YOLOv9 引入了可编程梯度信息 (PGI) 和广义高效层聚合网络 (GELAN) 等开创性技术,标志着实时目标检测领域的重大进步。该模型在效率、准确性和适应性方面都有显著提高,在 MS COCO 数据集上树立了新的标杆。本例程对[​YOLOv9官方开源仓库](https://github.com/WongKinYiu/yolov9)的模型和算法进行移植,使之能在SOPHON BM1684/BM1684X/BM1688上进行推理测试。

## 2. 特性
* 支持BM1688(SoC)和BM1684X(x86 PCIe、SoC)和BM1684(x86 PCIe、SoC、arm PCIe)
* 支持BM1688(SoC)和BM1684X(x86 PCIe、SoC、riscv PCIe)和BM1684(x86 PCIe、SoC、arm PCIe)
* 支持FP32、FP16(BM1684X/BM1688)、INT8模型编译和推理
* 支持基于BMCV预处理的C++推理
* 支持基于OpenCV和BMCV预处理的Python推理
Expand Down Expand Up @@ -183,6 +183,20 @@ python3 tools/eval_coco.py --gt_path datasets/coco/instances_val2017_1000.json -
| SE9-16 | yolov9_bmcv.soc | yolov9c_fp16_1b_2core.bmodel | 0.405 | 0.641 |
| SE9-16 | yolov9_bmcv.soc | yolov9c_int8_1b_2core.bmodel | 0.405 | 0.638 |
| SE9-16 | yolov9_bmcv.soc | yolov9c_int8_4b_2core.bmodel | 0.405 | 0.638 |
| SRM1-20 | yolov9_opencv.py | yolov9c_fp32_1b.bmodel | 0.417 | 0.644 |
| SRM1-20 | yolov9_opencv.py | yolov9c_fp16_1b.bmodel | 0.417 | 0.644 |
| SRM1-20 | yolov9_opencv.py | yolov9c_int8_1b.bmodel | 0.416 | 0.639 |
| SRM1-20 | yolov9_opencv.py | yolov9c_int8_4b.bmodel | 0.416 | 0.639 |
| SRM1-20 | yolov9_bmcv.py | yolov9c_fp32_1b.bmodel | 0.416 | 0.644 |
| SRM1-20 | yolov9_bmcv.py | yolov9c_fp16_1b.bmodel | 0.416 | 0.644 |
| SRM1-20 | yolov9_bmcv.py | yolov9c_int8_1b.bmodel | 0.416 | 0.638 |
| SRM1-20 | yolov9_bmcv.py | yolov9c_int8_4b.bmodel | 0.416 | 0.638 |
| SRM1-20 | yolov9_bmcv.pcie| yolov9c_fp32_1b.bmodel | 0.395 | 0.633 |
| SRM1-20 | yolov9_bmcv.pcie| yolov9c_fp16_1b.bmodel | 0.397 | 0.635 |
| SRM1-20 | yolov9_bmcv.pcie| yolov9c_int8_1b.bmodel | 0.404 | 0.638 |
| SRM1-20 | yolov9_bmcv.pcie| yolov9c_int8_4b.bmodel | 0.404 | 0.638 |
| SRM1-20 | yolov9_bmcv.pcie | yolov9c_int8_1b.bmodel | 0.396 | 0.633 |
| SRM1-20 | yolov9_bmcv.pcie | yolov9c_int8_4b.bmodel | 0.396 | 0.633 |

> **测试说明**
> 1. 由于sdk版本之间可能存在差异,实际运行结果与本表有<0.01的精度误差是正常的;
Expand Down Expand Up @@ -275,6 +289,18 @@ bmrt_test --bmodel models/BM1684/yolov9c_fp32_1b.bmodel
| SE9-16 | yolov9_bmcv.soc | yolov9c_fp16_1b_2core.bmodel | 5.90 | 1.73 | 80.05 | 118.54 |
| SE9-16 | yolov9_bmcv.soc | yolov9c_int8_1b_2core.bmodel | 5.92 | 1.74 | 22.14 | 110.50 |
| SE9-16 | yolov9_bmcv.soc | yolov9c_int8_4b_2core.bmodel | 5.87 | 1.65 | 17.90 | 110.19 |
| SRM1-20 | yolov9_opencv.py | yolov9c_fp32_1b.bmodel | 12.99 | 22.88 | 309.11 | 150.13 |
| SRM1-20 | yolov9_opencv.py | yolov9c_fp16_1b.bmodel | 12.94 | 23.02 | 170.56 | 174.38 |
| SRM1-20 | yolov9_opencv.py | yolov9c_int8_1b.bmodel | 12.90 | 22.86 | 155.44 | 137.05 |
| SRM1-20 | yolov9_opencv.py | yolov9c_int8_4b.bmodel | 12.97 | 28.00 | 153.11 | 139.46 |
| SRM1-20 | yolov9_bmcv.py | yolov9c_fp32_1b.bmodel | 23.81 | 4.91 | 286.91 | 147.15 |
| SRM1-20 | yolov9_bmcv.py | yolov9c_fp16_1b.bmodel | 23.59 | 4.67 | 148.15 | 146.38 |
| SRM1-20 | yolov9_bmcv.py | yolov9c_int8_1b.bmodel | 23.68 | 5.01 | 134.89 | 136.07 |
| SRM1-20 | yolov9_bmcv.py | yolov9c_int8_4b.bmodel | 23.36 | 4.42 | 133.96 | 137.18 |
| SRM1-20 | yolov9_bmcv.pcie | yolov9c_fp32_1b.bmodel | 9.67 | 1.14 | 162.98 | 91.05 |
| SRM1-20 | yolov9_bmcv.pcie | yolov9c_fp16_1b.bmodel | 11.35 | 1.14 | 25.19 | 92.40 |
| SRM1-20 | yolov9_bmcv.pcie | yolov9c_int8_1b.bmodel | 10.65 | 1.16 | 11.57 | 94.05 |
| SRM1-20 | yolov9_bmcv.pcie | yolov9c_int8_4b.bmodel | 9.32 | 0.98 | 10.92 | 81.31 |

> **测试说明**
> 1. 时间单位均为毫秒(ms),统计的时间均为平均每张图片处理的时间;
Expand Down
10 changes: 5 additions & 5 deletions sample/YOLOv9_seg/cpp/README.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
# C++例程
* [1. 环境准备](#1-环境准备)
* [1.1 x86/arm PCIe平台](#11-x86arm-pcie平台)
* [1.1 x86/arm/riscv PCIe平台](#11-x86armriscv-pcie平台)
* [1.2 SoC平台](#12-soc平台)
* [2. 程序编译](#2-程序编译)
* [2.1 x86/arm PCIe平台](#21-x86arm-pcie平台)
* [2.1 x86/arm/riscv PCIe平台](#21-x86armriscv-pcie平台)
* [2.2 SoC平台](#22-soc平台)
* [3. 推理测试](#3-推理测试)
* [3.1 参数说明](#31-参数说明)
Expand All @@ -16,16 +16,16 @@ cpp目录下提供了C++例程以供参考使用,具体情况如下:
| 1 | yolov9_bmcv | 使用FFmpeg解码、BMCV前处理、BMRT推理 |

## 1. 环境准备
### 1.1 x86/arm PCIe平台
如果您在x86/arm平台安装了PCIe加速卡(如SC系列加速卡),可以直接使用它作为开发环境和运行环境。您需要安装libsophon、sophon-opencv和sophon-ffmpeg,具体步骤可参考[x86-pcie平台的开发和运行环境搭建](../../../docs/Environment_Install_Guide.md#3-x86-pcie平台的开发和运行环境搭建)[arm-pcie平台的开发和运行环境搭建](../../../docs/Environment_Install_Guide.md#5-arm-pcie平台的开发和运行环境搭建)
### 1.1 x86/arm/riscv PCIe平台
如果您在x86/arm/riscv平台安装了PCIe加速卡(如SC系列加速卡),可以直接使用它作为开发环境和运行环境。您需要安装libsophon、sophon-opencv和sophon-ffmpeg,具体步骤可参考[x86-pcie平台的开发和运行环境搭建](../../../docs/Environment_Install_Guide.md#3-x86-pcie平台的开发和运行环境搭建)[arm-pcie平台的开发和运行环境搭建](../../../docs/Environment_Install_Guide.md#5-arm-pcie平台的开发和运行环境搭建)[riscv-pcie平台的开发和运行环境搭建](../../../docs/Environment_Install_Guide.md#6-riscv-pcie平台的开发和运行环境搭建)

### 1.2 SoC平台
如果您使用SoC平台(如SE、SM系列边缘设备),刷机后在`/opt/sophon/`下已经预装了相应的libsophon、sophon-opencv和sophon-ffmpeg运行库包,可直接使用它作为运行环境。通常还需要一台x86主机作为开发环境,用于交叉编译C++程序。


## 2. 程序编译
C++程序运行前需要编译可执行文件。
### 2.1 x86/arm PCIe平台
### 2.1 x86/arm/riscv PCIe平台
可以直接在PCIe平台上编译程序:

```bash
Expand Down
8 changes: 5 additions & 3 deletions sample/YOLOv9_seg/python/README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Python例程
* [1. 环境准备](#1-环境准备)
* [1.1 x86/arm PCIe平台](#11-x86arm-pcie平台)
* [1.1 x86/arm/riscv PCIe平台](#11-x86armriscv-pcie平台)
* [1.2 SoC平台](#12-soc平台)
* [2. 推理测试](#2-推理测试)
* [2.1 参数说明](#21-参数说明)
Expand All @@ -15,9 +15,9 @@ python目录下提供了一系列Python例程,具体情况如下:
| 2 | yolov9_bmcv.py | 使用SAIL解码、BMCV前处理、SAIL推理 |

## 1. 环境准备
### 1.1 x86/arm PCIe平台
### 1.1 x86/arm/riscv PCIe平台

如果您在x86/arm平台安装了PCIe加速卡(如SC系列加速卡),并使用它测试本例程,您需要安装libsophon、sophon-opencv、sophon-ffmpeg和sophon-sail,具体请参考[x86-pcie平台的开发和运行环境搭建](../../../docs/Environment_Install_Guide.md#3-x86-pcie平台的开发和运行环境搭建)。或[arm-pcie平台的开发和运行环境搭建](../../../docs/Environment_Install_Guide.md#5-arm-pcie平台的开发和运行环境搭建)
如果您在x86/arm/riscv平台安装了PCIe加速卡(如SC系列加速卡),并使用它测试本例程,您需要安装libsophon、sophon-opencv、sophon-ffmpeg和sophon-sail,具体请参考[x86-pcie平台的开发和运行环境搭建](../../../docs/Environment_Install_Guide.md#3-x86-pcie平台的开发和运行环境搭建)。或[arm-pcie平台的开发和运行环境搭建](../../../docs/Environment_Install_Guide.md#5-arm-pcie平台的开发和运行环境搭建)[riscv-pcie平台的开发和运行环境搭建](../../../docs/Environment_Install_Guide.md#6-riscv-pcie平台的开发和运行环境搭建)

此外您可能还需要安装其他第三方库:
```bash
Expand Down Expand Up @@ -69,3 +69,5 @@ python3 python/yolov9_opencv.py --input datasets/test --bmodel models/BM1684X/yo
python3 python/yolov9_opencv.py --input datasets/test_car_person_1080P.mp4 --bmodel models/BM1684/yolov9c_fp32_1b.bmodel --dev_id 0 --conf_thresh 0.25 --nms_thresh 0.7
```
测试结束后,`yolov9_opencv.py`会将预测的结果画在`results/test_car_person_1080P.avi`中,同时会打印预测结果、推理时间等信息。`yolov9_bmcv.py`会将预测结果画在图片上并保存在`results/images`中。

注意,riscv平台暂不支持用opencv进行视频测试,但是您可以选择`yolov9_bmcv.py`测试。

0 comments on commit d411921

Please sign in to comment.