SoCo: 通过目标级对比学习实现整个目标检测模型的预训练

2021 年 11 月 16 日 极市平台
↑ 点击 蓝字  关注极市平台

作者丨论文作者 、MSRA魏芳芸等
来源丨每日CV
编辑丨极市平台

极市导读

 

图像级对比表征学习已经被证明是处理迁移学习问题一种非常有效的通用模式,但如果我们对某一特定的下游任务感兴趣,这种对于迁移学习的通用性就牺牲了特殊性。本文提出了自监督的上下游任务应该对齐的原则,认为不对齐是一种次优的方式>>加入极市CV技术交流群,走在计算机视觉的最前沿


图像级对比表征学习已经被证明是处理迁移学习问题一种非常有效的通用模式,但如果我们对某一特定的下游任务感兴趣,这种对于迁移学习的通用性就牺牲了特殊性。本文提出了自监督[1]的上下游任务应该对齐的原则,认为不对齐是一种次优的方式。


本文遵循这一设计原则专门为目标检测任务设计了一种预训练方法,通过三个方面来实现目标检测上下游任务的对齐:

1)通过selective search bounding boxes方法获得的候选目标来实现目标级表征学习;

2)预训练的网络结构中包含目标检测所使用的相同的专用模块,如FPN;

3)所提预训练方法具备目标检测所需的属性,如目标级平移不变性和尺度不变性。


本文将所提方法命名为SoCo(Selective Object COntrastive learning),使用Mask R-CNN框架在COCO检测任务上取得了SOTA的迁移表现。


journal: NeurIPS 2021 Spotlight

paper: https://arxiv.org/abs/2106.02637

code: https://github.com/hologerry/SoCo


注[1]:自监督(self-supervised learning)属于无监督(unsupervised learning)的一种学习范式



一、SoCo方法动机

预训练(pretraining)和 微调(finetuning)已经是计算机视觉中训练深度神经网络的主导范式,下游任务通常利用在大型标记数据集(如ImageNet)上学习的预训练权重进行初始化,因此有监督的ImageNet预训练在整个领域中非常普遍。最近自监督预训练已经取得了相当大的进展,减轻了对标记数据的依赖。这些方法旨在通过图像级的上游任务(如实例识别)来学习各种下游任务的通用视觉表示。最近的一些工作观察到,图像级表示对于密集预测任务(如目标检测和语义分割)是次优的一个潜在的原因是,图像级预训练可能过度拟合了整体表示,无法学习图像分类之外的重要属性。


本文旨在实现一个与目标检测相一致的自监督预训练。在目标检测中,边界框被广泛采用作为目标的表示,目标检测的平移不变性和尺度不变性通过边界框的位置和大小来反映。图像级预训练和目标检测的目标级边界框之间存在明显的表示差距


基于上述分析,本文提出了一个目标级的自监督预训练框架,称为 S elective Object COntrastive learning (SoCo),专门用于包含下游任务的目标检测整个模型的预训
为了将目标 级表示引入预训练,SoCo利用现成的 selective search方法 生成 object proposals 与以往的图像级对比学习方法将整个图像视为一个实例不同,SoCo将图像中的每个object proposal视为一个独立的实例。 这使我们能够设计一个新的上游任务来学习具有与目标检测属性相兼容的目标级视觉表示。 具体地说,SoCo构造目标级视图,这些视图对同一对象实例的比例和位置进行扩增, 对比学习的目的是最大限度地 提高扩增视图中同一对象的相似性。

目标级表示的引入还允许我们进一步弥合网络架构中预训练和微调之间的差距。 目标检测通常涉及专用模块,例如特征金字塔网络(FPN),以及专用子网络,例如R-CNN头。 与仅对特征主干进行预训练和迁移的图像级对比学习方法不同,SoCo对检测器中使用的所有网络模块进行预训练, 因此检测器的所有层都可以被很好地初始化。

鉴于目标检测所需的平移和尺度不变性,SoCo在预训练阶段引入能够保持这一属性的结构和训练方案,进一步带来了性能的提升,这在之前的自监督学习工作中一直被忽视。

从下文实验部分可以看出,SoCo实现了从ImageNet图像分类到COCO目标检测SOTA的迁移性能。

二、SoCo方法细节

SoCo是一种新的对比学习方法,该方法致力于最大化同一目标不同扩增后的目标级特征表示的相似性。同时在设计目标级上游任务时,本文将结构对齐和目标检测的重要属性引入到预训练中。本文在R50-FPN为主干的Mask-RCNN上执行转移学习来阐明SoCo核心设计原则,同时应用于R50-C4结构进一步证明了该方法的可扩展性和灵活性。

