摘要:为了探究垃圾的智能分类等问题,由中关村海华信息研究院、清华大学交叉信息研究院以及Biendata举办的2020海华AI垃圾分类大赛吸引了大量工程师以及高校学生的参与
随着我国经济的发展,城市化进程不断加速,生活垃圾对城市环境的威胁日益增长。如何高效、环保地解决处理生活垃圾迫在眉睫。所以垃圾的智能分类对于智能化分拣垃圾、提升垃圾分拣效率就显得十分重要。为了探究这一问题,由中关村海华信息研究院、清华大学交叉信息研究院以及Biendata举办的2020海华AI垃圾分类大赛吸引了大量工程师以及高校学生的参与。由华为NAIE平台提供的算力支持,也为比赛的顺利开展奠基了基础。该比赛旨在激发更普遍的科研探索热情,挖掘更有价值的算法优化和创新。算法
咱们参与的是该比赛的专业赛道,所以有两种数据集可使用。一种为单类数据集,共80,000张垃圾图像,每张图像中只有一个类别。此外,还提供了图中惟一对象的边框的信息。多类别数据集包含训练集中的2998张垃圾图像,验证集中的1000张垃圾图像,测试集中的1000张垃圾图像,每幅图像最多包含20个类别。segmentfault
不一样于VOC、COCO、OID等常见的目标数据集,这些数据集具备不一样的特色:dom
1. 对于205个类别,单类垃圾数据集的大小就足够了。然而,这个数据集中的垃圾图像与多类数据集中的垃圾图像有很大的不一样,即便是同一类别的垃圾。直接使用该数据集来训练模型可能会致使特征不匹配和性能降低(图1)。ide
图1:左图为多类数据集中的镜子,右图为单类数据集中的镜子性能
2. 多类数据集在训练集中只包含2998张垃圾图像。而在125个类别的状况下,该数据量是比较小的,且类别存在不平衡的现象。所以大规模数据集的迁移学习和减小过拟合的技术是很是须要的。学习
3. 在大多数多类图像中,垃圾密集地堆积在图像的中心,而且形状大小不一。它会致使垃圾相互遮挡,使检测任务更加困难。而且每张图像的背景都比较干净(图2)。测试
图2:多类数据集图像示例优化
4. 数据集中存在许多混淆类别的垃圾,致使类别标签的不一致性。人工检查和更正标签可能有帮助,但也可能存在致使数据不匹配的风险(图3)。spa
图3:左右图为同一类物体,但在多类数据集中3d
左图被标定为食品塑料盒,而右图被标定为食品外包装盒
为了完成该比赛的任务,咱们借鉴了其余大型的目标检测竞赛中的解决方案,如COCO、Objects365和OID。在这些解决方案中,咱们借鉴了百度在OID 2019中的解决方案。Baseline模型选用的是基于Class-aware的Cascade R-CNN,且同时使用ResNet200-Vd做为模型的backbone而且加入了FPN、Dcnv2和Non-local方法来提升模型的总体效果。训练使用多尺度训练(480:1440:32)和常见的数据加强方法如水平翻转。
迁移学习能够在小数据集上得到良好的性能,所以在该比赛中使用该方法理论上应当能够取得较好的效果。所以,咱们选择了COCO、Objects365和OID混合的预训练模型。具体效果如表1所示。
表1:使用不一样预训练参数的Baseline的AP
训练方面,因为庞大的模型以及多尺度训练方法,因此在Tesla V100 上batch size只能设置为1,这里感谢华为NAIE提供的算力支持。使用引用动量的SGD做为训练的优化器。基础学习率设置为0.001,权重衰减速率为0.0001。使用了Cosine annealing with warmup的学习率调度策略,从0.0001的学习率开始,1000次迭代后到达基础学习率。咱们训练Baseline进行了120K次迭代,训练时间大约40个小时。
为了减小在如此小的数据集上的过拟合,就须要大量的数据扩充。咱们尝试了许多数据加强方案,最终发现RandomVerticalFlip、AutoAugment和GridMask能有效提升模型性能。
不一样于天然图像,对于垃圾图像,水平翻转和垂直翻转的效果是等同的,所以咱们使用了RandomVerticalFlip而并不是RandomHorizontalFlip。
而且咱们将普遍使用于图像分类中的AutoAugment方法迁移到了目标检测中。实验证实,该方法对各类目标检测数据集都是有效的。而且咱们在baseline中尝试了三种不一样的自动加强策略(表2),发现AutoAugment v0的效果是最好的,最终咱们也使用了它。
表2:不一样AutoAugment策略下模型的AP
再者咱们使用了GridMask的数据加强方法,该方法包括random erasing、hide-and-seek、Dropout以及DropBlock。实验代表,GridMask能够有效减小目标检测的过拟合。而且使用GridMask长时间训练模型能够显著提升模型性能。在本实验中,咱们尝试了不一样几率和训练时间下的GridMask。如表3所示,使用GridMask的训练模型须要比baseline更长的训练时间。使用0.3的几率足以减小过拟合,且训练时间越长越好。几率为0.5和0.7甚至会导欠拟合的现象。因此若是以较高的GridMask几率训练超过300K次迭代理论上来讲能够进一步提升结果。
表3:不一样GridMask几率与迭代次数下模型的AP
在最终提交阶段,咱们只能在RTX 2080上测试两个小时,可是模型大小不受限制。因此考虑到这些约束条件,咱们训练了仅随机种子不一样的6个相同的模型来进行模型融合,且使用了前面提到的全部有效技巧。同时使用了Top-k voting nms对6个模型的检测结果进行合并,设置top-k voting的nms的IoU阈值为0.7,该阈值与Cascade R-CNN第三阶段的IoU阈值一致。
最终咱们在测试集上以0.910的成绩取得了第一名,咱们认为咱们可以取胜的缘由主要有如下几点:
(1)参考了大型目标检测比赛前几名的方案
(2)使用了COCO,Object365以及OIDV5的混合预训练模型
(3)使用了多种数据加强方法
(4)在模型融合中使用了top-k voting nms
最后感谢华为提供的NAIE平台,为比赛训练提供了巨大的帮助,平台功能也十分强大。在咱们使用平台遇到问题时,官方都及时地进行了解答和协助,十分的给力。咱们也很是荣幸能有此次机会和你们分享此次比赛的历程,谢谢!