目标检测7 - Deformable Convolutional Networks

Deformable Convolutional Networks

背景

如何有效地建模几何形变或变化(包括尺度、姿势等变化)一直以来都是一个挑战。大体上有两种方法来处理该问题:1)构建一个包含各种变化的数据集。其实就是数据扩增。2)使用具有形变不变性( transformation-invariant)的特征和算法(例如SIFT )。然而,以上的方法存在着如下缺点:1)几何形变被假设是固定和已知的,这是一种先验信息,用这些有限的、已知的形变来进行数据扩增或设计算法,可想而知,对于新的、未知的形变则无法处理。2)手工设计的特征或算法无法应对过度复杂的形变,即便该形变是已知的。

近年来,CNNs在许多计算机视觉任务上都取得了巨大成功,如图像分类,语义分割以及目标检测。然而,CNN由于固定的几何结构,导致对几何形变的建模受到限制。

a convolution unit samples the input feature map at fixed locations; a pooling layer reduces the spatial resolution at a fixed ratio; a RoI (region-of-interest) pooling layer separates a RoI into fixed spatial bins; There lacks internal mechanisms to handle the geometric transformations. This
causes noticeable problems, for example: CNN中处于同一层的神经元的感受野都是相同的大小

为了解决或减轻这个问题,论文引入了两种新的模块可变形卷积 (deformable convolution) 和 可变形感兴趣区域池化 (deformable RoI pooling) ,来提高对形变的建模能力。这两个模型都是基于一个平行网络学习offset(偏移),使卷积核在input feature map的采样点发生偏移,集中于我们感兴趣的区域或目标。

可变形卷积网络deformable convolutional networks,也算是在STN之后的一个新的变换——STN是说CNN Kernel放死了(比如3*3大小),但是可以通过图片变换让CNN效果更好;而deformable是说既然图片可能各种情况,那我索性CNN的Kernel本身是不规整的,比如可以有dilation,也可以旋转的,或者看起来完全没有规则的。STN主要是学习global and sparse的空间变换特征(旋转缩放等)去做整图的归一化,DCN所引入学习的是更加local and dense的变换特征,针对每一个filter都预测了offset,使其能更加有效地覆盖target所在的区域。

如果要做语义分割,只需要用Deformable Convolution即可,但如果要做目标检测,則需要另外使用Deformable RoI Pooling,对多个Region of Interest (ROI)进行处理,缩放成相同大小的feature map。

Deformable Convolution

很多人以为deformable conv学习的是个deformabe的kernel,比方说本来是一个 3×3​3\times3​3×3 相互连接的kernel,最后变成了一个每个位置都有一个offset的kernel。实际情况并不是这样的,作者并没有对kernel学习offset,而是对feature的每个位置学习一个offset,一步一步的解释就是:首先有一个原始的feature map F,在上面做channel为18的 3×3​3\times3​3×3 的卷积,得到channel=18的feature map F_offset,然后再对F做deformable conv并且传入offset 的值F_offset,在新得到的结果上,每个值对应原来的feature map F上是从一个 3∗3​3*3​33 的kernel上计算得到的,每个值对应的F上的 3∗3​3*3​33 的区域上的每个值都有x、y方向上的两个offset,这 3∗3∗2=18​3*3*2=18​332=18 的值就由刚才传入的F_offset决定。其实理清楚关键的一点就是:学习出来的offset是channel=18并且和原始feature map一样大小的,对应的是main branch上做deformable conv时候每位置上的kernel的每个位置的offset。

如下图所示,把原来的卷积过程分成两路,共享input feature maps。上面一路用一个额外的conv层来学习offset △pn\triangle \mathrm p_npn ,得到 H∗W∗2NH*W*2NHW2N 的输出(offset),N=∣R∣N=|\mathcal R|N=R 表示 grid 中像素个数,2N2N2N 的意思是有 xxxyyy 两个方向的 offset 。有了这个 offset 以后,对于原始卷积的每一个卷积窗口,都不再是原来规整的sliding window(input feaure map中的绿框),而是经过平移后的window(蓝框),取到数据后计算过程和卷积一致。即input feature maps和offset共同作为deformable conv层的输入,deformable conv层操作采样点发生偏移,再进行卷积。

传统卷积(The 2D convolution ),主要包含两步:

  1. sampling using a regular grid R\mathcal RR over the input feature map x\mathrm xx ;
  2. summation of sampled values weighted by w\mathrm ww .