图1:SoCo概览。SoCo为每一幅原始图像用 selective search方式生成 object proposals集,在每一步训练中随机选择   个proposals,为同一目标构建三个位置和尺度不同的视角   ,采用FPN主干网络和RoIAlign分别编码图像级特征和抽取目标级特征, Object proposals根据它们的图像面积被安排到不同的金字塔层级,在目标级别来执行对比学从而学习目标检测的平移不变性和尺度不变性,目标网络通过在线网络的指数移动平均(EMA)进行更新。

2.1 方法细节整体介绍
SoCo概览如图1所示,其希望从两个方面将预训练与目标检测对齐: 1 网络结构对齐 2) 检测属性对齐 。具体来说,除了像现有的自监督对比学方法预训练主干网络外,SoCo还预训练目标检测器中使用的所有网络模块,例如FPN和Mask R-CNN框架中的头部,因此检测器的所有层都可以被很好地初始化。此外,SoCo致力于学习目标级表示,这种表示不仅对目标检测非常有意义,而且也对平移和缩放具有不变性。为了实现这一点,SoCo为同一个目标构建多个扩增的视图来获得目标尺度和位置的多样性,并对特征金字塔的不同层应用尺度感知(scale-aware)的分配策略。最后,用目标级对比学习来最大化同一目标不同扩增视图的特征相似性。

2.2 数据预处理
候选目标生成
SoCo使用selective search(一种考虑颜色相似性、纹理相似性、区域大小和区域间匹配的无监督目标建议生成算法)为每一幅原始图像生成目标候选集, 然后将每一个候选目标(object proposal)表示为一个 bounding box   ,   表示bounding box的中心坐标,   和   分别对应bounding box的宽和高,proposals只保留满足如下条件的:1)   ;2)   ,   和   分别为输入图像的宽和高。Object proposals生成的步骤是离线执行的,在每一次训练迭代中为每一幅输入图像随机选择   个proposals。

视图构建
SoCo使用三个视图,分别命名为   、   、   ,   为输入图像缩放到   ,   通过   在[0.5, 1.0]范围内随机裁剪然后缩放到和   同样的尺寸获得,超出   边界的 proposals进行丢弃处理,   通过   下采样到固定的尺寸(例如   )获得,所有这些视图的bounding boxes根据RGB图像的裁剪和缩放进行相应转换(如图1  Data Preprocessing所示 )。最后每一个视图再进行随机和独立扩增,SoCo采用BYOL的扩增流程,但是除掉了随机裁剪扩增,因为空间变换已经应用在了三个视图上。最终同一object proposal通过视图扩增使得其在不同视图中的尺度和位置是不同的,这使得模型能够学习平移不变和尺度不变的目标级表示。

边框抖动
为进一步增加不同视图中object proposals的尺度和位置差异,SoCo在生成的proposals上采用边框抖动策略来进行目标级数据扩增。具体来说,对于一个 object proposal   ,随机生成一个抖动的边框   ,其中   ,   ,   ,   ,   ,边框抖动以   的概率随机应用在每一个proposal上。

2.3 目标级对比学习
SoCo的目标是将预训练与目标检测对齐,本文使用具有代表性的框架Mask R-CNN with FPN来阐明SoCo的关键设计原则。

预训练结构与目标检测对齐
按照Mask R-CNN,SoCo使用带有FPN的主干网络作为图像级特征提取器   。FPN的输出表示为   ,步长为   ,   由于分辨率很低并没有使用。对于边界框表示   ,应用RoIAlign提取对应尺度级别的前景特征。为了进一步结构对齐,在预训练中额外引入了R-CNN头   。从图像视角   提取的边界框   的目标级特征   示为公式(1): 
SoCo使用两个神经网络进行学习,分别称之为在线网络和目标网络。在线网络和目标网络共享相同的结构但权重集不同,具体来说,目标网络的权重   、   是在线网络参数   、   在动量系数   下的指数移动平均(EMA)。将图像的Object proposals集表示为   ,视图   中的proposal   的目标级表示定义为   ,   在   、   中的表示定义为   、   ,他们分别通过如下公式(2)(3)提取在线网络特征和目标网络特征: 
    

