当前位置:首页 > 工业控制 > 电路设计项目集锦
[导读]空中物体检测是无人机监控、交通监测和空中数据分析的关键能力。然而,在边缘设备上部署深度学习模型面临诸多挑战,包括计算资源有限、热管理限制以及对实时性能的要求。

空中物体检测是无人机监控、交通监测和空中数据分析的关键能力。然而,在边缘设备上部署深度学习模型面临诸多挑战,包括计算资源有限、热管理限制以及对实时性能的要求。

本项目在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

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
关闭