ReDet
ReDet
Introduction
论文题目 : ReDet: A Rotation-equivariant Detector for Aerial Object Detection
论文地址 : https://arxiv.org/pdf/1708.02002.pdf
Idea
提出了一种旋转等变检测器(ReDet)来从旋转等变特征中提取完全旋转不变的特征。
如图,作者首先说明了普通CNN层对平移的不变性,但对旋转不具备不变性和等变性。作者采用了新的backbone【Reresnet,旋转不变主干网络,使用e2cnn重写Resnet】,能输出具有旋转等变性的特征图。同时特征图经过align后就不再具备旋转不变性了,所以作者也设计了一个特殊的align方法【RiRoI Align,除了普通RRoI Align具有的空间对齐(spatial alignment),还多了一层方向对齐(orientation alignment)】,使得生成的特征图具备旋转不变性用以检测分类。
最后,旋转不变主干网络和RiRoI Align的结合形成了ReDet,以提取完全旋转不变的特征,从而实现精确的航空目标检测。
Network
Backbone: ResNet + FPN
改进–> 添加了旋转等变
Rotation-equivariant Backbone: ReResNet + ReFPN
紧接着采用RPN + RoI Transformer去生成RRoIs,然后再喂入到RiRoI Align 生成RoI feature, 最后再使用全连接层,然后到classification和bbox regression。
方向对齐: 循环切换方向通道并插值特征,以生成完全旋转不变的特征。
Detail
1.backbone【ReResNet】
作者使用e2cnn,重写了mmdetction框架中的ResNet,形成了新的ReResNet,使其能输出具有旋转等变性的特征图。
如图所示,在整体代码结构上,ReResNet相较于ResNet几乎没有变化。
作者在这里的主要工作,是使用开源的e2cnn库,重写了所有层(包括convolution, pooling, normalization, non-linearity等),然后在代码中使用了这些层的地方全部做了替换。
2.neck【ReFPN】
几乎与ReResNet如法炮制,同样使用e2cnn重写所有层。
但在ReFPN中多出了一个ConvModule,其e2cnn的部分都在这边引用,具体细节还在对比。
e2cnn
e2cnn全称:E(2)群等变可操控神经网络,于2019年提出,基于群等变卷积网络GroupEquivariant-CNN,给出了群表示如何改变特征图的概述,论述了群表示与非线性的兼容性。
论文地址:https://arxiv.org/pdf/1911.08251
该作者给出了e2cnn的实现库,发布在github上:https://github.com/QUVA-Lab/e2cnn
论文解读:https://blog.csdn.net/bxdzyhx/article/details/110521748
这一部分论文偏理论,太过硬核,没看懂,需要抽象代数学得很好。。。
不过知道这个trick对旋转框很有用就行了。
3.RoI transformer
原本的RT分为两部分,RRoI learner和RRoI warping。learner用来捕捉对旋转鲁棒的特征,warping相当于align部分。在本文中被拆开来用了。下图是RT的结构图:
RRoI learner
在learner中,把RPN输出的HRoI当作输入,一次卷积后缩小至10channels,进入全连接层,输出一个5维向量(x,y,w,h,θ),每个维度的GT(Groud Turth)值如下:
这里的五个值是RRoI GT和HRoI的偏移量,用这些偏移量作为输入进入decoder模块,解码出RRoI的相关参数,即(x,y,w,h,θ)。
这样可以使得最终的RRoI尽可能靠近gt值,这样即减少了参数量也提高了旋转框检测的性能。
RRoI warping(Rotation-invariant RoI Align)
作者认为RoI warping已经可以捕捉旋转特征,但还无法使得生成的特征图具备旋转不变性,因此在RoI warping基础上添加了一个orientation alignment。同时为了保留位置信息,重新设计了特征图。
本文的特征图维度为(k,n,h,w),k是位置信息,n是方向channel数。
在orientation alignment中,特征图被分为n个方向的子特征图(一个channel一个方向),根据对应的RoI的θ值,去进行该特征图的方向对齐,作者称这个过程叫switch channels。其过程如下:
根据θ值计算一个下标r=,r<=1说明在N个方向内,r>1说明在N个方向外。
如果θ值属于我们事先设定的N个方向中,则将这个特征图与其他前一个orientation channel特征图循环交换,直到在第一位;如果θ值不属于N个方向,也就是说r需要向下取整,此时先交换至第一个特征图再通过线性插值的方法计算出该特征图的值。
【switch channels具体过程是这个样子,但是其原理没有弄懂,按文章中说应该是和e2cnn有很大关系】
虽然目标检测方向的论文大体上都看过,了解一些目标检测Network架构,但感觉自己在遥感目标检测的一些专业术语知识还是太少了。
比如OBB, HBB,rotation-invariant features, RRoI Pooling ,RRoI Align,这篇文章还提到了 group convolutions(群卷积)也没接触过。
本博客所有文章均采用 CC BY-NC-SA 4.0 协议 ,禁止商用,转载请注明出处!