文章目录[隐藏]
论文
paper:https://arxiv.org/pdf/2103.07733.pdf
code:https://github.com/csuhan/ReDet
概述
之前说过,cv的论文图画的好不好决定了这篇论文阅读难度。所以,先看图。。。
这个图也很清楚,典型的二阶段检测方法,作者主要是在backbone,rpn,align三个部分进行改进。该论文的主要创新思路就是如何在检测过程中抓住旋转特征。这篇论文主要使用了19年的几篇论文的技术,并进行改进,如e2cnn,RoI transformer
作者首先说明了普通cnn层对平移的不变性,但对旋转不具备不变性和等变性。作者采用了新的backbone,能输出具有旋转等变性的特征图。同时特征图经过align后就不再具备旋转不变性了,所以作者也设计了一个特殊的align方法使得生成的特征图具备旋转不变性用以检测分类。
这里作者使用e2cnn,重写了backbone。
e2cnn
这一部分论文偏理论,太过硬核,可以参考这位大佬的解读https://blog.csdn.net/bxdzyhx/article/details/110521748
没看懂,需要抽象代数学得很好。。。不过知道这个trick对旋转框很有用就行了。
RoI transformer
原本的RT分为两部分,RRoI learner和RRoI warping。learner用来捕捉对旋转鲁棒的特征,warping相当于align部分。在本文中被拆开来用了。下图是RT的结构图:
在learner中,把RPN输出的HRoI当作输入,一次卷积后缩小至10channels,进入全连接层,输出一个5维向量,每个维度的gt值如下:
这里的五个值是RRoI GT和HRoI的偏移量,用这些偏移量作为输入进入decoder模块,解码出RRoI的相关参数,即(x,y,w,h,
θ
\theta
θ)。
这样可以使得最终的RRoI尽可能靠近gt值,这样即减少了参数量也提高了旋转框检测的性能。
接下来是warp部分:
warping部分是在PS RoI align上修改的。PS-RoI align结构图如下:
特征图经过一个11卷积得到通道数为kk*(C+1)的特征图,kk是位置数,C是类别数。该方法是为了使池化后特征图具有平移不变性,所以人为设定了kk个位置信息。上图中每个颜色块表示一个位置,每个颜色块内具有C+1个类的对应位置信息。然后做池化,这里使用的是平均池化,每个RoI被划分成k*k个子区域,每个区域都做平均池化。池化使用双线性插值。
RoI warping在以上过程中添加了一个旋转变换,使用旋转矩阵代表该变换
使用以上公式,把每个像素点坐标都进行旋转变换,然后再做如上池化,即RoI warping。
本文认为RoI warping已经可以捕捉旋转特征,但还无法使得生成的特征图具备旋转不变性,因此在RoI warping基础上添加了一个orientation alignment。同时为了保留位置信息,重新设计了特征图。
本文的特征图维度为(k,n,h,w),k是位置信息,n是方向channel数。在orientation alignment中,特征图被分为n个方向的子特征图,根据对应的RoI的
θ
\theta
θ值,去进行该特征图的orientation alignment过程。过程如下:
根据
θ
\theta
θ值计算一个下标r=
⌊
θ
∗
N
2
π
⌋
\lfloor \frac{\theta*N}{2\pi}\rfloor
⌊2πθ∗N⌋,如果
θ
\theta
θ值属于我们事先设定的N个方向中,则将C
N
(
r
)
_N^{(r)}
N(r)这个特征图与其他前一个orientation channel特征图循环交换,直到C
N
(
r
)
_N^{(r)}
N(r)在第一位。如果
θ
\theta
θ值不属于N个方向,也就是说r需要向下取整,此时先交换至第一个特征图再通过线性插值的方法计算出该特征图的值。
switch channels的原理是一共N个方向,这N个方向是用于实现cnn可以具备旋转不变性的。这一部分和e2cnn有很大关系。
实验
实验结果就不放了,论文里有,效果很好。
版权声明:本文为CSDN博主「VISTA_Zhang」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/VISTA_Zhang/article/details/116645792
暂无评论