The grid R\mathcal RR defines the receptive field size and dilation. 以 3×33\times33×3 ,dilation = 1的 kernel 为例:
R={(−1,−1),(−1,0),...,(0,1),(1,1)} \mathcal R=\{(−1,−1),(−1,0),...,(0,1),(1,1)\} R={(1,1),(1,0),...,(0,1),(1,1)}
对于output feature map y\mathrm yy 中每一个location p0\mathrm p_0p0 ,一般的卷积就是:
y(p0)=∑pn∈Rw(pn)⋅x(p0+pn) \mathrm y(\mathrm p_0)=\sum_{\mathrm p_n\in \mathcal R} \mathrm w(\mathrm p_n) \cdot \mathrm x(\mathrm p_0+\mathrm p_n) y(p0)=pnRw(pn)x(p0+pn)
而 deformable convolution中,the regular grid R\mathcal RR 用 offsets {△pn∣n=1,...,N},N=∣R∣\{\triangle\mathrm p_n|n=1,...,N\},N=|\mathcal R|{pnn=1,...,N},N=R , 进行了调整,得到:
y(p0)=∑pn∈Rw(pn)⋅x(p0+pn+△pn) \mathrm y(\mathrm p_0)=\sum_{\mathrm p_n\in \mathcal R} \mathrm w(\mathrm p_n) \cdot \mathrm x(\mathrm p_0+\mathrm p_n+\triangle\mathrm p_n) y(p0)=pnRw(pn)x(p0+pn+pn)
注意到 △pn\triangle\mathrm p_npn 很可能不是整数像素,而是一个高精度的小数,不能直接获取像素坐标,而如果采用简单粗暴的取整不仅会产生误差也无法采用梯度下降求解,所以要用到Spatial Transformer Networks 里采用的双线性插值(bilinear interpolation):
x(p)=∑qmax(0,1−∣qx−px∣)⋅max(0,1−∣qy−py∣)⋅x(q) \mathrm x(\mathrm p)=\sum_\mathrm qmax(0,1-|q_x-p_x|)\cdot max(0,1-|q_y-p_y|)\cdot \mathrm x(\mathrm q) x(p)=qmax(0,1qxpx)max(0,1qypy)x(q)
其中 p=(p0+pn+△pn)\mathrm p=(\mathrm p_0+\mathrm p_n+\triangle\mathrm p_n)p=(p0+pn+pn) , max()max()max() 函数将 q\mathrm qq 的集合范围约束为距离 p\mathrm pp 最近的4个grid。

Deformable RoI Pooling

Given input feature map x\mathrm xxw×hw\times hw×h 的 RoI 以及左上角 p0\mathrm p_0p0 ,传统RoI pooling把 RoI 分成 k×kk\times kk×k 个bins,对每个bin内的多个像素做average pooling (注意这篇文章不是用的max pooling,我猜测是为了和位置敏感RoI pooling兼容?),最后输出 k×kk\times kk×k 的output feature map,对于 (i,j)(i,j)(i,j)-th bin(0≤i,j<k0\leq i,j < k0i,j<k ),有:
y(i,j)=∑p∈bin(i,j)x(p0+p)/nij \mathrm y(i,j)=\sum_{\mathrm p\in bin(i,j)}\mathrm x(\mathrm p_0+\mathrm p)/n_{ij} y(i,j)=pbin(i,j)x(p0+p)/nij
其中 nijn_{ij}nij 是一个bin中的像素的个数,(i,j)(i,j)(i,j)-th bin的范围为 ⌊iwk⌋≤px<⌈(i+1)wk⌉\lfloor i\frac wk\rfloor \le p_x < \lceil(i+1)\frac wk \rceilikwpx<(i+1)kw , ⌊jhk⌋≤py<⌈(j+1)hk⌉\lfloor j\frac hk \rfloor \le p_y < \lceil(j+1)\frac hk \rceiljkhpy<(j+1)kh 。而deformable RoI pooling类似deformable convolution,在spatial binning positions中也增加了offsets {△pij∣0≤i,j<k}\{\triangle \mathrm p_{ij}|0\le i,j<k\}{pij0i,j<k} ,公式变为:
y(i,j)=∑p∈bin(i,j)x(p0+p+△pij)/nij \mathrm y(i,j)=\sum_{\mathrm p\in bin(i,j)}\mathrm x(\mathrm p_0+\mathrm p+\triangle \mathrm p_{ij})/n_{ij} y(i,j)=pbin(i,j)x(p0+p+pij)/nij
和前面一样,因为offset是带小数的,不能直接得到像素,需要用双线性插值算法得到每一个像素值。

注意,这里的offset只有 k∗kk*kkk 个,而不是每一个像素一个。

Figure 3展示了offsets是如何获得的。如图所示,一个 fc layer 从 RoI pooling 层生成的 pooled feature map 中生成 normalized offsets △p^ij\triangle \widehat{\mathrm p}_{ij}pij ,之后转换为上面公式中的 △pij\triangle \mathrm p_{ij}pij 。(???)