SoCo按照BYOL中使用的方法进行对比表征的学习,在线网络头后接投影器   和预测器   来获取潜在 embeddings,   和   都由两层MLPs组成 ,为了避免一些琐碎的处理目标网络头只接了投影器   ,用   ,   ,   分别表示目标级表征   的潜在embeddings,如下公式(4)所示:  第   个object proposal的对比损失定义为如下公式(5):   每幅图像的总损失函数表示为公式(6):  其中   表示 proposals的数量。为了均衡等式(6)的损失   ,SoCo通过分别馈送   到目标网络和   到在线网络来计算   ,在每次训练迭代时通过执行一个随机的优化步骤来最小化   。

尺度相关分配
Mask R-CNN with FPN 使用GT boxes和anchors的IoU来确定正样本,分别在   对应的   像素面积上定义anchors,这意味着一定范围内的GT boxes被指定给特定的金字塔层。受Mask R-CNN启发,SoCo提出了一种尽可能使预训练模型学习目标级尺度不变性表示的尺度相关(scale-aware)分配策略。具体来说,SoCo安排像素面积在   范围内的object proposals分别到   ,最大proposal尺寸是   是因为所有的视图都缩放到了不大于224的固定尺寸,这样做的好处是能够促使不同尺度的同一object proposals通过对比学习来学习一致的表示。因此SoCo能够学习目标级尺度不变的视觉表示,这对目标检测是非常重要的。

预训练引入目标检测特性
目标级的平移不变性和尺度不变性是目标检测的最重要特性,也就是说属于同一类别的目标的特征表示应该是对尺度和位置变化不敏感的。这两个特性分别对应SoCo的两个实现:1)   是   的一个随机裁剪块,随机裁剪引入了框位移,因此   和   之间的对比学习促使预训练模型学习位置不变表示;2)然后   是由   下采样生成,这对object proposals做了尺度扩增,通过尺度感知分配策略,   和   之间的对比损失引导预训练学习尺度不变的视觉表征。

其他目标检测器扩展
除了带FPN的Mask R-CNN外,SoCo可以很容易地扩展到其他检测器。 本文将SoCo应用于C4结构的Mask R-CNN(一种流行的非FPN检测框架),进行如下三个方面的修改
1)对于所有object proposals,在C4上执行RoIAlign;
2)用整个第5个残差块替换R-CNN头;
3)丢弃视图   保留剩余的   和   用于目标级对比学习。
通过实验和与SOTA方法的比较证明了SoCo的可扩展性和灵活性。

三、实验

3.1 预训练设置
结构
通过引入object proposals,减少了预训练和下游检测微调之间的结构差异。Mask R-CNN是评估迁移学习性能的常用框架,SoCo采用Mask R-CNN框架用R50-FPN和R50-C4来详细证明所提检测对齐方法的可扩展性和灵活性。SoCo-R50-FPN: ResNet-50-FPN用作图像级特征编码器,然后RoIAlign分别以步长   在特征映射   上抽取RoI特征,最后根据object proposals的图像面积,每个RoI特征按照Mask-RCNN的方式通过头部网络转换为目标级表示。SoCo-R50-C4: 在标准ResNet-50结构上,SoCo在第4个残差块的输出上插入RoI操作,整个第5个残差块被作为头部网络来编码目标级特征。投影网络和预测网络都是两层MLP,包括输出维度为4096的线性层、BN和ReLU,最后是一个输出维度为256的线性层。

数据集
SoCo采用包含约128万张图像的ImageNet作为自监督预训练的数据集。

数据增强
SoCo在所有构建好的视图上采用BYOL中所使用的流程进行数据增强,包括随机水平翻转、颜色抖动、高斯模糊、灰度化、曝光操作。由于所有视图上已经应用了空间变换,所以这一步并没有再进行随机裁剪增强。

优化方式
预训练所有消融研究训练次数为100 epochs,和SOTA方法分别对比了100 epochs 和400 epochs的结果,优化器采用LARS,学习率下降策略采用cosine,warm-up轮次为10个epochs,基础学习率   ,   ,权重衰减因子设置为   ,全部batch size为2048平均分配到16块Nvidia V100 GPUs上,训练目标网络时动量系数   从0.99增加到1,采用同步BN。

3.2 迁移学习设置
采用COCO和Pascal VOC数据集进行迁移学习,采用 Detectron2作为基础代码。

COCO目标检测和实例分割
SoCo在COCO train2017 包含约118K张80类的目标检测和实例分割图像上进行迁移学习,在val2017上进行验证,模型采用Mask R-CNN R50-FPN和R50-C4,目标检测和实例分割评测指标分别采用   、   、   和   、   、   ,训练策略采用   ( ~12 COCO epochs )和  与SOTA方法进行比较,所有消融实验采用   策略

