From d411921f3b9b9f33cf05913622a402e2e42ba267 Mon Sep 17 00:00:00 2001 From: mlt Date: Tue, 14 Jan 2025 14:10:12 +0800 Subject: [PATCH] feat(YOLOv9_seg): support riscv SG2042. jira: https://jira.sophgo.com/browse/SOPHONSILK-210 Change-Id: I80126b6d1009050d1bc9b85171960b5503a628b8 (cherry picked from commit 52f4260b10e75b1c55387583c67f97f238dfab8c) --- sample/YOLOv9_seg/README.md | 28 +++++++++++++++++++++++++++- sample/YOLOv9_seg/cpp/README.md | 10 +++++----- sample/YOLOv9_seg/python/README.md | 8 +++++--- 3 files changed, 37 insertions(+), 9 deletions(-) diff --git a/sample/YOLOv9_seg/README.md b/sample/YOLOv9_seg/README.md index 4999bdc0..007fbc6e 100644 --- a/sample/YOLOv9_seg/README.md +++ b/sample/YOLOv9_seg/README.md @@ -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推理 @@ -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的精度误差是正常的; @@ -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),统计的时间均为平均每张图片处理的时间; diff --git a/sample/YOLOv9_seg/cpp/README.md b/sample/YOLOv9_seg/cpp/README.md index 63a8c953..34d61936 100644 --- a/sample/YOLOv9_seg/cpp/README.md +++ b/sample/YOLOv9_seg/cpp/README.md @@ -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-参数说明) @@ -16,8 +16,8 @@ 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++程序。 @@ -25,7 +25,7 @@ cpp目录下提供了C++例程以供参考使用,具体情况如下: ## 2. 程序编译 C++程序运行前需要编译可执行文件。 -### 2.1 x86/arm PCIe平台 +### 2.1 x86/arm/riscv PCIe平台 可以直接在PCIe平台上编译程序: ```bash diff --git a/sample/YOLOv9_seg/python/README.md b/sample/YOLOv9_seg/python/README.md index a2316094..7b19b8ad 100644 --- a/sample/YOLOv9_seg/python/README.md +++ b/sample/YOLOv9_seg/python/README.md @@ -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-参数说明) @@ -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 @@ -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`测试。 \ No newline at end of file