和 deformable convolution 的区别在于用的是FC层,原因是RoI pooling之后的结果是固定大小的 k∗kk*kkk feature map,直接用FC得到 k∗kk *kkk 个offset。但是这些offset不能直接用,因为RoI区域大小不一,并且input feature map的 wwwhhh 也是大小不一。作者提出的方法是用一个 scaler(element-wise product with RoI’s www and hhh ):
△pij=γ⋅△p^ij∘(w,h) \triangle \mathrm p_{ij}=\gamma\cdot\triangle \widehat{\mathrm p}_{ij}\circ (w,h) pij=γpij(w,h)
其中,γ\gammaγ 是一个预定义的scalar,根据经验设为0.1。

Deformable Position-Sensitive RoI Pooling

这个结构主要是针对R-FCN的position-sensitive RoI pooling层做的修改。

Deformable Position-Sensitive RoI Pooling和Deformable RoI pooling层的区别就是把之前公式中的 input feature map x\mathrm xx 替换为了位置敏感分值图中的 xij\mathrm x_{ij}xij (9个颜色的feature map块之一)。

However, the offset learning is different. It follows the “fully convolutional” spirit in [7], as illustrated in Figure 4. In the top branch, a conv layer generates the full spatial resolution offset fields. For each RoI (also for each class), PS RoI pooling is applied on such fields to obtain normalized offsets ∆p bij, which are then transformed to the real offsets ∆pij in the same way as in deformable RoI pooling described above.

### 回答1: 可变形卷积网络(Deformable Convolutional Networks, DCN)是一种卷积神经网络,其允许卷积核的形状在运行时发生变化。这使得网络能够适应不同形状的目标,并在识别对象时获得更高的精度。DCN通过在普通卷积层上加入一个可变形控制层来实现可变形卷积。 ### 回答2: 可变形卷积网络(Deformable Convolutional Networks,DCN)是一种基于卷积神经网络(CNN)的改进技术。它是由微软亚洲研究院提出的一种新型的卷积实现。相比于传统的卷积操作,可变形卷积更加适合于图像中存在的错位、形变等问题。 可变形卷积网络使用了可变形卷积操作代替了普通的卷积操作。其主要思想是在空间结构中引入可变形卷积核,并利用其根据突出区域自适应进行偏移,从而获得更准确的分割结果。具体来说,可变形卷积使用了两个并行的转换网络,它们的输出结果被用来控制卷积核的偏移。一个转换网络用于生成偏移量,而另一个用于生成系数。 对于一个输入图像的像素点而言,传统的卷积操作使用的卷积核是在固定位置上的局部像素数据去学习特征的权重。而可变形卷积则引入了可变形卷积核,并增加了一个偏移量的学习过程。即可变形卷积核首先会根据突出区域自适应调整,形成具有方向性和形变性质的卷积核,再用这个卷积核去识别图像的特征。 总之,相比较于使用固定的卷积核来进行卷积操作,可变形卷积网络可以更加准确地提取图像的特征,消除像素错位的问题,并获得更加可靠和精准的预测结果。近年来,可变形卷积网络已经被广泛应用到目标检测、语义分割等领域,取得了不俗的成效。 ### 回答3: Deformable Convolutional Networks(可变形卷积网络)是一种基于卷积神经网络(CNN)的创新结构,能够自适应感受野来适应不同尺度的特征提取。传统CNN的卷积核是固定的,无法区分不同位置像素的重要性,而DCN则引入了可变形卷积来实现自适应调整卷积核,从而获得更好的特征提取能力。 DCN最大的特点就是在卷积操作中引入了可变形卷积,即使卷积核不断变形,也能够对图像中不同成分进行区分。具体来说,可变形卷积将每个卷积核拆分成两部分,一部分是原始卷积核,一部分则是从特征图中自适应生成的偏移量。通过调整偏移量,可变形卷积核能够自适应调整,以适应不同的图像区域,从而提高了准确率。 相对于传统CNN,DCN在许多领域都有了极大的优势。比如在目标检测中,DCN能够对于不同尺度的物体进行更好的特征提取,因此在各种目标检测任务中都取得了很不错的成果。在语义分割领域,DCN能够真正意义上地较好地适应于不规则的语义区域,能够更加准确地分割出更加复杂的物体。 总之,Deformable Convolutional Network 是一种创新结构,能够通过引入可变形卷积来提高图像特征提取的准确性,并在目标检测和分类、语义分割等领域中取得了良好的表现。未来,这种创新性结构还会不断地被应用于更加丰富多彩的图像识别场景中,带来更加优秀的表现。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值