Pascal VOC目标检测
SoCo在Pascal VOC trainval07+12 包含约16.5K张20类的目标检测图像上进行迁移学习,在test2007上进行验证,目标检测评测指标采用   、   、   。

优化方式
迁移学习除了projection and prediction外的所有预训练权重加载到目标检测网络中进行迁移,按照MoCo v2的方式,包括新新初始化的BN层在内的所有层使用同步BN进行finetuning,优化器采用SGD,batch size为16(2 images/GPU    8GPU)。对于COCO迁移,权重衰减系数采用   ,进行1000次学习率从0线性增加到0.02的warm up迭代,然后在总训练时的2/3和8/9分别下降10倍。对于Pascal VOC迁移,权重衰减系数采用   ,基础学习率采用0.02,然后在总训练时的3/4和11/12分别下降10倍。

3.3 与SOTA方法对比
Mask R-CNN with R50-FPN on COCO
如表1所示, 100-epoch预训练策略下,SoCo达到了和SOTA方法同等部分指标超过的水平,在400-epoch预训练下取得了指标的全面超越。SoCo*是增加了一个视角   的增强版本,和   一样,    通过   随机裁剪获得并缩放到   ,然后执行和   、   同样的前传处理,和SoCo相比性能进一步提升

Mask R-CNN with R50-C4 on COCO
R50-C4是为了验证SoCo方法的可扩展性和灵活性,从表2可以看出,没有任何花哨的操作,SoCo同样获得了全面超越的SOTA性能。

Faster R-CNN with R50-C4 on Pascal VOC
使用Faster R-CNN R50-C4在 Pascal VOC上进一步验证了SoCo的迁移能力,如表3所示,SoCo取得了59.7的   ,超越监督预训练baseline 6.2   ,性能同样达到SOTA。

3.4 消融研究
为进一步了解SoCo的优势,通过检查目标级对比学习的有效性、预训练和检测对齐的有效性、不同超参数进行了消融研究。网络架构采用Mask R-CNN,预训练采用100-epoch策略,迁移学习采用COCO   策略,对超参数研究时固定以下差参数:      ,batch size 2048,momentum 0.99, proposal number    ,使用 box jitter 和 scale-aware assignment,FPN和R-CNN头都进行预训练和迁移, selective search 用作 proposal 生成器。

将预训练与目标检测对齐的有效性
表4通过逐一 研究每一部分证实了将预训练与目标检测对齐的有效性。 Selective Search 表明了目标级对比学习的有效性,FPN and an R-CNN Head 表明了结构对齐的有效性,Scale-aware Assignment 表明了保持尺度不变性的有效性, Multiple Views 进一步表明了SoCo在学习尺度不变性和平移不变性上的有效性

超参数消融研究
表5展示了SoCo的超参数敏感性实验结果。

表5(a)视图对   的分辨率进行了实验,发现SoCo对   的图像大小并不敏感,采用   作为默认分辨率是因为其迁移表现稍好且训练计算成本较低。

表5(b)对训练batch size进行了实验,发现过大过小的batch size都会有损精度,于是采用2048作为默认值。

表5(c )说明了object proposal生成策略的有效性。实验发现使用单个随机边界框学习目标级表示,SoCo仍然可以获得满意的结果,作者认为这是因为在随机生成的边界框上执行的RoIAlign操作也引入了对象级表示学习,同时认为这一事实间接证明下游目标检测器可以受益于涉及目标级表示的自监督预训练。然而单个随机边界框的结果仍比selective search生成的单个object proposal稍差,对于随机生成4个和8个边界框的情况,嘈杂和无意义的proposals会导致预训练发散。 从表中还可以看出应用更多由selective search生成的object proposals(   和   )是有害的,作者认为一个潜在原因是ImageNet数据集中的大多数图像仅包含少数目标,因此更大的   可能会创建重复和冗余的proposals

表5(d)对EMA的动量系数   进行了实验,0.99获得了最好结果。

四、总结

本文提出了一个新颖的目标级自监督预训练方 法SoCo(Selective Object COntrastive learning ),旨在将预训练与目标检测进行对齐。首先不同于之前将整幅图像作为一个实例的图像级对比学习方法,SoCo将使 用selective search算法生成的每一个 object proposal当成一个独立的实例,这使得SoCo能够学习目标级视觉表示。然后通过两种方式获得进一步的对齐:一个是将预训练和下游目标检测的网络对齐,这使得检测器的所有层能够被很好的初始化;另一个是将目标检测的重要属性如目标级平移不变性和尺度不变性引入预训练。SoCo使用Mask R-CNN检测器在COCO检测上取得了SOTA的迁移表现,在  two-stage 和 single-stage 检测器上的实验也表明了SoCo算法的通用性和可扩展性。

