基于垃圾目标检测任务的YOLOv5初探
作者:余敏君
研究背景
垃圾分类作为一种有效处理垃圾的科学管理方案,在提高资源利用率、缓解垃圾生产压力以及改善生态环境等方面具有重要意义,是我国社会主义现代化和城市化进程中所必须采取的策略,备受世界各国的迫切关注。2019年以来,随着上海市、杭州市等垃圾分类重点城市有关生活垃圾分类的立法、执法和监督等工作的顺利开展,人们对垃圾分类相关话题的关注度日渐提升,个人垃圾分类的意识也有了很大的提高。但与此同时,由于垃圾的种类极其丰富,个人对垃圾归类的模糊程度普遍较高,因此,垃圾分类自动化的实现显得尤为重要。垃圾目标检测作为垃圾分类自动化的一个重要环节,本文将尝试实现该过程。所谓目标检测,简单来讲就是检测图像中的对象是什么以及在哪里的问题,即"目标分类+定位"问题。
YOLO系列模型作为one-stage类目标检测任务的代表算法,凭借其快速、泛化性能好等特性深受研究者喜爱。在前不久,YOLOv5也在GitHub上正式发布,其立即在网上引发了广泛热议。本文将参见官方提供的使用教程,尝试简单利用YOLOv5网络模型在TACO数据集上实现垃圾目标检测任务。
数据集处理
TACO是一个数据正在不断增长的垃圾对象数据集,其以树林、道路和海滩为拍摄背景,目前包含60个类别的垃圾对象,共1500张图像,近5千份标注。该数据集项目参见:https://github.com/pedropro/TACO
一方面,考虑到该数据集文件存放格式和标签格式要符合YOLOv5模型的相关要求;另一方面,也考虑到该数据集中各垃圾类型对象的样本数量极其不均(如图1所示),因此,本文首先需要对数据集进行必要的操作。对于数据集的处理代码可参见Mo项目[1],项目中的_readme.ipynb文件详细给出了相关代码使用的具体操作。
图1 TACO各类别对象的样本数量
对于TACO数据集的处理主要可分为以下两个过程:
(1)由于TACO提供的标签为coco类型(所有信息存放在annotations.json文件中),项目首先需要将相关标签转换为yolo类型。与此同时,考虑到本文仅对相关网络模型进行初探和个人硬件设备的欠缺,该项目仅挑选出满足
要求的垃圾对象进行相关实验。上述操作的相关代码可以参考博客[1]提供的代码进行修改,该代码可以作为模板用于满足自定义化coco格式转yolo格式需求。
经初步统计,符合要求的垃圾类型(共8类)及其原编号如下所示:
'Clear plastic bottle':5
'Plastic bottle cap':7
'Drink can':12
'Other plastic':29
'Plastic film':36
'Other plastic wrapper':39
'Unlabeled litter':58</