DBNet原理分析 - panshaowu/mindocr GitHub Wiki
Deformable Convolution v2
卷积对比:可变形卷积:Deformable ConvNets
论文地址:Deformable ConvNets v2: More Deformable, Better Results
开源代码:Deformable-Convolution-V2 Github
Deformable ConvNet
CNN本质上仅限于大型模型,对几何变换建模的能力主要来自于广泛的数据增强,庞大的模型容量以及一些简单的手工模型。缺失处理几何变化的内部机制。缺失处理几何变化的内部机制。 Deformable ConvNet有两个方面的改进:
- 在conv5层添加了一个变形卷积,Deformable convolution模型;
- 使用了position-sensitive RoI pooling,deformable RoI pooling模型。deformable RoI pooling是CNN中第一个端到端学习池化区域的模型 可变卷积和可变ROI采样。原理是一样的,就是在这些卷积或者ROI采样层上,添加了位移变量,这个变量根据数据的情况学习,偏移后,相当于卷积核每个方块可伸缩的变化,从而改变了感受野的范围,感受野成了一个多边形。
整个Deformable convolution的流程为: (a)是普通的卷积,卷积核大小为3*3,采样点排列非常规则,是一个正方形。 (b)是可变形的卷积,给每个采样点加一个offset(这个offset通过额外的卷积层学习得到),排列变得不规则。 (c)和(d)是可变形卷积的两种特例。对于(c)加上offset,达到尺度变换的效果;对于(d)加上offset,达到旋转变换的效果。
Deformable ConvNet v2
DCNv2主要改进有:(1)扩展可变形卷积,增强建模能力;(2)提出了特征模拟方案指导网络培训:feature mimicking scheme。其认为可变形卷积DCNv1模拟几何变化能力显著提升,但是不够精确。
3点改进:
- 使用更多的可变形卷积:DCNv1————ResNet-50 Conv5里边的3×3的卷积层都使用可变形卷积替换。Aligned RoI pooling 由 Deformable RoI Pooling取代。DCNv2————在Conv3、Conv4、Conv5中所有的3×3的卷积层全部被替换掉。
- 在DCNv1基础(添加offset)上添加幅值参数:不仅学习偏移量,还学习偏移后的权重,增加了更大的自由度,对于某些不想要的采样点权重可以学成0。
- R-CNN Feature Mimicking:把R-CNN当做teacher network,让DCNV2的ROIPooling之后的feature去模拟R-CNN的feature。
得到ROI之后,在原图中抠出这个ROI,resize到224x224,再送到一个RCNN中进行分类,这个RCNN只分类,不回归。然后,主网络fc2的特征去模仿RCNN fc2的特征,实际上就是两者算一个余弦相似度,1减去相似度作为loss即可.