摘要: 生活垃圾的分类和处理是目前整个社会都在关注的热点, 如何对生活垃圾进行简洁高效的分类与检测对垃圾的运输处理至关重要. AI 技术在垃圾分类中的应用成为了关注焦点.
如今 AI 已经是这个时代智能的代名词了, 任何领域都有 AI 的身影, 垃圾分类及监管等场景自然也少不了 "AI+" 的赋能.
不过, 垃圾往往属于商品的极端变形体, 情况比较特殊. 目前的技术在视觉可见的基础上, 是可以做到垃圾分类报警提醒的, 比如判断垃圾是否是经过分类整理的. 至于是否能够直接进行视觉检测并分类, 且达到某种效果, 需要更多的数据和实验支撑才能判断这件事情的可行性. 针对这些问题, 我们或许可以从海华垃圾分类挑战赛中去听听参赛者都是如何用技术来改变世界的.
海华垃圾分类挑战赛数据包括单类垃圾数据集以及多类垃圾数据集. 单类垃圾数据集包含 80,000 张单类生活垃圾图片, 每张单类垃圾图片中仅有一个垃圾实例. 多类垃圾数据集包括 4998 张图像, 其中 2,998 张多类垃圾图片作为训练集数据, A 榜和 B 榜各包含 1000 张测试图像, 每张多类垃圾图片中包含至多 20 类垃圾实例. 我们将对两种数据集分别进行介绍.
一, 多类别垃圾
图 1 多类垃圾数据类别分布
如图 1 所示, 多类别垃圾涵盖了 204 类垃圾, 但这 204 类的数据非常不均衡, 有一些类别数目非常少甚至没有出现.
图 2 多类垃圾数据可视化
图 2 中两张图是训练集中的两张图像, 垃圾目标主要集中在图像的中心区域重叠度较高, 此外可以看到很一些目标往往会以不同的角度姿态在另一张图像中出现.
从图 1 与图 2 的观察与统计我们可以得出几个结论:
(1)由于一个物体经常在多张图像中出现, 因此过拟合这些目标非常有效, 这也是为什么这个比赛 AP 能训到 90 以上的原因. 因此可以考虑参数量更大的 Backbone, 比如 ResNext101 X64+DCN.
(2)图像是俯视拍摄的, 水平和垂直翻转都很有效.
(3)虽然类别非常不均衡, 但是由于目标的重复出现, 经常几个目标的训练, 再见到同一个目标就能 100% 的检测到. 类别不均衡主要对数据极少的物体有影响, 因此只需要对这些目标进行扩充, 主要包括墨盒, 螺蛳, 话梅核, 贝类等.
(4)重叠度较高可以使用 mixup 等方法, 人为地制造一些重叠度高的目标进行训练.
表 1 数据统计
除了图像级别的宏观统计, 我们对数据集中的目标也做了详细分析. 表 1 为目标大小, 以及长宽比层面的统计. 首先物体长度按照 coco 的划分, 大于 96 的属于大物体, 75% 的目标都是大物体, 这意味着针对小物体的提升方法是基本无效的. 其次长宽比很少有大比例物体的出现, 这些给予我们 anchor 方面的参数调整很多启发.
二, 单类别垃圾
单类别垃圾主要包含 80000 张图像, 每张 1 个目标, 如左边两张图所示单类别垃圾的目标都较大. 单类的使用主要有两种思路, 一种是对类别少的数据扩充, 另一种是使用单类数据集训练得到一个较好的预训练模型.
图 3 数据对比
数据扩充时我们发现, 和多类别垃圾相比, 同一类的目标并不是完全一致的, 单类的小龙虾是小龙虾, 多类的小龙虾实际标的是牛奶盒, 二极管标的是塑料管. 这一点说明想用单类做数据扩充是行不通的, 因为数据不是同源的. 我们尝试了这种方案, 但是精度保持不变.
针对预训练模型, 由于目标较大, 我们将图像按照 4*4 进行拼接, 减少了数据量, 提升了单张图像的目标数, 也能取得一定的效果. 但是当与其他增强方法结合时基本没有效果, 因此我们也放弃了这种方案.
三, 模型方案:
1.Baseline
图 4 baseline 方案
我们 baseline 选用的是 mmdetection 所实现的 Cascade RCNN,Backbone 选用的是 ResNeXt101 X64+DCN. 因为此次比赛采用的是 coco 的评测指标 AP50:95, 因此 Cascade RCNN 通过设置不同的阈值进行回归可以取得非常好的效果. 此外较大的 Backbone 在这个数据集上往往能取得更好的效果.
2. 参数调整
在比赛的初期, 我们将训练集的数据选取 2500 张训练, 498 张本地验证, 在此基础上进行调参. 由于目标重叠度较高, 在使用 softnms 阈值为 0.001,max_per_img =300, 翻转测试时效果较好, 相比不使用这些参数大约能提升 0.02 左右. 受到显存的限制从图像中随机裁剪 (0.8w,0.8h) 的图像区域, 然后将短边随机限制在 [640,960] 之间, 长边限制到 1800 进行多尺度训练, 测试时图像适度放大短边设置为 1200, 精度可以训练到 88.3%, 结合 OHEM 精度训练到 88.6% 左右, 将本地验证的 498 张图像也输入进去训练能提升 0.5% 到 89.2% 左右.
针对数量较少的类别, 我们在多类训练集中对贝类去硬壳, 螺蛳, 二极管, 话梅核这几个类别进行补充标注, 把一些模棱两可的目标都进行标注提高召回率, 大约标记了 100 多个目标, 在 A 榜能提升到 90% 左右.
如图 5 所示, 针对 anchor 的调整, 我们调整 anchor 的比例从[0.5,1.0,2.0] 改为[2.0/3.0,1.0,1.5] . 此外为了提升大物体的检测能力, 我们调整 FPN 的层次划分从 56 改为了 70, 相当于将 FPN 各层所分配的目标都调大, 然后我们将 anchor 的尺度由 8 改为 12 对这些大物体进行检测.
图 5 anchor 修改
如图 6 所示参数调整后可以发现 FPN 中目标数量的分布更加接近正态分布, 我们认为这样的一种分布对检测会有所帮助. 从 ResNet 的几个 stage 的卷积数量我们可以看到, FPN 中间层所对应的 ResNet 的 stage 参数较多应检测较多目标, FPN 两侧对应到 Backbone 的参数较少检测目标数不宜过多.
图 6 目标在 FPN 上的数量分布变化
在图像增强时, 我们加入在线的 mixup 进行 24 个 epoch 的训练可以提升到 91.2%~91.3%, 不过只有 12 个 epoch 的时候没有提升. Mixup 我们设置的比较简单, 两张图像分别以 0.5 的比例进行融合, 因此没必要对 loss 进行加权.
图 7 mixup 效果图
3. 模型融合
之前的测试过程中, 我们认为 1080Ti 与 2080 速度应该相差不大, 每次 1080Ti 上测试大约需要 40 分钟, 因此我们只选用 3 个模型左右, 这一点是比较吃亏的, 在 B 榜的测试时我们发现 2080 居然比 1080Ti 快很多, 我们单个模型加翻转测试只使用了 25 分钟, 如果用更多模型可能会进一步提高分数. 我们使用基于 ResNext101 x32+gcb+DCN 的 Cascade RCNN, 基于 ResNext101 x64 +DCN 的 Cascade RCNN, 基于 ResNext101 x64 +DCN 的 Guided anchor Cascade RCNN. 对于融合所使用的方法, 不同的方法所能取得的效果都相差不大, 我们采用的方法是论文《Weighted Boxes Fusion: ensembling boxes for object detection models》所提供的方法, 融合阈值设置为 0.8.
图 8 wbf 效果图
4. 参数效果
表 2 参数设置
图 9 A 榜精度变化
四, NAIE 平台部署使用
1. 平台理解
个人理解 NAIE 平台主要由三部分组成, 本地调试区, 云端存储区, 云端训练区域, 对这三部分各自地功能有所了解便可以很快上手.
本地调试区域基于 vscode, 关联到一台无 GPU 的服务器, 可以在命令行像正常 Linux 服务器一样操作进行环境的初步部署调试.
云端存储区域主要保存大的数据以及预训练模型, 像预训练模型这些大文件是无法直接从本地调试区传送到模型训练区域的.
模型训练区域调用 GPU 完成模型的训练, 并将训好的参数模型 copy 到云端进行存储, 只有存至云端的模型才可下载.
2. 模型部署
这里以 mmdetection 的部署为例进行介绍.
1)代码上传
代码上传通过右键选取 NAIE upload, 代码上传时有大小限制, 大约不能超过 100M, 因此建议将预训练模型以及一些无关的文件删除只保留核心代码.
2)环境部署
环境部署需要在本地代码区写一个 requirements.txt 的文件, 上面写明所需要的 python 库和版本号.
3)模型运行
平台不支持 sh 文件的运行, 因此需要写一个 py 比如叫 model.py , 里面使用 os.system()仿照命令行进行执行.
此外在 model.py 中还要调用 moxing 包, 将训好的模型存至云端.
在模型训练区域, 选中 model.py 以及所需的 GPU 规格进行训练.
4)额外补充
直接通过 NAIE upload 是无法完成大文件上传的, 因此可以在本地调试区域写一个程序比如叫 debug.py, 在程序中调用 wget 下载文件, 并通过 moxing 包传至云端, 训练过程中可以在 model.py 中利用 moxing 包再将其传输到服务器中.
几位参赛者最终完成比赛并获得奖励, 虽然名次不是特别好, 但还是通过比赛积累了很多经验. 他们表示, 取得的成绩离不开华为 NAIE 训练平台的算力支持, 华为 NAIE 训练平台免费提供了 V100 和 P100 显卡进行训练, 为我们科研以及参加比赛提供了很大的帮助, 修改代码和训练都非常方便, 前期熟悉平台遇到的问题都能及时解答或者协助解决. 希望通过这次分享能给大家提供一定借鉴和避坑的经验.
参考文献
- [1]. Cai Z , Vasconcelos N . Cascade R-CNN: Delving into High Quality Object Detection[J]. 2017.
- [2]. Zhang H , Cisse M , Dauphin Y N , et al. mixup: Beyond Empirical Risk Minimization[J]. 2017.
- [3]. Solovyev R , Wang W . Weighted Boxes Fusion: ensembling boxes for object detection models[J]. arXiv, 2019.
- [4]. P. Wang, X. Sun, W. Diao, and K. Fu, "Fmssd: Feature-merged single-shot detection for multiscale objects in large-scale remote sensing imagery," IEEE Transactions on Geoscience and Remote Sensing, 2019.
- [5]. Zhang S , Chi C , Yao Y , et al. Bridging the Gap Between Anchor-based and Anchor-free Detection via Adaptive Training Sample Selection[J]. 2019.
- [6]. Pang J , Chen K , Shi J , et al. Libra R-CNN: Towards Balanced Learning for Object Detection[J]. 2019.
- [7]. Deng L , Yang M , Li T , et al. RFBNet: Deep Multimodal Networks with Residual Fusion Blocks for RGB-D Semantic Segmentation[J]. 2019.
- [8]. Ren S , He K , Girshick R , et al. Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks[J]. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2015, 39(6).
- [9]. Lin T Y , Dollár, Piotr, Girshick R , et al. Feature Pyramid Networks for Object Detection[J]. 2016.
[10]. J. Dai, H. Qi, Y. Xiong, Y. Li, G. Zhang, H. Hu, and Y.Wei, "Deformable convolutional networks," in Proceedings of the IEEE international conference on computer vision, 2017, pp. 764-773.
[11]. X. Zhu, H. Hu, S. Lin, and J. Dai, "Deformable convnets v2: More deformable, better results," in Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition, 2019, pp. 9308-9316.
[12]. Z. Huang, X. Wang, L. Huang, C. Huang, Y. Wei, and W. Liu, "Ccnet: Criss-cross attention for semantic segmentation," in Proceedings of the IEEE International Conference on Computer Vision, 2019, pp. 603-612.
[13]. Wang J , Chen K , Yang S , et al. Region Proposal by Guided Anchoring[J]. 2019.
点击关注, 第一时间了解华为云新鲜技术~
来源: https://www.cnblogs.com/huaweiyun/p/13396920.html