CV / YOLOv5
YOLOv5s ReLU
YOLOv5s 使用 ReLU 激活函数的变体,在边缘设备上提供高效的检测性能。
309 次下载
大小
~8.3MB内存
2GB+精度
INT8选择你正在使用的设备,设置指南和文档将相应更新。
快速开始
部署
sudo docker run --rm \
--name rk3588-yolov5s-relu \
--privileged \
--net=host \
-e PYTHONUNBUFFERED=1 \
-e RKNN_LOG_LEVEL=0 \
--device /dev/video0:/dev/video0 \
--device /dev/dri/renderD128:/dev/dri/renderD128 \
-v /proc/device-tree/compatible:/proc/device-tree/compatible \
ghcr.io/seeed-projects/recomputer-rk-cv/rk3588-yolov5:latest \
python3 web_detection.py --model_path model/yolov5s_relu.rknn --video video/test.mp4REST API
使用 REST API 进行推理。复制以下命令。
Curl
curl -X POST "http://127.0.0.1:8000/api/models/yolov5/predict" -F "realtime=true"
# Or without file parameters
curl -X POST "http://127.0.0.1:8000/api/models/yolov5/predict"
Python
import requests
import json
resp = requests.post(
"http://127.0.0.1:8000/api/models/yolov5/predict",
json={},
timeout=30
)
result = response.json()
print(json.dumps(result, indent=2, ensure_ascii=False))
模型详情
快速开始
1. 安装 Docker
在开发板上运行以下命令安装 Docker:
bash
# 下载安装脚本
curl -fsSL https://get.docker.com -o get-docker.sh
# 使用阿里云镜像源安装
sudo sh get-docker.sh --mirror Aliyun
# 启动 Docker 并设置开机自启
sudo systemctl enable docker
sudo systemctl start docker2. 运行项目(一条命令,双模式预览)
本项目支持通过"Web 浏览器"进行预览。只需一条命令即可运行项目。此外,还提供了 Fast-API 接口,方便用户进行自定义开发和测试。
步骤 A:拉取镜像
bash
sudo docker pull ghcr.io/Seeed-Projects/recomputer-rk-cv/rk3588-yolov5:latest
sudo docker pull ghcr.io/Seeed-Projects/recomputer-rk-cv/rk3576-yolov5:latest步骤 B:一键运行
适用于 RK3588:
bash
sudo docker run --rm --privileged --net=host \
-e PYTHONUNBUFFERED=1 \
-e RKNN_LOG_LEVEL=0 \
--device /dev/video0:/dev/video0 \
--device /dev/dri/renderD128:/dev/dri/renderD128 \
-v /proc/device-tree/compatible:/proc/device-tree/compatible \
ghcr.io/seeed-projects/recomputer-rk-cv/rk3588-yolov5:latest \
python3 web_detection.py --model_path model/yolov5s.rknn --video video/test.mp4适用于 RK3576:
bash
sudo docker run --rm --privileged --net=host \
-e PYTHONUNBUFFERED=1 \
-e RKNN_LOG_LEVEL=0 \
--device /dev/video0:/dev/video0 \
--device /dev/dri/renderD128:/dev/dri/renderD128 \
-v /proc/device-tree/compatible:/proc/device-tree/compatible \
ghcr.io/seeed-projects/recomputer-rk-cv/rk3576-yolov5:latest \
python3 web_detection.py --model_path model/yolov5s.rknn --video video/test.mp4通过以下地址访问:http://<Board_IP>:8000
注意:如果需要自定义类别,可以添加
-v $(pwd)/class_config.txt:/app/class_config.txt \挂载和--class_path参数。程序默认使用 COCO 80 个类别。
示例:
bash
sudo docker run --rm --privileged --net=host \
-e PYTHONUNBUFFERED=1 \
-e RKNN_LOG_LEVEL=0 \
-v $(pwd)/class_config.txt:/app/class_config.txt \
--device /dev/video0:/dev/video0 \
--device /dev/dri/renderD128:/dev/dri/renderD128 \
-v /proc/device-tree/compatible:/proc/device-tree/compatible \
ghcr.io/seeed-projects/recomputer-rk-cv/rk3588-yolov5:latest \
python3 web_detection.py --model_path model/yolov5s.rknn --video video/test.mp4 --class_path class_config.txt🔌 API 文档
本项目提供兼容 Ultralytics Cloud API 标准的 RESTful 接口,支持通过图像、视频上传或直接调用摄像头进行目标检测。
1. 模型推理接口(Predict)
端点: POST /api/models/yolov5/predict
请求参数(Multipart/Form-Data):
file:(可选)待检测的图像文件。video:(可选)待检测的 MP4 视频文件。timestamp:(可选)视频文件中的时间戳(秒),返回该时间点对应帧的检测结果。默认为 0。realtime:(可选)布尔值。如果为true或未提供file/video参数,则返回当前摄像头帧的检测结果。conf:(可选)单次请求的置信度阈值,范围 0.0-1.0。iou:(可选)单次请求的 NMS IOU 阈值,范围 0.0-1.0。
使用示例:
1. 图像检测:
bash
curl -X POST "http://127.0.0.1:8000/api/models/yolov5/predict" -F "file=@/home/cat/001.jpg"2. 视频特定帧检测:
bash
curl -X POST "http://127.0.0.1:8000/api/models/yolov5/predict" -F "video=@/home/cat/test.mp4" -F "timestamp=5.5"3. 获取当前摄像头帧检测:
bash
curl -X POST "http://127.0.0.1:8000/api/models/yolov5/predict" -F "realtime=true"
# 或去掉文件参数
curl -X POST "http://127.0.0.1:8000/api/models/yolov5/predict"响应格式(JSON):
json
{
"success": true,
"source": "video frame at 5.5s",
"predictions": [
{
"class": "person",
"confidence": 0.92,
"box": { "x1": 100, "y1": 200, "x2": 300, "y2": 500 }
}
],
"image": { "width": 1280, "height": 720 }
}2. 系统配置接口(Config)
用于动态调整实时视频流和默认推理的阈值。
获取当前配置
- 端点:
GET /api/config - 响应:
{"obj_thresh": 0.25, "nms_thresh": 0.45}
更新系统配置
- 端点:
POST /api/config - 请求体(JSON):
{"obj_thresh": 0.3, "nms_thresh": 0.5} - 响应:
{"status": "success"}
3. 实时视频流接口(Video Feed)
获取带有检测框绘制的实时 MJPEG 视频流,可直接嵌入 HTML <img> 标签中。
- 端点:
GET /api/video_feed - 使用示例:
<img src="http://<Board_IP>:8000/api/video_feed">
🛠️ 开发者指南(生产环境建议)
代码说明
web_detection.py:- 双模式支持:集成 FastAPI,同时支持本地渲染和 MJPEG 流输出。
- 环境自适应:自动检测
DISPLAY环境变量,如果不存在则静默跳过 GUI 初始化。 - RKNN 推理:封装了 RKNN 初始化、模型加载和多核推理逻辑。
- 动态加载:支持通过
--class_path动态加载类别配置。 - 后处理:YOLOv5 专用的边界框解码和 NMS 逻辑。
修改模型
- 将训练并转换后的 .rknn 模型放入
model/目录。 - 在运行命令中添加
--model_path参数以指向新模型。