新闻中心

每一个新动态都是我们向前迈进的新脚步

返回研究动态

【商汤泰坦公开课】超大规模目标检测任务的挑战与进展

2020-05-28 11:06

导读

与传统的学术目标检测任务不同,真实场景下的超大规模视觉检测任务往往面临着严重的长尾效应和目标多标签分类的情况,大规模视觉检测任务的检测器设计与优化也一直是计算机视觉领域的重要研究点。COCO Challenge及OpenImage Object Detection Challenge等目标检测竞赛强有力地驱动着检测算法的创新。

2020年5月28日,商汤泰坦公开课第011期、CVPR 2020论文解读第三期的线上课程,围绕2篇CVPR 2020录用论文,由商汤的两位研究员分享了团队在Detection方面最新的研究工作,小助手已为大家做了图文整理,快来一睹为快吧~

Part 1  Detection领域综述

Part 2  商汤Detection团队相关研究进展

● 超大规模真实世界目标检测的多标签和不均衡的现象的解决方案

● Revisiting the Sibling Head in Object Detector

Part 3  Q&A问答

Part 4  答疑交流

课程PPT及视频回放获取方式见文末提示~

 

Part 1 Detection领域综述

目标检测的任务定义如下:给定图片,对于图片中的每一个物体实例,我们需要找到它的位置并返回一个最小的矩形框住该物体,同时进行类别上的识别。由于返回结果由框和类别得分组成,所以质量评估也同时要对预测框和得分质量进行评估。预测框质量评估一般由IOU指标来计算,即给定Ground-Truth框和预测框,通过计算它们的交并比来判断是否正确,因此检测任务中的TP和FP的定义就很明确了。

一般来说给定IOU阈值和分类阈值,当IOU和分类得分同时大于阈值的时候,且对应的GT框没有被匹配过,通常可以认为它是一个TP,反之为FP。然而,IOU阈值可以事先确定,但得分阈值是很难确定的,不同方法和不同得分分布也会产生影响。为了解决这个问题,Researcher们设计了目标检测上非常经典的一个指标mAP,即PR曲线的面积,通常做法是在PR曲线上取11个点,那么每一个recall下都会得到precision,整个面积就是最后mAP的性能指标。

随着目标检测领域的发展,大家开始越来越关注框的质量,于是提出了AP@IOU这一评价指标。例如COCO数据集所使用的指标就是AP@IOU0.5到IOU0.95,这种指标的表达形式为每个IOU下的mAP的均值,因此对于框的质量即IOU十分敏感。工业界所使用的指标又有所不同,是FPPI(False Positive Per Image Recall)下的漏检率和召回率。举个例子,FPPI@0.01代表每100张图片产生一个FP时能召回多少TP。

下图展示的是目标检测领域的发展脉络图。最初是利用手工设计的一些特征加简单的ML算法进行检测,到DPM灵活运用这些特征进行目标检测,再到深度目标检测,这个领域开始逐渐成熟。

图1 Development of Object Detection

由于时间原因,本次课程简要地挑选部分的文章和一些视角,来给大家介绍一下目标检测最新的进展。

第一个Topic是关于如何改善目标检测的框图质量。为什么会在2017~2019领域内的很多人尝试做这样一件事呢?原因是当时的学术背景集中在用COCO指标来评价方法,而COCO所用的指标对IOU十分敏感。比如,一个高IOU下的召回能够在评价指标时可以抵上多个低IOU下的召回。在这样的指标下去做改善框图质量是提高指标收益最高的几个方向之一。

具体来说,理想的检测结果的形式是IOU越高的框,正确分类的得分也应该越高。为了达到这一目标,我们能够把它分解成两种做法。第一种做法是给定一个得分固定的预测框,那么我们希望它的框越来越准,最后性能指标就会越来越高。第二种做法是给定比较准的预测框,我们希望其得分越来越高,那么TP就能够排在更多FP前,对指标十分有利。下图所示的是经典的两个算法。

图2 Box Refinement

另一个经典的子方向是探索如何在目标检测中提升有效感受野。这里不得不提deformable系列算法。这一系列算法提出了deformable convolution,能在3×3卷积时事先预测采样点的offset,然后用偏移过的采样点去采样输入,显著地改变了网络的神经元的感受野,性能上带来了飞跃式的提升。

