人工智能如何助力市政垃圾清洁?垃圾检测全流程方案详解

05/23 03:58
阅读数 27

ff0c3e88a235218bb530d49cbc10a6a3.gif

环境卫生是城市的名片,智慧环卫更是智慧城市中不可缺少的板块。随着作业严格化、服务综合化、人口老龄化等趋势的发展,环卫行业面临诸多新问题和新挑战,而AI技术的发展成为一大助力,帮助环卫智能升级,实现设施智能化、运营管理信息化、分析决策智慧化。如何充分利用现有的环卫车辆和设备,对城市整洁度实现实时的监控?如何在减少人工的前提下,更及时地发现问题,解决问题?如何有效监督环卫作业的完成质量?

北京德厚泉科技有限公司基于飞桨目标检测开发套件PaddleDetection提供了一套完整的智慧城市垃圾检测方案,通过在市政车辆上安装摄像头对路面垃圾检测并分析,实现对路面遗撒的垃圾进行监控,记录并通知环卫人员清理,大大提升了环卫人效。把清洁工人从日复一日的街道巡检中解放出来,用深度学习还城市一片净土。

b5ab6fe6470a9cfe43c991d7c17db790.png

小伙伴们肯定好奇,如何才能快速上手这么有价值的深度学习产业应用呢?飞桨与德厚泉科技联合开源了垃圾检测的产业实践范例,提供了从数据准备、模型训练及优化的全流程可复用方案,降低产业落地门槛。

点击阅读原文GET项目链接

https://github.com/PaddlePaddle/paddledetection#产业实践范例库

 所有源码及教程均已开源

欢迎大家使用,star鼓励~

场景难点

  • 环境复杂但精度要求高:目标尺寸小,外形不规则,还有遮挡、堆叠、抖动、光线、天气等多种情况都容易影响识别精度

  • 大量干扰下容易造成误检:交通标示物、行人等对识别造成很大干扰

  • 车载硬件如何低保障部署效果:车载设备算力低,图片质量差,如何兼顾速度与精度。

方案设计

针对以上难点和挑战,我们的解决方案和选型思路如下:

dfc2e79de4d6c07c993abfeaf8e4d634.png

在真实数据缺失的情况下,主要通过网络搜集尽量贴近真实场景的数据图片(角度、光线、分辨率、清晰度)。并在标注过程中尽量精细的框选目标物,以肉眼可见的最小目标为标注基线,适当框选有重叠和遮挡的部分作为单一候选框的主体。

模型选择

PaddleDetection提供了非常丰富的目标检测模型,我们需要从项目实际场景特点出发,选择最贴合实际部署需求的模型:小体积、高精度、预测速度快。

因此我们将候选模型锁定在 PP-YOLO-tiny 和 PP-PicoDet增强版这两个模型上。

2856eee114d610ab0b6e23eb326624d6.png

接下来,在PaddleDetection 提供的模型基线中,通过简单的对比可以发现,PP-PicoDet-s-416在速度-精度的平衡上达到了目前同等体量模型中的最优性能,因此本范例将选择此模型,进行后续的演示。

eedd55c5c7905a3c9ef6332ba2046444.png

模型评估

虽然通常目标检测模型是使用精度mAP作为评估指标,但是在垃圾识别项目的实际应用中,如果继续使用mAP指标进行评估则会有很大问题。主要原因是计算mAP时,由于实际垃圾的尺寸浮动较大,标注框和预测框之间的区域重合会有较大偏差,从而导致mAP值未必理想。然而,我们的最终目的是检测是否存在垃圾,以及垃圾在图片中的位置,并不在意检测到的是一堆垃圾还是一个垃圾。因此,我们重新将召回率与漏检率作为最终的评估指标,具体含义如下:

召回率

只要在实际有目标的图片上检测出目标(不论框的个数),该图片被认为成功召回。计算实际有目标图片中被召回的图片所占的比例,即为图片级别的召回率。

误检率

只要在实际无目标的图片上检测出目标(不论框的个数),该图片被认为误检。计算无目标图片中被误检图片所占的比例,即为图片级别的误检率。

这样就可以在实际场景中更加有效地衡量我们的方案效果。 

模型优化

本次范例提供了包括原始数据的扩充、加载预训练集多种优化方案。考虑到最终部署的硬件设备是算力和内存都比较受限的ARM设备,还需要进一步减小模型体积、提高预测速度。具体的,我们首先通过 PaddleLite opt提供的 FP16混合精度预测,减小模型体积,提高预测速度。

但是由于在部分如ARM V7等设备上无法支持FP16预测,于是,再次基于PaddleSlim提供的量化训练,将FP32浮点数量化成INT8整数进行存储和计算,减小模型体积的同时提高预测速度,再经过finetune训练减少量化运算带来的误差,降低量化模型的精度损失。

模型部署

本项目最终的部署环境为:车载终端设备,ARM CPU CortexA9 dual,256MB闪存。考虑到实际部署效率,采用 C++ 开发,在端侧设备上实现基于Paddle Lite C++ API的调用,准确检出道路垃圾。同时PaddleDetection中也提供了完整的使用示例和开发说明文档,可以参考以下教程快速学习,并针对实际项目进行开发和集成。

小编为你送上项目链接:

https://github.com/PaddlePaddle/PaddleDetection/tree/release/2.4/deploy/lite

尤其需要注意的是,如果模型有多个输入,每一个模型输入都需要准确设置shape和data。具体如下图所示,可以通过飞桨可视化分析工具VisualDL查看模型的输入,并对照修改配置代码:

9c2b9a49f37117a69dbc578bf4b6f5a3.png

在完成上述步骤并导出模型文件后,就可在目标设备上进行模型性能测试验证了。

如果想了解更详细方案细节,欢迎关注我们的视频课程,手把手全流程教学等着你哦。

飞桨产业实践范例

助力企业跨越AI落地鸿沟

飞桨产业实践范例,致力于加速AI在产业落地的前进路径,减少理论技术与产业应用的差距。范例来源于产业真实业务场景,通过完整的代码实现,提供从数据准备到模型部署的方案过程解析,堪称产业落地的“自动导航”。

  • 真实产业场景:与实际具有AI应用的企业合作共建,选取企业高频需求的AI应用场景如智慧城市-安全帽检测、智能制造-表计读数等;

  • 完整代码实现:提供可一键运行的代码,在“AI Studio一站式开发平台”上使用免费算力一键Notebook运行;

  • 详细过程解析:深度解析从数据准备和处理、模型选择、模型优化和部署的AI落地全流程,共享可复用的模型调参和优化经验;

  • 直达项目落地:百度高工手把手教用户进行全流程代码实践,轻松直达项目POC阶段。

精彩课程预告

为了让小伙伴们更便捷地应用道路垃圾检测范例,北京德厚泉科技有限公司副总经理为大家深度解析从数据准备、方案设计到模型优化部署的开发全流程,手把手教大家进行代码实践。

扫码获取视频课程链接

加入技术交流群

36754474f4a8014af6981c1b456e71d0.png

804da9ac24cf79e570359f46ef600f93.gif

关注【飞桨PaddlePaddle】公众号

获取更多技术内容~

本文同步分享在 博客“飞桨PaddlePaddle”(CSDN)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

展开阅读全文
加载中

作者的其它热门文章

打赏
0
0 收藏
分享
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部