五、点评

1. SoCo应该是首次实现了整个目标检测网络的预训练,为了达到这一目标所采用的任务对齐方法很具有创新性和启发性,其思想也具有很强的通用性和指导意义。
2. SoCo虽然全面超越了之前SOTA方法的指标,但其主要是基于Mask R-CNN with R50-FPN和Faster R-CNN with R50-FPN利用Detectron2框架做了充分实验和论证,其在RetinaNet系列、YOLO系列、FCOS系列上的迁移表现和易用性还未知,期待后续相关工作。
3. SoCo预训练object proposals是用selective search方法离线生成,并没有做到online end-to-end训练,其可以优化为online end-to-end训练并打造一个专门用于目标检测网络预训练的框架。
4. 有一个不成熟的疑问:在ImageNet上做自监督预训练然后迁移到COCO,会不会存在ImageNet训练集里包含类似COCO验证集里的图片或者类别,从而有助于了COCO验证集精度的提升?另外直接用COCO训练集先做预训练效果会如何?欢迎小伙伴们探讨和指导!

如果觉得有用,就请分享到朋友圈吧!

△点击卡片关注极市平台,获取 最新CV干货

公众号后台回复“88”获取严彬:STARK-

基于时空Transformer的视觉目标跟踪PPT下载


极市干货
神经网络: 视觉神经网络模型优秀开源工作:timm库使用方法和最新代码解读
技术综述: 综述:神经网络中 Normalization 的发展历程 CNN轻量化模型及其设计原则综述
算法技巧(trick): 8点PyTorch提速技巧汇总 图像分类算法优化技巧


CV内推社群邀请函 #

△长按添加极市小助手
添加极市小助手微信(ID : cvmart4)

备注:备注:姓名-学校/公司-内推(小极-极视角-内推)


即可申请加入极市内推技术交流群,获得最新大厂内推和面经干货


每月大咖直播分享、真实项目需求对接、求职内推、算法竞赛、干货资讯汇总、与 10000+来自港科大、北大、清华、中科院、CMU、腾讯、百度等名校名企视觉开发者互动交流~



觉得有用麻烦给个在看啦~   
登录查看更多
1

相关内容

通过潜在空间的对比损失最大限度地提高相同数据样本的不同扩充视图之间的一致性来学习表示。对比式自监督学习技术是一类很有前途的方法,它通过学习编码来构建表征,编码使两个事物相似或不同
【NeurIPS2021】基于关联与识别的少样本目标检测
专知会员服务
20+阅读 · 2021年11月29日
CIKM2021 | 异质图上的图神经网络对比预训练
专知会员服务
15+阅读 · 2021年11月8日
专知会员服务
38+阅读 · 2021年5月16日
【CVPR2021】用Transformers无监督预训练进行目标检测
专知会员服务
55+阅读 · 2021年3月3日
【AAAI2021】基于双任务一致性的半监督医学图像分割
专知会员服务
30+阅读 · 2021年2月7日
【AAAI2021】协同挖掘:用于稀疏注释目标检测的自监督学习
对比自监督学习
深度学习自然语言处理
34+阅读 · 2020年7月15日
用 SimCLR 提高自监督与半监督学习效果
谷歌开发者
5+阅读 · 2020年5月12日
ICML2020 图神经网络的预训练
图与推荐
12+阅读 · 2020年4月4日
论文 | 基于CNN的目标检测算法
七月在线实验室
9+阅读 · 2017年12月7日
Arxiv
8+阅读 · 2021年4月21日
Arxiv
4+阅读 · 2018年3月19日
Arxiv
7+阅读 · 2018年1月24日
VIP会员
相关资讯
对比自监督学习
深度学习自然语言处理
34+阅读 · 2020年7月15日
用 SimCLR 提高自监督与半监督学习效果
谷歌开发者
5+阅读 · 2020年5月12日
ICML2020 图神经网络的预训练
图与推荐
12+阅读 · 2020年4月4日
论文 | 基于CNN的目标检测算法
七月在线实验室
9+阅读 · 2017年12月7日
相关论文
Top
微信扫码咨询专知VIP会员