5.5.5 垃圾检测
功能介绍
mono2d_trash_detection package 是基于 hobot_dnn package 开发的2D垃圾目标检测算法示例。与以往功能展示不同,本示例将以2D垃圾检测任务为例,展示如何基于开源框架训练模型、D-Robotics工具链转换模型、D-Robotics RDK机器人操作系统完成算法全流程部署工作。
本package支持直接订阅sensors/msg/Image类型的话题,并且支持读取本地图片的形式进行推理,将算法信息通过话题发布的同时会将结果在Web页面渲染可视化,本地图片回灌时将渲染图片保存在当前目录。
代码仓库: (https://github.com/D-Robotics/mono2d_trash_detection.git)
应用场景:室内外垃圾检测,识别出场景中的垃圾,可配合机器人用于垃圾寻找、垃圾捡取(配合机械臂)的APP设计。
算法介绍
本package采用PaddlePaddle开源框架, 利用PPYOLO模型进行垃圾检测任务设计和训练,具体的模型配置为ppyolo_r18vd_coco.yml。
算法支持的目标检测类别如下:
| 类别 | 说明 | 数据类型 |
|---|---|---|
| trash | 垃圾框 | Roi |
支持平台
| 平台 | 运行方式 | 示例功能 |
|---|---|---|
| RDK X3, RDK X3 Module | Ubuntu 20.04 (Foxy), Ubuntu 22.04 (Humble) | · 启动MIPI/USB摄像头/本地回灌,推理渲染结果在Web显示/保存在本地 |
| X86 | Ubuntu 20.04 (Foxy) | · 启动本地回灌,推理渲染结果在Web显示/保存在本地 |
准备工作
由于部署阶段我们不考虑算法模型内部的结构信息,只关注算法前后处理环节,前处理部分如图像读取、图像Resize等,后处理部分如检测头解码器、非极大值抑制(NMS)等。这些前后处理的方法在多数同类模型中是一致的,通用性较强,因此可以利用基础部署包进行快速部署。
D-Robotics RDK机器人操作系统提供了dnn_node_example部署包用于快速部署基础算法。目前支持的常见算法有图像分类、2D目标检测、语义分割。其中2D目标检测集成了Fasterrcnn、Fcos、yolov2、yolov3、yolov5、SSD、efficientnet供用户选择。
本示例利用dnn_node_example,通过替换D-Robotics交叉编译模型、后处理配置文件、检测类别配置文件用以适配自定义检测模型。
如果前后处理环节与上述模型不同无法快速适配,自定义部署方法可参考dnn_node_sample示例。
RDK平台
-
RDK已烧录好Ubuntu 20.04/Ubuntu 22.04系统镜像。
-
RDK已成功安装TogetheROS.Bot。
-
获得D-Robotics交叉编译模型(如本例中ppyolo_trashdet_416x416_nv12.bin
-
后处理配置文件 (如本例中ppyoloworkconfig.json)
-
检测类别配置文件 (如本例中trash_coco.list)