顶会竞赛最后5天被Facebook超越,又大比分反超夺冠是什么体验?

众所周知,参加顶会竞赛是当今AI研究人员锻炼自身、验证已有学术成果的一大舞台。从2017年到现在,旷视研究院在全球顶会累计荣获28项世界冠军,好奇的同学们肯定想知道其中的经验与技巧。

为此旷视南京研究院研究员赵冰辰与大家分享了其团队在 CVPR 2020 iWildCam 项目夺冠的经历,同时也介绍了他们在本次比赛中针对 Camera Trap 数据的特点设计的方法及冠军方案。

值得一提的是,虽然旷视南京研究院在整个参赛过程中持续领先,但就在最终截止日期前5天,Facebook突然大比分反超。经过对现有模型的快速分析,团队通过序列和日期信息大幅提升了模型性能近10个点,在48小时内重新登顶,并夺得iWildCam的全球冠军。

本文回顾了此次比赛的基本背景、团队方案,并介绍了团队总结的参赛经验,希望能为同学们带来启发。

背景

 

iWildCam竞赛隶属于 CVPR 2020 FGVC workshop, 其目的是利用部署在野外无人操纵的 Camera Trap 来识别野生动物,从而辅助对野生动物的研究与保护。该比赛的难点在于,由于 Camera Trap 的拍摄机制是通过热感或运动来触发相机,因此成像效果与ImageNet或者是iNaturalist中的图像有很大区别。

 一个典型的camera trap设备

例如下图,每张图片中都存在动物,但是由于 camera trap 无人操纵的特性,获取的画面会受到光照、模糊、小ROI、遮挡、奇异视角、或者动物本身保护色等诸多因素的干扰。 可以发现,定位到这些动物并且给出正确分类,即使对人类来说也比较困难。

Camera Trap数据的另外一个特点在于画面背景。由于camera trap固定在某个区域进行拍摄,因此由特定camera trap所采集到的图片背景相似度极高。如下图,Camera-1和Camera-2分别对应部署在两个位置的camera trap,可以发现同一个camera拍到的图片背景基本一致。而相应的,不同camera获取的背景差异显著。 

因此,这对分类模型的泛化性提出了极高的要求。iWildCam数据集总共包括263个类别,28万张图片,其中训练集441个camera trap,测试集111个camera trap。主办方将全部552个位置的camera trap分成为train set 441个,和test set 111个,这也就是说测试集图片全部来自训练集之外的camera trap 。

 

另外,类别数据的长尾分布也是必须考虑的问题。

 

因此可以总结,在Camera Trap场景下,主要存在三个问题:

 

  1. Camera Trap无人操作导致的图像模糊,遮挡等问题。

  2. 来自训练与测试集不同背景所导致的泛化问题。

  3. 野生动物分布带来的长尾问题。

  

针对上述问题,旷视南京研究院在此次参赛中进行了逐项攻克。

  

 

挑战一:ROI尺寸过小

 

如前所述,iWildCam的第一个挑战来自于camera trap所捕获的画面,即动物图片经常存在过小或者被遮挡等问题。 因此比赛主办方提供了Mega Detector(一个微软提供的Camera Trap动物检测器,输出类别只有animal和background)。

 

因此,旷视南京研究院用Mega Detector来提取图像的ROI区域,从辅助进一步的分类工作。 

一种简单的利用方式是将Mega Detector预测的BBox 裁剪出来,同原图一起送给网络进行训练,这样可以有效环节ROI 尺寸过小的问题。 

  

不过这种方案的缺陷在于,如此训练分类网络,会使得网络获得两个scale完全不同的输入,一个是原图,一个是BBox裁剪出的图像,这会对分类网络学习特征带来一定的干扰。

 

为此,团队修改了策略,同时训练两个网络。分别输入原始图像,和Mega detector裁剪出的置信度最高的bbox图像。 在预测阶段,再将网络的输出进行Ensemble,从而可以同时捕捉到原图全局的信息和BBox中前景的信息。

  

 

挑战二:不同背景造成的问题

 

