csuhan / ReDet

Official code of the paper "ReDet: A Rotation-Equivariant Detector for Aerial Object Detection" (CVPR 2021)
https://redet.csuhan.com
Apache License 2.0
385 stars 79 forks source link

关于Rotation-equivariant Backbone的问题 #58

Open kuazhangxiaoai opened 2 years ago

kuazhangxiaoai commented 2 years ago

请问大佬: 1、您是如何做到让Backbone具有Rotation-equivariant特性的呢?您不是在RiRoI Align中利用旋转、排序和插值对特征图进行处理,从而形成旋转不变性特征的吗?那对Backbone做成什么样的特殊处理了吗? 2、如果形成了旋转不变性特征(不论角度如何旋转,其特征图都是一致的),那么在最后一个stage的神经网络如何感知角度Thelta的损失呢,对角度Thelta的预测不是会削弱吗?

csuhan commented 2 years ago
  1. backbone由rotation-equivariant的layer组成,因此具有rotation equivariance
  2. 首先,对于一个RRoI(x,y,w,h,a),我们已经学习到了角度a,接下来我们要学习的是角度残差da,而da与a是解耦的,最终的角度=a+da。其次,rotation sensitive和invariant都是很重要的,这里我们认为rotation sensitive需要更多(来自不同角度)的训练数据,而rotation invariant则可以在有限的数据下,减少模型对(来自不同角度的)数据的依赖。
kuazhangxiaoai commented 2 years ago

我看到了,您用e2cnn重写了backbone和rpn网络,我再仔细看看。 对于第一个stage,已经学习到了的角度a,是那八个角度的分类任务吗?将特征图转成旋转不变的,不会对da的学习的rotation sensitive有不好的影响吗?毕竟它已经旋转不变了。既然已经旋转不变了,神经网络如何区分不同的da呢? 我是这样理解的:这个旋转不变性,不是完全旋转不变,只是对特征图的重排,也保留一定的变化,这变化足以满足对da的学习,对吗?

可是,我仔细想想,也不太对。您把当前特征图的角度a,排序到第一层。随着a的不同,第一层有着不同 的特征图,这也不具有旋转不变性啊?随着a的旋转,特征图也各有不同啊?

csuhan commented 2 years ago

你可以类比于:为什么RoI Align之后的feature仍然可以继续回归出更准确的bbox width、height。 RoI Align之前,我们学习到了长度width,w,然后我们提取RoI Align之后的feature,继续学习dw,最终的width=w+dw。

kuazhangxiaoai commented 2 years ago

我明白了,e2cnn利用旋转的卷积核产生了对应各个角度的feature map,然后根据各个角度,进行一个排序,产生rotation-invariant的特征进行学习。但是这个rotation-invariant特征只是较为近似的的一个特征,并不准确,还需要对da进行一个回归学习。 我还想请问一下,您RIRoI Align之前对a的学习,是分类还是回归呢?

csuhan commented 2 years ago

回归,通过前一个R-CNN(RoI Transformer)产生的