图3 Effective Receptive Fields(ERF)

对于更深入理解检测任务中的有效感受野及DCN系列算法的有效性,我们进行了各种剖析性的分析,发现了一些有意思的事实。

比如我们可视化res50网络最后一层的一个神经元关于它输入的神经连接强度的分布图。横轴代表的是输入相对于输出神经元的相对像素的位置,纵轴代表连接强度。所谓连接强度就是输入跟输出上每有一个channel,每有一条连接的边,我们就认为它是1,把这些边求和即表示为连接强度。从图3可以看出,分类里所用的网络结构的理论感受野虽然很大,但连接稠密的区域实际上是很小的。

图4 Density of connnections of last layers of R50 on the input map

Deformable convolution能有效地改善感受野,于是我们在R50上对其进行了一些实验。DCN的做法是对其输入采样的9个点各自预测h和w方向的一个offset进行采样。我们把它分解成多个子结构offset,分别是中心位置的偏移和每一个点在h和w方向的dilation以及它最后的local偏移。我们发现每个点只预测dilation的两维数据就能得到3.2的提升,由此意识到dilation是deformable中相对关键的一步。

图5 Delve into DCN

我们又做了一个有意思的实验,就是我们把res50中的dilation-1换成2或3,发现连接强度的分布图产生了一个显著的变化。比如说它中间被压得越来越平,但是两边拖得越来越宽。因此我们得到了两个结论,dilation能显著地改变神经网络的有效感受野,其次,DCN中真正起作用的部分是通过改变dilation增大了有效感受野。

但是很遗憾deformable有一个小的缺点,这个缺点导致它在工业界的应用比较少:它是很难部署的,且对很多硬件不是很友好,很多加速库难以对其进行优化。究其原因,可以认为有这样几个因素:1. 同样的feature map上不同的点的dilation不一样。2. 同一个feature map的同一个点,当输入不同的时候,dilation也是不一样的。3. 预测的offset都是分数形式,在前传的时候涉及双线性差值。

如果我们希望能在工业上广泛使用,只有做到全局、静态且整数的dilation才可以。于是有了我们组ICCV 2019的工作,将DCN变成一个实际应用中可部署的网络。

图6 POD: Scale-Sensitive Practical Object Detection

我们设计了一个global dilation学习器,为神经网络的每个convolution学到静态的global dilation。其次,把空间上的插值替换成channel上的插值,在保证连接强度几乎一致的情况下做到了只用整形dilation就代替了浮点数dilation,抛弃了带来额外耗时的双线性差值操作。我们的方法可以对多种多样的现成网络结构进行调整,取得性能上的显著提升,并保证网络是完全可部署的。

NAS也是在目标检测里比较火热的一个角度。有越来越多的人尝试在目标检测中去使用NAS。例如efficientNet,提出了一种网络从小到大的scale up的一种方式。NAS-fpn则是在Neck的基础上用采样的方式去搜索。SpineNet提出不显式考虑backbone和Neck而把它们融为一体,看做一个单输入多输出的黑盒。

图7 NAS in Object Detection

Part 2 论文解读

1 超大规模真实世界目标检测的多标签和不均衡的现象的解决方案

首先总结这种超大规模的目标检测的特点:它的类别非常多,场景也是非常复杂且多样的,同时标注质量很成问题,很容易会出现标注缺失;另一个现象是真实场景下,物体很容易出现语义上的重叠;最后,一个大规模各种数据库都会有的就是长尾效应。我们从中间抽象出两个主要的矛盾来解决,一个就是类别分布问题,第二个就是长尾问题。

传统做法是使用softmax。当只进行单标签分类的时候并没有什么问题,但是当使用多标签的时候,对每一个正确的类别的得分,都希望它趋近于1的。但是使用传统的softmax在遇到多个正标签的时候,会互相产生压制,会发现其梯度会希望其趋向于m/1,也就是当网络预测产生了一个接近1的得分的时候,它损失函数的梯度更新反而会使得这个得分变小。

图8 Pain Point with Multi-Label Object Detection

