近日,中科院自动化所图像与视频分析组针对大规模长尾目标检测任务提出了一种新颖的动态类别抑制(AdaptiveClassSuppressionLoss,简写为ACSL)方法,通过我们的大规模多级多卡分布式训练框架LargeDet来进行模型训练,彻底摆脱了对于数据集类别分布的依赖,无需显示划分头部类别和尾部类别,有效避免了人为分组带来的训练不一致和训练不充分的问题,真正实现数据集无缝地迁移,而不需要进行数据集的统计分布以及超参数调整,同时性能上取得了显著提升。ACSL在经典的长尾目标检测数据集LVIS上取得了显著的性能提升(+5.18%mAP),检测器在尾部类别的精度(+14.34%APr)。此外,在大规模检测数据集OpenImages上也取得了大幅度的性能提升(+5.2%AP),并且支持多标签学习以及类别嵌套学习。
什么是长尾分布?
一般头部类别通常包含数十万甚至上百万个训练样本,而尾部类别只包含数个至数十个训练样本。如在日常生活中不同类别的物体出现的频率相差极大:既包括日常生活中常见的猫、狗、汽车,也包括难得一见的东北虎和大熊猫。
这种现象反映到数据集上就是各个类别呈现一个长尾分布的态势,极少数的类别拥有大量的训练样本(头部类别),但是大量的类别样本数却非常的稀少(尾部类别)。随着数据集规模的扩大,类别数的增多,长尾分布的问题也就愈发地明显。
OpenImages是现存最大的目标检测数据集,总共包含170万张图片和600个类别。该数据集面临着严重的长尾分布问题,比如其头部类别“树木”包含多达29万张训练图像,但是尾部类别“炸弹”仅仅包含6张训练图像,它们之间的图片数量相差48333倍之多。面对严重的长尾分布问题,神经网络在训练过程中会被头部类别所主导,尾部类别由于缺少训练样本,精度往往非常差,导致整体精度的下降。
图1.LVIS数据集各类别的样本数量分布示意图。x轴表示按照图片数量降序排序过后的类别标号,y轴表示类别对应的图片数量
长尾分布的应对方法
现有经典的解决长尾问题的方法(比如EQL和BAGS)主要通过类别分组的方式来解决。他们首先统计各个类别的样本数量,并且将样本数量相近的类别分到同一组中。在训练过程中,由于头部类别和尾部类别被分到了不同的组别,头部类别并不直接对尾部类别产生抑制,从而保护了尾部类别的充分学习。
但是这些分组的方法存在两个弊端:
(1)在分组边界两端的类别训练不一致。
(2)网络对于不同组之间的易混淆的类别缺乏判别力。
除此之外,分组方法依赖于具体数据集的类别分布先验。当应用于不同的数据集时,此类方法需要重新对数据集的类别分布进行统计,并且需要进行实验调参来确定最优的分组策略,从而限制了此类方法的通用性和可迁移性。
动态类别抑制损失
结合上述分析,我们认为对于长尾数据集来说,一个通用有效的方法应该具有如下的性质:
基于上面的两个原则,团队设计了一种新型动态类别抑制损失ACSL,无需统计各个类别的样本数量,将所有类别均视为尾部类别,依据网络对每个类别每个样本的学习状态动态地产生抑制梯度。ACSL的设计源于如下的设计思路:属于某个类别的样本会默认地对其他类别产生抑制梯度使其输出较低的得分。对于属于类别A的样本,如果网络已经能够很好地区分类别A和类别B,那该样本无需对类别B产生抑制梯度,以避免类别B接收到过度的抑制梯度。如果网络在类别A和B之间产生混淆,我们便需要施加对类别B的抑制梯度以维持网络的判别力。
对于长尾分布数据集,由于头部类别样本会对尾部类别产生过量的抑制,导致尾部类别精度差。我们因此设计了一个动态类别抑制损失ACSL来保护尾部类别的学习,并且不破坏网络对易混淆类别的判别性。如式(1)所示,ACSL在每类损失项的前面乘了一个二值的权重项。对于类别k对应的权重,由于当前样本属于类别k,所以将其值设为1。对于其他类别i≠k,如果其输出属于第i类的概率大于一个固定的阈值ξ,说明对于该样本来说,网络很容易将类别i和类别k混淆,因此需要保留该样本对类别i的抑制梯度来保证网络对类别i和k的判别性。换句话说,此时要设置为1。当小于固定的阈值ξ时,说明网络已经能够很好地区分类别i和类别k了,为了避免对尾部类别产生过多的抑制,被设置为0。上述过程的公式化表述如式(2)所示。ACSL对的导数如式(3)所示。
为了更好地理解动态类别抑制损失,我们结合图2对比了对动态类别抑制损失和二值交叉熵损失的区别。图2表示二值交叉熵损失和ACSL对同一个样本的处理方式。该样本属于A类别,对于二值交叉熵损失来说,每个类别的损失的权重项均设置为1。对于ACSL来说,由于网络在A类别和D类别上都有比较高的得分,说明网络容易对这两个类别产生混淆,所以要保留对类别D的抑制梯度,其权重设置为1。对于类别B,C,E来说,网络产生的得分较低,所以将其对应的权重设置为0,可以避免对尾部类别产生过度的抑制作用,保护尾部类别的精度。
图2.二值交叉熵损失和动态类别抑制损失示意图。
实验验证
我们在经典的长尾目标检测数据集LVIS(v0.5)来探究ACSL的有效性。我们采用了ResNet50-FPN检测器进行实验。除了最后分类的损失函数外,其他的结构均保持一致。如表1所示,ACSL可以大幅度提高检测器的性能。当ξ等于0.7时,检测器的精度为26.36%,超过2倍训练策略的baseline4.08%。同时,我们也发现,ACSL带来的精度提升主要来自于rare类别和common类别,说明我们的方法对尾部类别具有明显的优势。
表1.LVIS数据集下的消融实验
为了验证ACSL的泛化性能,我们同时在大网络ResNet101、ResNeXt101以及强检测器CascadeRCNN上进行了实验。从表2中可以看出,ACSL在大网络和强检测器上均有稳定的性能提升,特别是在和上。
表2.ACSL在不同网络以及检测框架上的性能
为了探究ACSL的通用性,我们在大规模长尾数据集OpenImages上也进行了实验验证。由于OpenImages数据集具有170万训练数,因此这里利用了我们ECCV2020提出的大batchsize分布式训练框架LargeDet来加速训练。在此基础上,ACSL同样也带来了5%以上的精度提升,将ResNet50-FPN在OpenImages上的精度提升到了60.3%。如表3所示,ACSL在不同的主干网络下均能取得显著的性能提升。
表3.ACSL在OpenImages数据集上的实验结果
此外,我们对比了ACSL和baseline在一些尾部类别上的精度,如表4所示,发现ACSL可以极大地提高尾部类别的性能,在类别“Facepowder”甚至可以取得(+63.1%AP)的绝对精度提升。
表4.OpenImages数据集上尾部类别精度提升对比
典型应用
图3.手机端应用示意图
图4.卷烟零售终端智能分析评价系统示意图
图7.智慧交通车纹大数据平台
论文标题:TongWang,YousongZhu,ChaoyangZhao,WeiZeng,JinqiaoWangandMingTang.AdaptiveClassSuppressionLossforLong-TailObjectDetection.
参考文献:
1.JingruTan,ChangbaoWang,BuyuLi,QuanquanLi,WanliOuyang,ChangqingYin,andJunjieYan.Equalizationlossforlong-tailedobjectrecognition.InIEEE/CVFConferenceonComputerVisionandPatternRecognition(CVPR),June2020
2.YuLi,TaoWang,BingyiKang,ShengTang,ChunfengWang,JintaoLi,andJiashiFeng.Overcomingclassifierimbalanceforlong-tailobjectdetectionwithbalancedgroupsoftmax.InIEEE/CVFConferenceonComputerVisionandPatternRecognition(CVPR),June2020
3.TongWang,YousongZhu,ChaoyangZhao,WeiZeng,YaoweiWang,JinqiaoWang,andMingTang.LargeBatchOptimizationforObjectDetection:TrainingCOCOin12minutes.InEuropeanConferenceonComputerVision(ECCV),August2020