基于reComputer RK3576,实现空中物体检测
空中物体检测是无人机监控、交通监测和空中数据分析的关键能力。然而,在边缘设备上部署深度学习模型面临诸多挑战,包括计算资源有限、热管理限制以及对实时性能的要求。
本项目在Seeed reComputer RK3576边缘AI平台上,构建了一个完整的空中物体检测系统。该系统采用VisDrone微调后的YOLOv8s模型,并借助RK3576集成NPU(6 TOPS)进行加速处理。利用Rockchip的RKNN工具包,系统能够以实时速度从无人机视频中检测出行人、车辆、自行车等11类物体。
项目涵盖完整开发流程:PC端开发与测试、模型转换(PyTorch → ONNX → RKNN)、NPU部署,以及为Seeed ai-lab平台打包Docker容器化Web服务。
硬件组件
VisDrone数据集类别
该模型在VisDrone2019-VID数据集上进行了微调,该数据集包含无人机拍摄的视频,场景多样,物体尺度和遮挡情况各异。检测类别共11类:
系统架构
步骤1:本地开发与测试
在部署到边缘设备之前,我们使用PyTorch和原始的YOLOv8s模型,在PC端开发并测试检测流程。
安装依赖:
运行PC端检测:
PC端代码支持实时检测,输出边界框、ByteTrack多目标跟踪、运动轨迹可视化、密度热图生成、ROI入侵检测、虚拟计数线以及JSON导出功能。
步骤2:模型转换
1 导出ONNX格式
生成best.onnx文件(42.7 MB),输出形状为(1, 15, 8400)——每个锚点对应4个边界框坐标 + 11个类别得分。
2 验证ONNX模型
此脚本使用onnxruntime加载ONNX模型,对视频帧进行推理,并可视化结果,以确认模型在RKNN转换前正常工作。
3 转换为RKNN(WSL2 Linux)
重要提示:RKNN Toolkit2仅支持x86架构的Linux系统,请使用WSL2或Linux机器。
步骤3:部署至RK3576
1 安装运行时库
2 安装Python依赖
3 运行检测
步骤4:Docker Web服务
构建Docker镜像
运行容器
通过 http://:8000 访问Web界面。功能包括:
•实时检测:带边界框的实时MJPEG流
•视频分析:上传视频,查看实时处理过程,下载结果
•REST API:单张图像预测端点为 /api/models/yolov8/predict
技术细节:RKNN推理流水线
rknn_detector.py 实现了完整的NPU推理流程:
•预处理:字母框调整(保持宽高比,用黑色填充)→ BGR → RGB → uint8 NHWC格式(1, 640, 640, 3)。RKNN模型内部处理均值/标准差归一化。
•NPU推理:RKNNLite.inference() 在NPU上以双核自动模式(NPU_CORE_0_1)运行。
•后处理:RKNN模型输出一个张量(1, 15, 8400),其中包含已解码的边界框坐标(cx, cy, w, h)和11个类别得分。后处理阶段提取边界框和得分,转换为xyxy格式,应用置信度过滤、按类别NMS,并恢复字母框坐标。
关键实现说明:
•输入格式:NHWC(1, H, W, 3),而非NCHW
•输入数据类型:uint8,而非float32(均值/标准差由模型内置)
•init_runtime():使用 core_mask= 参数,而不是 core=
•librknnrt.so:必须放置在 /usr/lib/ 目录下以便直接执行
结果
该系统能够成功检测并分类多种无人机视角场景下的空中物体,包括高速公路、城市街道、广场和住宅区。与COCO预训练模型相比,VisDrone优化的YOLOv8s模型在无人机影像中表现出显著更高的准确率,尤其在小物体和航拍视角方面表现更优。
本文编译自hackster.io





