Adaptive Rotated Convolution

Adaptive Rotated Convlution

Introduction

论文题目 :Adaptive Rotated Convolution for Rotated Object Detection

论文地址https://arxiv.org/pdf/2303.07820v1.pdf

论文出处 :arxiv PKU

代码实现 :Not released

Idea

在遥感图像检测场景中,具有相似特征的对象实例会以任意方向放置,

因此,有必要根据对象的不同方向旋转卷积核,以达到旋转等变性。

Detail

Rotate the convolution kernel

就是先用旋转矩阵公式把卷积核的权重按θ\theta角旋转,然后再用双线性插值重新计算权重。

(xy)=(cosθsinθsinθcosθ)(xy)\left(\begin{array}{c} x^{\prime} \\ y^{\prime} \end{array}\right)=\left(\begin{array}{cc} \cos \theta & -\sin \theta \\ \sin \theta & \cos \theta \end{array}\right)\left(\begin{array}{c} x \\ y \end{array}\right)

Routing function

这里主要介绍决定卷积核旋转角度的路由函数

首先 feature map 送进来与一个3 x 3的kernel做Depthwise Convolution,接着就很常规的卷积后做Layer Nomalzation + relu,然后用平均池化,把特征平均合并到Cin个维度的向量中。

第一个分支是旋转角度预测分支,由Linear + softsign激活函数构成,输出[θ1...θn][\theta_1 ... \theta_n]

第二个分支是组合权重预测分支,由Linear + sigmod激活函数构成,输出[λ1...λn][\lambda_1...\lambda_n]

Wi=Rotate(Wi,θ),i=1,2,...,nW^{'}_{i} = Rotate(W_i, \theta), i = 1, 2,...,n

y=λ1(W1x)+λ2(W2x)+...+λn(Wnx)y = \lambda_1(W^{’}_{1} *x) + \lambda_2(W^{’}_{2} *x) + ... +\lambda_n(W^{’}_{n} *x)

Result

实际效果:

替换多个网络backbond后,精度提升:

总结

以前的网络模型中,都是先卷积,然后做一个RoI warpping,对特征图旋转

(xy)=(cosθsinθsinθcosθ)(xwr/2yhr/2)+(xryr)\left(\begin{array}{c} x^{\prime} \\ y^{\prime} \end{array}\right)=\left(\begin{array}{cc} \cos \theta & -\sin \theta \\ \sin \theta & \cos \theta \end{array}\right)\left(\begin{array}{c} x-w_r / 2 \\ y-h_r / 2 \end{array}\right)+\left(\begin{array}{l} x_r \\ y_r \end{array}\right)

后面Oritened RCNN把RoI warpping这个过程去掉了。

现在又在卷积核上做这个旋转了