本工作对softmax进行了修改,有效地改善了这个问题。我们首先对显式多标签的情况进行优化,保证从logits计算得分时,多个显式标签不互相影响,其次我们对于隐式多标签情况根据类别间的依赖关系,使用rij弱化了彼此之间的竞争关系。举例,一个目标实例是玩具车,类别上同时有玩具和有车的标签,在计算这个玩具的得分的时候,车的分数就在分母上被屏蔽掉了,这两者之间就不会产生互相压制了。

图9 A Solution: Concurrent Softmax

在数据库上长尾效应是非常严重的,可能会有上百万或者上千万个框,但实际上整个数据库里像高压锅这一类可能只有十几个框。所谓的soft balance实际上就是把non-balance和class-ware balance进行平滑。我们的网络先用non balance的方式先训练,再用soft balance方式去finetune,这两种方式结合在一起对性能有很大的提升。

论文地址:https://arxiv.org/abs/2005.08455

2 Revisiting the Sibling Head in Object Detector

学术上使用的benchmark与实际应用有一定的区别,实际的应用中会面临到更多的挑战,比如说要面对的object的类别会更多,同时它的分布可能会有长尾分布,可能会有更严重的遮挡,甚至于更复杂的背景。想要把这些挑战进行统一,就需要更接近于实际的更大规模的数据,OpenImage这样的数据是目前在学术的标准场景下能拿到的更接近于现实应用的数据。在这样的大规模数据集下就出现了很多的挑战,也是很多之前算法的痛点问题。

回顾一下分类任务和检测任务它们的区别。对于分类任务来讲,我们可以理解为它是一个single task的任务,它的目标就是给出一张图,需要去预测这张图里的类别。而对于检测任务来讲,在预测物体的类别的同时,还需要去回归出来物体所在的具体位置。可以理解为这是一个多任务学习的过程。不同的task之间的优化目标是不一致的,这就造成了这两个不同的优化目标之间,在共同训练的时候会带来一定的冲突。

图10 The challenges of large-scale visual detection task

更进一步,分类任务需要的信息跟回归任务也是有所区别的。比如说对于分类任务,可能只需要关注当前图像里语义信息更丰富的地方,就能判断出当前物体的类别。而对于回归任务来讲,需要更精确的去看到这个物体的边界信息,才能得到一个更准确的边界框。

在这样的冲突背景下,本工作通过实验验证了这个现象。我们发现对于分类任务来讲,它更关注的是物体语义信息更丰富的地方。而对于回归任务来讲,其更关注的是更边界的地方。

这样的背景下,我们很自然地去想到要去减少这一冲突。一个直接的想法就是要把两个task从输入和特征提取上都进行解耦。解耦之后就很自然的得到下面的优化过程。

首先,对于分类任务和回归任务要用不同的proposal,会根据原始的P去衍生出两个任务适用的候选区:Pc、Pr。我们希望的是Pc能够帮助分类任务来更多的关注到信息与信息丰富的地方,而Pr能够去帮助回归任务,来更多的关注到物体边界信息所在的地方。

其次,需要从特征提取进行解耦,针对于分类任务的设置成Fc,针对于回归任务的设置成Fr。在这样很明确的优化条件设计下,我们就可以把这一思想嵌入到Faster-RCNN的head里。

图11 TSD (Task-aware spatial disentanglement)

如何由原始P得到Pc和Pr呢?实际上这里也可以直接用一种非常简单的偏移量方式。通过原始P计算delta c的偏移量,把它变到Pc。通过delta r的偏移量,把它变到对于回归任务比较友好的Pr。对于偏移量的生成,实际上可以通过三层的Fc这样一个非常小的单元来进行实现,它带来的参数量消耗非常小。更进一步,为了能够保证得到更好的Pc以及Pr,我们又进一步加了渐进约束:PC,它用来约束的生成的Pc和Pr是优于原始P的。

在得到整套的设计之后,也可以跟其他相关的研究去分析。首先是比如经典的IOU net,double head以及Cascade RCNN,它们的做法实际上都是为了能够让检测变得更好,让回归更准确。

图12 TSD (Task-aware spatial disentanglement)

我们的方法与这些方法最大的区别就是TSD不仅是在这两个不同的task之间进行了特征提取的解耦,同时它对于两个不同的任务的输入上也进行了区分,也就是说在输入上就最大限度地让两个任务分别各自去寻找最适合自己的那一部分信息。这里是最大的区别,也能够有效地让两个task之间的conflict减少,从而得到更好的性能提升。

