本论文的翻译版可以参考我的这篇博客:https://blog.csdn.net/weixin_39568744/article/details/89218635
知识栈
在阅读这篇论文时遇到了很多知识盲区和疑惑,所以途中阅读了很多其他论文和文章。现将其中感觉不错的记录如下:
知识蒸馏网络:https://www.cnblogs.com/liaohuiqiang/p/9170582.html
teacher-student network:https://blog.csdn.net/dwyane12138/article/details/78703823
RCNN, Fast RCNN, Faster RCNN:https://blog.csdn.net/LiJiancheng0614/article/details/52072507
目标检测中的feature mimicking:https://blog.csdn.net/mengmengmiao/article/details/77884565
RoI Pool究竟是什么东西?:https://blog.csdn.net/weixin_39568744/article/details/89186020
Aligned RoIpooling又是啥破玩样?:https://blog.csdn.net/weixin_42105640/article/details/87924397
双线性插值具体是怎么让偏移后的浮点数变为整数像素区域的?:https://blog.csdn.net/sinat_33718563/article/details/78825971
Spatial Transformer Networks 空间特征网络?:https://blog.csdn.net/weixin_39568744/article/details/89174477
“logits”到底是个什么意思?:https://blog.csdn.net/nbxzkok/article/details/84838984
论文理解
下面正式开始记录对这篇论文的理解。
可变形卷积V1回顾
首先简单的回顾一下可变形卷积网络的第一个版本:(注:v1版本的理解抽空写博客附上连接)
可变形卷积v1版中作者通过引入offset来实现可变形卷积网络,提升了网络对目标几何变化的适应能力。并提出了可变 RoI池化。
作者在V2中说明V1存在的问题是在RoI外部的这种几何变化适应性表现得不好,导致特征会受到无关的图像内容影响。并且可变形卷积有着很大的潜力,可以做出改进。
主要的改进
在第一版可变形卷积的基础上,作者主要进行了以下三个改进:
1、在特征提取网络的更多层中引入可变形卷积结构,从后面的实验来看,这个操作虽然简单,但是效果提升非常明显,只不过在v1论文中使用PASCAL VOC数据集,所以难以观察到这部分提升。
2、改进deformable结构,我们知道不管是deformable convolution还是deformable RoI pooling,主要通过引入offset,使得特征提取过程能够更加集中于有效信息区域,而这篇论文在v1的基础上引入了modulation,modulation简单而言就是权重,通过分配不同权重给经过offset修正后的区域,实现更加准确的特征提取。
3、第2点的想法很好,但是从作者的实验来看,仅仅通过第2点带来的提升还是比较有限的,主要原因在于现有的损失函数难以监督模型对无关紧要的区域设置较小的权重,因此在模型训练阶段引入RCNN feature mimicking,通过联合训练RCNN网络提供有效的监督信息,发挥modulation的权重作用,使得提取到的特征更加集中于有效区域,因此和第2点是紧密结合的。
分析可变形卷积的行为
为了更好的分析可变形卷积的行为、进行一些可视化的分辅助分析工作,这篇论文引入了以下三个概念:
1.有效感受野(Effective receptive fields):网络中每个节点都会计算feature map的一个像素点,而这个点就有它自己的感受野,但是不是感受野中的所有像素对这个点的响应的贡献都是相同的,大小与卷积核权重有关,因此文中用有效感受野来表示这种贡献的差异。例下图:
2.有效采样/bin位置(Effective sampling/bin locations):对于卷积核的采样点和RoIpooling的bin的位置进行可是有助于理解DCN,有效位置在反应采样点位置的基础上还反应了每个位置的贡献。也就是有效的计算区域,这个在DCNv1论文中看得比较多了,简而言之就是几个卷积层叠加后从输出中的某个点往前推算出参与该点计算的特征点区域。例下图:
3.错误边界显著性区域(Error-bounded saliency regions):最近关于图像显著性的研究表明,对于网络的每个节点的响应,不是图像上所有的区域对其都有影响,去掉一些不重要的区域,节点的响应可以保持不变。根据这一性质,文章将每个节点的support region限制到了最小的可以和整幅图产生相同的响应的区域,并称之为错误边界显著性区域。例下图:
有了这三个可视化的分析工具后,可以更好对传统卷积,可变形卷积v1,可变形卷积v2各自的特点进行分析。可以得到以下的结论:
1、基于常规卷积层的深度网络对于形变目标有一定的学习能力,比如(a)中的最后一行,基本上都能覆盖对应的目标区域或者非目标区域,这主要归功于深度网络的拟合能力,这种拟合能力有点强行拟合的意思,所以才有DCN这种设计。
2、DCNv1对于形变目标的学习能力要比常规卷积强,能够获取更多有效的信息。比如(b)中的最后一行,当输出点位置在目标上时(前2张图),影响区域相比常规卷积而言更大。
3、DCNv2对于形变目标的学习能力比DCNv1更强,不仅能获取更多有效的信息,而且获取的信息更加准确,比如©中的最后一行,目标区域更加准确。因此简单来讲,DCNv1在有效信息获取方面的recall要高于常规卷积,而DCNv2不仅有较高的recall,而且有较高的precision,从而实现信息的精确提取。
对v1进行改进的具体操作
1.添加更多的可变形卷积层
作者发现可变形的conv层可以在具有挑战性的基准上有效地对几何变换进行建模,受此启发,作者大胆地用更多的可变形的conv层替换传统conv层。希望通过叠加更多的可变形conv层,进一步增强整个网络的几何变换建模能力。本文中,可变形卷积被应用到了ResNet-50中conv3, conv4, and conv5 阶段中的全部3×3卷积层中。因此网络中有12层可变形卷积。相比之下,v1版本中只使用了三层可变形卷积,全部处于conv5阶段。
2.改进v1中的deformable convolution和deformable RoI pooling
由于不同的位置对检测的贡献是不同的,所以将这个思想引入到v1版本中的deformable convolution和deformable RoI pooling中,将他们修改为modulated deformable convolution和modulated deformable RoI pooling。
modulated deformable convolution的公式如下:(只是在v1公式的基础上乘了一个系数)
△mk就是modulation要学习的参数,这个参数的取值范围是[0,1],假如去掉这个参数,那么就是DCNv1中的deformable convolution。从论文来看,△pk,△mk都是通过一个卷积层进行学习,因此卷积层的通道数是3K,其中2K表示△pk,这和DCNv1的内容是一样的,剩下K个通道的输出通过sigmoid层映射成[0,1]范围的值,就得到△mk。
modulated deformable RoI pooling的公式如下:(同理)
3.RCNN feature mimicking
作者发现对于RoI分类时,普通CNN或者DCN V1的错误边界显著性区域都会延伸到RoI之外,于是与RoI不相关的图像内容就会影响RoI特征的提取,从而可能影响目标检测的结果。不过R-CNN在进行分类时,结果完全是依赖于RoI的,因为R-CNN的分类branch的输入就RoI的cropped image。作者借鉴知识蒸馏的思想,采用feature mimicking的手段在训练阶段进行RCNN feature mimcking
称左边的网络为主网络(Faster RCNN),右边的网络为子网络(RCNN)。实现上大致是用主网络训练过程中得到的RoI去裁剪原图,然后将裁剪到的图resize到224×224大小作为子网络的输入,子网络通过RCNN算法提取特征,最终提取到14×14大小的特征图,此时再结合IoU(此时的IoU就是一整个输入图区域,也就是224×224)作为modulated deformable RoI pooling层的输入得到IoU特征,最后通过2个fc层得到1024维特征,这部分特征和主网络输出的1024维特征作为feature mimicking loss的输入,用来约束这2个特征的差异
那么为什么RCNN feature mimicking方法有效?因为RCNN这个子网络的输入就是RoI在原输入图像上裁剪出来的图像,因此不存在RoI以外区域信息的干扰,这就使得RCNN这个网络训练得到的分类结果更加可靠,以此通过一个损失函数监督主网络Faster RCNN的分类支路训练就能够迫使网络提取到更多RoI内部特征,而这个迫使的过程主要就是通过添加的modulation机制和原有的offset实现。
feature mimicking loss采用余弦函数度量2个输入之间的差异,这是利用了余弦函数能够度量两个向量之间的角度的特性,其中fRCNN(b)表示子网络输出的1024维特征,fFRCNN(b)表示主网络输出的1024维特征,通过对多个RoI的损失进行求和就得到Lmimic。
实验
上面的实验结果是在不同图像尺寸下的对比实验,还没有加入R-CNN feature mimicking的方法,可以看到,可变形卷积的层数的堆叠对性能的提升是很明显的。
未完待续。。。。。。。