Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
129 changes: 129 additions & 0 deletions docs/common/ai/_rknn_yolov8_multi_stream.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,129 @@
在 RK3588 NPU 上使用 YOLOv8 进行多路视频目标检测。

<div style={{ textAlign: "center" }}>
<img
src="/img/general-tutorial/rknn/yolov8-multi-stream.webp"
style={{ width: "85%" }}
/>
</div>

## 特性

- **多路处理**: 同时支持 9+ 路视频流
- **3 核 NPU 加速**: 充分利用 RK3588 的 3 个 NPU 核心
- **Pipeline 架构**: 解码 → NPU 推理 → 后处理 → 显示
- **实时显示**: 网格显示,带帧率统计(视频帧率 + 推理帧率)
- **Letterbox 预处理**: 保持宽高比,保证检测精度

## 安装方法

### 克隆项目仓库

<NewCodeBlock tip="Device" type="device">

```bash
git clone https://github.com/ZIFENG278/RK3588-Multi-Stream-YOLOv8-Detection.git
```

</NewCodeBlock>

### 安装依赖

:::tip
请在 python [虚拟环境](../venv-usage) 中安装相关依赖
:::

<NewCodeBlock tip="Device" type="device">

```bash
pip3 install rknn-toolkit-lite2 opencv-python
```

</NewCodeBlock>

## 使用方法

### 基本运行(9 路,3 核)

:::tip
--video-dir 请指定包含视频文件的文件夹
:::

<NewCodeBlock tip="Device" type="device">

```bash
python3 main_rknn_pipeline.py --video-dir ./video
```

</NewCodeBlock>

### 无显示模式(适合测试)

<NewCodeBlock tip="Device" type="device">

```bash
python3 main_rknn_pipeline.py --video-dir ./video --no-display --max-frames 100
```

</NewCodeBlock>

### 自定义参数

<NewCodeBlock tip="Device" type="device">

```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
```

</NewCodeBlock>

## 命令行参数

| 参数 | 默认值 | 说明 |
| ------------------ | -------------------- | ---------------- |
| `--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 | 限制帧数 |

## 性能参考

### 测试条件

<NewCodeBlock tip="Device" type="device">

```bash
python main_rknn_pipeline.py \
--num-streams 9 \
--num-cores 3 \
--model yolov8n-i8-3588.rknn \
--video-dir video \
--max-frames 1000
```

</NewCodeBlock>

| 硬件 | 内存 | 视频数量 | NPU 核心 | 模型 | 量化方式 | 帧数 |
| ------- | ---- | -------- | -------- | ------- | -------- | ---- |
| ROCK5B+ | 8GB | 9 | 3 | yolov8n | INT8 | 1000 |

### 测试结果

| 阶段 | 耗时 (avg ms) |
| -------- | ------------- |
| 解码 | 2.24 |
| 预处理 | 2.00 |
| NPU 推理 | 25.77 |
| 后处理 | 15.66 |
| 绘制 | 1.43 |
| **总计** | **47.10** |
15 changes: 15 additions & 0 deletions docs/rock5/rock5b/app-development/ai/yolov8-multi-stream.md
Original file line number Diff line number Diff line change
@@ -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";

<RKNNYOLOV8MULTISTREAM />
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading