作者:刘迎飞
作者简介:刘迎飞,硕士在读,导师为孙显研究员。2018年由天津大学保送至中国科学院大学,研究方向为遥感图像目标检测。曾获2020海华AI挑战赛·垃圾分类技术组第三名。
2020年7月18日,由深圳市南山区人民政府主办,华为技术有限公司承办的“华为云杯”2020深圳开放数据应用创新大赛落下帷幕。赛博智能团队疫情期间,在科研环境有限、线下沟通不畅的情况下,发扬“艰苦奋斗、自强不息”的科研精神,利用华为云NAIE 等训练平台,积极投身科研和学科竞赛中。
由刘迎飞、时爱君、郭荣鑫、许全福和林仁灯等研究生组成的江流儿赛队,在全国912支参赛队伍、4388名参赛者中脱颖而出,夺得生活垃圾图片分类检测赛道的冠军。在参加比赛的过程中,非常感谢华为NAIE平台给我们提供的计算资源支持。平台代码调试非常方便,此外为每个用户提供5张V100显卡使用。这些使我们有了更多参数调试的机会,大大提高了我们模型迭代的速度。
图源 https://competition.huaweicloud.com
获奖证书一、赛题描述
生活垃圾的分类和处理是目前整个社会都在关注的热点,如何对生活垃圾进行简洁高效的分类与检测对智慧城市建设至关重要。为了对算法的实用性进行评估,比赛测评选用的是VOC形式的mAP,使用华为云ModelArts系统进行自动评分。选手需要将网络模型部署到ModelArts系统中,在CPU机器上对近三千张图像进行测试,要求测试时间不大于三小时,禁止使用TTA和模型融合。这对于算法的精度和实时性都有非常高的要求。
二、模型介绍
团队在本次比赛中使用MMdetection检测框架,以Res2Net152+gcb作为backbone,单阶段的ATSS检测算法作为baseline。训练过程中结合常见的平移、缩放、旋转、颜色变换,多尺度训练、GridMask数据增强,类别平衡采样方法、余弦学习率衰减、随机权值平均(SWA)等。
1、Baseline选取
双阶段算法一直是横扫各大比赛的主流算法。但是受到比赛规则的限制,双阶段算法在CPU环境下的部署要比单阶段算法慢得多。有很多的队伍都使用Cascade RCNN,但是只能对较小的输入尺寸进行测试,限制了算法的上限。
网络结构图 图源|FCOS[2]如上图所示,ATSS的网络结构沿用了FCOS的形式,相比于双阶段网络,由于没有ROI head,在CPU上的运行速度大大提升,因此选用ATSS作为比赛的baseline。
2、Backbone选取
Res2Net模块图源|Res2Net[3]如上图所示,Res2Net在单个残差块内构造分层的残差类连接,增加每个网络层的感受野范围,提升特征提取能力。相比于ResNet,Res2Net能用相近的计算复杂度达到更高的精度,因此比赛选用Res2Net系列作为backbone,从最开始的Res2Net50逐步升级到Res2Net152.
三、提升技巧
很多技巧的参数在比赛的过程中是不断反复调整的,因此很难拿一个具体的数值来定量描述,这里只给出一个大致的提升效果。最初的baseline我们选用的是Res2Net50 + ATSS,保留本地验证集的情况下在初赛A榜mAP=67.48%,使用全部训练数据大约69.5%-70%。
1、Albumentations数据增强库
Albumentations包含了各种数据增强算法。选用平移缩放旋转和随机旋转90度进行增强。这两项结合在A榜有3%左右的提升。
dict(type='RandomRotate90', p=0.5),
dict(type='ShiftScaleRotate',shift_limit=0.0625,scale_limit=0.5,rotate_limit=30,interpolation=1,p=0.5)
2、多尺度训练
为了充分利用测试时间,选用608x640的测试尺寸。在训练过程中,固定长边不变,短边从384浮动到640进行多尺度训练. 多尺度训练的提升在1%~1.5%左右。
img_scale=[(640, 384), (640, 640)]
3、GridMask
GridMask示意图 图源|GridMask[5]如上图所示,GridMask 通过生成一个和原图相同分辨率的mask,然后将该mask与原图相乘得到一个图像。上图中灰色区域的值为1,黑色区域的值为0。GridMask可以理解为一种正则化方法,将GridMask使用比率设为0.8,结合其他数据增强训练50个epoch。GridMask在初赛A榜有大约2%左右的提升。
dict(type='Grid', use_h=True, use_w=True, rotate = 1, offset=0, ratio = 0.5, mode=1, prob = 0.8),
4、Cosine学习率衰减
余弦学习率衰减指的是学习率衰减像余弦函数一样变化,在训练初期和训练末期均保持一个较为平稳的学习率,在训练中期学习率快速下降。相比于step阶梯式的学习率下降策略,在初赛A榜提升在0.5%左右。
lr_config = dict(policy='CosineAnealing', min_lr_ratio=0.01, by_epoch=False,warmup='linear', warmup_iters=500, warmup_ratio=1.0 / 3,)
5、类别平衡采样
数据的平衡对于以mAP为测评指标的算法非常重要,初赛设置上采样率为0.02,出现频率低于0.02的类别将会采用过采样的方式达到这一比率。决赛设置上采样率为0.018. 在初赛A榜提升有0.5%左右。
train=dict(
type='ClassBalancedDataset',
oversample_thr=0.018,
…
6、更大的backbone
Backone的选取对模型精度提升很关键,在初赛A榜将Res2Net50替换为Res2Net101可以将mAP从70.65% 提升至72.32%, 后期使用Res2Net152将mAP从75.43% 提升至76.08%。
Global Context Block 图源|GCNet[4]在决赛期间,由于不允许模型融合,继续增加网络的复杂度是很有必要的。 对Res2Net152添加Global Context Block(GCB),决赛可以从77.14%提升到77.63%。
backbone=dict(
type='Res2Net',
depth=152,
scale=4,
baseWidth=26,
num_stages=4,
out_indices=(0, 1, 2, 3),
frozen_stages=1,
='pytorch',
gcb=dict(ratio=1. / 4. ),
stage_with_gcb=(False, True, True, True)
),
7、随机权值平均SWA
随机权值平均可以增强模型的泛化性能,降低过拟合的风险。在50 epoch的训练过程中,每5个epoch保存一次模型,使用随机权值平均得到十个模型的平均值。这使得初赛、决赛的最后均有0.8%左右的提升。https://github.com/open-mmlab/mmdetection/issues/2001
8、类别细化
在多类别的检测中,一组参数可能无法对所有的类别达到最优的效果。类别细化就是对不同的类别设置不同的参数,以期达到更优的效果。
FCOS和ATSS都具有center-ness分支,在本地验证集的统计发现一些类别的分类得分不乘center-ness高,一些乘以center-ness高。在测试过程中对这些类别加以区分,一些乘center-ness,一些不乘。在初赛提升了0.06%,决赛提升了0.07%。从决赛最终的成绩来看,这个细节发挥了最关键的作用。
三、总结展望
此次比赛过程,初赛一帆风顺,决赛一波三折。从决赛的过程来看,任何时候都不能松懈,很多实验的细节可能成为决定胜败的关键。此外,受限于比赛时间和硬件条件,本方案仍存在一定的提升和改进的空间:
1、Generalized Focal Loss
在缺少预训练模型的情况下,GFocal Loss在比赛数据集上效果比ATSS略差,后续可以考虑加上GFocal Loss在COCO上预训练。
2、GCB模块
GCB模块在本方案中当做一个即插即用的模块使用,如果使用COCO的预训练模型可能取得更好的效果。
3、训练尺寸
测试尺寸在决赛期间做了较大修改,由于时间关系训练尺寸未做较多的调整,精细化的调整可能会带来一些提升。
四、参考文献
Zhang, Shifeng, et al. “Bridging the Gap Between Anchor-Based and Anchor-Free Detection via Adaptive Training Sample Selection.” CVPR 2020: Computer Vision and Pattern Recognition, 2020, pp. 9759–9768.
Tian, Zhi, et al. “FCOS: Fully Convolutional One-Stage Object Detection.” 2019 IEEE/CVF International Conference on Computer Vision (ICCV), 2019, pp. 9626–9635.
Gao, Shanghua, et al. “Res2Net: A New Multi-Scale Backbone Architecture.” IEEE Transactions on Pattern Analysis and Machine Intelligence, 2019, pp. 1–1.
Cao, Yue, et al. “GCNet: Non-Local Networks Meet Squeeze-Excitation Networks and Beyond.” 2019 IEEE/CVF International Conference on Computer Vision Workshop (ICCVW), 2019, pp. 1971–1980.
Chen, Pengguang, et al. “GridMask Data Augmentation.” ArXiv Preprint ArXiv:2001.04086, 2020.
Zhang, Zhi, et al. “Bag of Freebies for Training Object Detection Neural Networks.” ArXiv Preprint ArXiv:1902.04103, 2019.
Izmailov, Pavel, et al. “Averaging Weights Leads to Wider Optima and Better Generalization.” UAI 2018: The Conference on Uncertainty in Artificial Intelligence (UAI), 2018, pp. 876–885.