图13 Experiments

更进一步来说,TSD算法与当前的这些方法都是具备一定的互补性的,也就是说他们是可以有效的直接用TSD这样一个head去替换掉这些方法里的head,来进行即插即用的使用。

为了更方便的表示,本工作把TSD做成一个即插即用的head去代替传统的head,在不同的backbone都进行了实验,可以发现从小模型到更大一些的模型,它都能够比较有效稳定的在额外的计算的cost不超过10%的情况下,带来一个3~4个点的稳定提升。为了验证它在不同的数据,不同规模的数据集之间的有效性,我们在更大规模的数据集上进行了实验。可以看到在大规模的数据集下,在不同的backbone上,它仍然可以稳定带来3~4个点的提升。

图14 Experiments

最后再来分析一下,前边通过Pc和Pr针对不同任务提取各自适合的区域,最终使分类和回归精度同步提升。在不同的IOU的测试标准下,验证了它性能的提升幅度,可以发现当IOU限制得越严格,例如到0.9的幅度下涨点更明显,它能够在不同标准下把检测器的性能回归得更加准确。最后我们也在标准的数据集上跟一些SOTA方法进行了对比,并且backbone性能越强,TSD带来的提升也会更高,提升也是非常稳定的。

图15 Experiments

本工作发现在Faster-RCNN的head里,由于它的multi-task机制,不同task优化目标有区别,所以造成这两个task之间有一定的冲突。因此我们很自然的想到从输入和特征提取上去解耦这两个task,提出了TSD算法。同时为了保证TSD能够对于解耦学习的更好,也进一步加入了PC约束,能够让保证TSD能够稳定有效的去提升不同的backbone的性能。

论文地址:https://arxiv.org/pdf/2003.07540.pdf

Part 3 Q&A

Q:Dilated改的是conv6中3*3卷积的膨胀率吗?

A:事实上任何一个conv都更改了膨胀率。我们会设计一个网络学习每一个conv最适合的膨胀率,所以会给所有conv都加上学习器,如果结果跟1接近,就不会去使用该conv,而保留偏差值超过0.1的conv。

Q:如何定义超大规模?

A:首先在数量上要达到百万或千万级别,同时类别也要达到很大的规模。

Q:Pc和Pr是通过学习到一个偏移量来进行区分吗?那两者的数据分布是否不太会发生本质上的变化?

A:设计时考虑到了先验信息,对于分类任务,我们更多关注的是一个物体分类的置信度高低;对于回归任务,考虑的是准确框的准确度,有规则的形状。在设计时Pc和Pr都是通过学习到偏移量来设计的,Pc的偏移量是不受约束的,proposal的每个位置都可以有一个偏移量,导致得到的信息提取的过程是不规则的位置。Pr使用了统一的偏移量,要求偏移后的proposal还是规则的形状,方便回归任务的学习。数据分布的会有一定的变化,分类任务更多关注到信息更丰富的地方,而回归任务关注到边界。

Q:TSD PC机制会使原始头效果会受到抑制么?

A:PC loss时对原始头没有影响,在整套训练下来效果不会有变化,会与baseline保持一样的性能。

Q:目标检测的时候,如何平衡COCO数据集中的小目标和大目标的检测?

A:它们的不平衡体现在几个方面:首先采样就无法达到平衡,小尺度的feature map和大物体的正负比例不同;小目标匹配的anchor数很少;大尺度可以获得很多参数和计算量,但小尺度无法获得;小尺度的权重需要同时适应上层的问题,也需要解决自己的问题。可以从这四分方面的不平衡上予以考虑。

 

「商汤泰坦公开课」公众号后台回复“011”,即可获取相应的课程资料哦!

 

相关阅读:

  1. CVPR 2020 Oral | 真实世界下的大规模多标签目标检测算法解读:https://mp.weixin.qq.com/s/9Vd_KwWYiKj8TPKtjTSa7w
  2. CVPR 2020 | 商汤科技冠军解决方案核心算法TSD解读:https://mp.weixin.qq.com/s/I75FJE-W7tIV4qF42DNigw