除过ROI 储存过小之外,另一个问题是训练集的camera trap 取景位置和测试集的camera trap 不相交所导致的背景差异问题。 

训练集图片均来自于蓝色点表示的区域,它和红色区域没有相交。 

因此这会造成domain shift的问题。即在训练地表现好的模型并不一定也会在test地有同样表现。因为模型有可能学到一些和location相关的信息,而它们不是可以用于分类动物的通用信息。 

  

此外,与正常的domain adaptation不同,iWildCam 的训练集包括很多不同domain(如果将每个camera trap地点作为一个domain,则训练集包含441个,而测试集包含111个)。

  

因此,如果能利用训练集中的位置标注来帮助网络学习location invariant的特征,那么网络就可捕捉更多与位置无关而和分类相关的信息。 

  

对此,domain adaptation领域非常著名的论文

Unsupervised domain adaption by backpropagation为团队提供了启发。

如上图首先可以假设,如果在原来的2048维上加一个额外位置(location)的classifier,那么网络提取的特征就会倾向于将不同location的特征相互推远。如上方右图所示(不同形状表示不同类别,不同颜色表示不同),虽然每个类别的特征之间有分类的可分性约束,但是location之间的相互排斥也会导致一些location图片的特征被推到一个不太有利于分类的局面,从而导致网络学到的特征并不能实现location invariant,从而在测试集上表现欠佳。 

  

对此,文章提出一个非常简单的梯度翻转的技巧来实现location invariant。 

如上方左图所示,在梯度反传经过location classifier时将梯度乘-1,从而实现翻转梯度的方向。 

因此在右图可以看到,原本的推开不同location之间特征的梯度经过翻转后,会将其一起拉近。在加上分类的约束后,可以保证网络学到的特征表示实现location invariant,并且还能保证分类的效果,提高网络对之前未见的location的泛化性能。 

  

 

挑战三:数据长尾分布

上方指数图展示的是数据的分布情况,可以看到数目最多的类别有超过十万张图,而最少的类别可能只有不到十张图片,一般而言,将类别数多的类别称为head类,类别数少的类别称为tail类 。

因此,如果直接随机采样batch来训练分类模型,会见到很多head类样本,而tail类样本则很少见到,这样会使得模型更偏向于预测head类而不是tail类,从而损伤网络的表示能力。 

 

因此,对于长尾分布,一般有两种解决方案,一种是Re-Sampling, 另外一种是Re- Weighting。   

所谓Re-Sampling,即指改进data sampler对数据的采样概率,来保证用来训练的数据的平衡性。具体做法如上方右图,对所有的class以相同概率进行采样,采样出class之后在每个class内部再进行数据采样,这样便可以保证每个类在网络训练时的次数是相同的。

Re-Weighting指的是对数据进行随机采样,且再计算loss时,对不同类的样本乘上不同权重。该权重等于,每个样本对应类别的数量比上所有图片数量的倒数。例如对于对于aeroplane,有五张图片,总共十张图片,则对于aeroplane的加权就是10/5=2。如此操作,tail类的图片虽然被采样到的机会少,但是loss的加权大,从而可以实现平衡。 

  

不过对于这两种解决长尾问题的策略,旷视南京研究院在CVPR 2020上的 Oral论文“BBN”指出,虽然RW和RS可以改善分类器性能,但是会影响backbone对数据的表示能力。  

如这上图所示,为了研究RS和RW对CNN 特征表示的影响和对分类器的影响,文章先用一种训练策略训练CNN backbone,然后再把backbone固定,重新训练分类器。 

  

可以发现当分类的训练方式不变时,backbone使用CE的训练方式点数最高,而当backbone的训练方式固定不变时,使用RW和RS的方式训练分类器效果比较好。 

  

这说明RW和RS的方法虽然可以提高网络对长尾数据的表现,但是同时也会一定程度上损害网络的表示能力。 

为此,BBN解决该问题的做法是,将网络分成两个分支,一个分支接受从uniform sampler 采样出的数据,另外一个分支接受从reversed sampler 采样出的数据。所谓reverse sampler,就是把每个类别被采样到的概率取倒数,从而使得tail类更容易被采样出来。 

  

