diff --git a/docs/common/ai/_rknn_yolov8_multi_stream.mdx b/docs/common/ai/_rknn_yolov8_multi_stream.mdx new file mode 100644 index 000000000..57584af3c --- /dev/null +++ b/docs/common/ai/_rknn_yolov8_multi_stream.mdx @@ -0,0 +1,129 @@ +在 RK3588 NPU 上使用 YOLOv8 进行多路视频目标检测。 + +
+ +
+ +## 特性 + +- **多路处理**: 同时支持 9+ 路视频流 +- **3 核 NPU 加速**: 充分利用 RK3588 的 3 个 NPU 核心 +- **Pipeline 架构**: 解码 → NPU 推理 → 后处理 → 显示 +- **实时显示**: 网格显示,带帧率统计(视频帧率 + 推理帧率) +- **Letterbox 预处理**: 保持宽高比,保证检测精度 + +## 安装方法 + +### 克隆项目仓库 + + + +```bash +git clone https://github.com/ZIFENG278/RK3588-Multi-Stream-YOLOv8-Detection.git +``` + + + +### 安装依赖 + +:::tip +请在 python [虚拟环境](../venv-usage) 中安装相关依赖 +::: + + + +```bash +pip3 install rknn-toolkit-lite2 opencv-python +``` + + + +## 使用方法 + +### 基本运行(9 路,3 核) + +:::tip +--video-dir 请指定包含视频文件的文件夹 +::: + + + +```bash +python3 main_rknn_pipeline.py --video-dir ./video +``` + + + +### 无显示模式(适合测试) + + + +```bash +python3 main_rknn_pipeline.py --video-dir ./video --no-display --max-frames 100 +``` + + + +### 自定义参数 + + + +```bash +python3 main_rknn_pipeline.py \ + --num-streams 6 \ + --num-cores 3 \ + --model yolov8n-i8-3588.rknn \ + --video-dir video \ + --conf-threshold 0.5 \ + --iou-threshold 0.45 +``` + + + +## 命令行参数 + +| 参数 | 默认值 | 说明 | +| ------------------ | -------------------- | ---------------- | +| `--num-streams` | 9 | 视频流数量 | +| `--num-cores` | 3 | NPU 核心数 (1-3) | +| `--model` | yolov8n-i8-3588.rknn | 模型文件路径 | +| `--video-dir` | video | 视频目录 | +| `--conf-threshold` | 0.4 | 置信度阈值 | +| `--iou-threshold` | 0.45 | NMS IoU 阈值 | +| `--no-display` | False | 禁用显示 | +| `--max-frames` | None | 限制帧数 | + +## 性能参考 + +### 测试条件 + + + +```bash +python main_rknn_pipeline.py \ + --num-streams 9 \ + --num-cores 3 \ + --model yolov8n-i8-3588.rknn \ + --video-dir video \ + --max-frames 1000 +``` + + + +| 硬件 | 内存 | 视频数量 | NPU 核心 | 模型 | 量化方式 | 帧数 | +| ------- | ---- | -------- | -------- | ------- | -------- | ---- | +| ROCK5B+ | 8GB | 9 | 3 | yolov8n | INT8 | 1000 | + +### 测试结果 + +| 阶段 | 耗时 (avg ms) | +| -------- | ------------- | +| 解码 | 2.24 | +| 预处理 | 2.00 | +| NPU 推理 | 25.77 | +| 后处理 | 15.66 | +| 绘制 | 1.43 | +| **总计** | **47.10** | diff --git a/docs/rock5/rock5b/app-development/ai/yolov8-multi-stream.md b/docs/rock5/rock5b/app-development/ai/yolov8-multi-stream.md new file mode 100644 index 000000000..5ce3ee814 --- /dev/null +++ b/docs/rock5/rock5b/app-development/ai/yolov8-multi-stream.md @@ -0,0 +1,15 @@ +--- +sidebar_position: 29 +description: 使用 RKNN 进行 YOLOv8 多路识别 + +doc_kind: wrapper +source_of_truth: common +imports_resolve_to: + - docs/common/ai/_rknn_yolov8_multi_stream.mdx +--- + +# YOLOv8 多路识别 + +import RKNNYOLOV8MULTISTREAM from "../../../../common/ai/\_rknn_yolov8_multi_stream.mdx"; + + diff --git a/static/img/general-tutorial/rknn/yolov8-multi-stream.webp b/static/img/general-tutorial/rknn/yolov8-multi-stream.webp new file mode 100644 index 000000000..062e44cf6 Binary files /dev/null and b/static/img/general-tutorial/rknn/yolov8-multi-stream.webp differ