sample出两个batch的数据之后前传经过两个网络分支,进一步对两个分支的特征进行mixup,最后做分类loss。需要注意的是,BBN为了不损害特征表示,设计了一个adaptor,该adaptor会随着训练epoch的增加越来越倾向于增大reverse sampler 分支在mixup中的比重。 

  

这样BBN可以保证在训练初期,网络通过正常的uniform sampler对数据学到一个良好的表征,在训练后期,这个表征会对reverse sampler 采样出的数据进行进一步的学习。 

  

虽然BBN可以很大程度上减缓长尾数据对网络特征表示的影响,但是与此同时,BBN需要同时训练两个网络分支,占用两倍于原来的显存,并且因为这样batchsize小了,训练时间需要更长,对于比赛而言略需改进。

因此,参赛团队为了快速迭代,使用了一个BBN-style 的mixup策略。通过分别从uniform sampler和reversed sampler中采样,之后将两个sampler sample出的batch进行mixup之后交给网络训练,这样网络在训练时可以一定程度上见到足够多的head类和tail类样本,并且mixup本身也可以起到增强网络泛化性的效果,从而可以提高网络对长尾数据的表现。   

 

测试阶段的增强策略

 

除上述工作外,在测试阶段,团队还使用了一个增强策略tencrop。它将输入图片的四个角落和中心进行crop获得原图的五个crop,之后将图片进行翻转再crop,总获得十个crop。通过将这些crop输入给网络进行前传,然后将十个预测结果进行平均,从而能够得到最后的预测结果。 

  

下图展示了旷视南京研究院参赛团队使用的所有的策略和它们在leaderboard对应的得分。

首先是224分辨率的ResNet50  baseline。该baseline使用交叉熵loss进行训练,可以在leaderboard得到65.6%的分数;第二个模型对分辨率扩大了一倍,使用448分辨率输入,使用交叉熵loss训练,可以看到扩大分辨率带来的收益非常大,在leaderboard上涨了接近十个点。 因此扩大分辨率这也是比赛很通用的CV的策略,基本上都可以实现涨点。 

  

当换用EfficientNet-b4,输入分辨率也固定在了448,可以发现b4相对于ResNet50 的性能更好,同样设置下涨了两个点。 进一步,当在b4上加入测试时的tencrop,结果提升了一个多点。 

  

当开始将loss函数替换为label-smooth,且开始在训练时加入BBN style的mixup,网络继续上涨3个点。 此后一段时间内,点数都没有再得到提升,经过讨论,团队开始考虑location信息的影响,并设计出使用gradient reversal layer进行对location信息的混淆,突破了这个瓶颈,继续上涨2个点。 

 

最后一个改进点涉及MegaDetector的BBox信息,使用上文提到的BBox Ensemble策略进一步实现了涨点。并且在这过程中,团队还观察到,随着Ensemble的进行,权重应该适当偏向于BBox内的物体,这样性能会更好。 到此时,团队的得分在总榜上位列第一,并持续了近1个月。期间虽然也尝试对模型进行改进,但并没有更新的发现。

 

到5月22日(最终截止日期前5天),Facebook团队突然以大比分反超。作为应对,旷视南京研究院团队紧急应对现有模型方法进行了全面分析,并发现之前一直没有利用的一个重要信息,即视频的序列信息。

事实证明,当利用了序列信息后,模型的性能大幅提升了近10个点。对此赵冰辰也半开玩笑地说道:“存在一个强大对手的最好价值在于,它让你不安于现状,逼你跳出舒适圈,看到更好的自己。”

 

由此,旷视南京研究院团队实现了被Facebook大幅超越,并在48小时内又以更大比分优势重新登顶,最终夺得iWildCam全球冠军壮举!

 

另外,为了帮助大家在参与顶会竞赛时更好地进行团队配合、项目管理,赵冰辰在下方还展示了其团队在比赛期间各个模块的工作,以供同学们参考。

传送门 

简历投通道请点击→这里

欢迎大家关注如下 旷视研究院 官方微信号????