CVPR 2021 | 上交和国科大提出DCL:旋转目标检测新方法

点击下方卡片,关注“CVer”公众号

AI/CV重磅干货,第一时间送达

本文yangxue   |  来源:知乎(已授权)

https://zhuanlan.zhihu.com/p/354373013

一、介绍

Densely Coded Labels (DCL)是 Circular Smooth Label (CSL)的优化版本。DCL主要从两方面进行了优化:过于厚重的预测层以及对类正方形目标检测的不友好。

Dense Label Encoding for Boundary Discontinuity Free Rotation Detection

文章地址:https://arxiv.org/abs/2011.09670

代码地址(已开源):

https://github.com/yangxue0827/RotationDetection

二、厚重的预测层

CSL编码方式与独热编码(one-hot)均属于稀疏编码(Sparsely Coded Label, SCL)。稀疏编码的一个明显缺点是需要较长的位数来进行编码,以CSL为例,下面这种公式是其编解码的具体过程:

CSL编解码过程

其中  ,  和  分别表示角度范围(默认是180)以及所划分的角度类别。

那我们就可以计算出使用CSL编码方式或独热编码时的预测层厚度:

CSL编码方式与独热编码的预测层厚度计算公式

其中  表示anchor的数量。

而使用回归进行角度预测时的预测层厚度仅为:

回归方法的预测层厚度

以  为例,CSL编码方式与独热编码的预测层厚度是1620,而基于回归的预测层厚度只有9。这使得基于稀疏编码方法的参数量(Params)和计算量(GFlops)相比基于回归方法增加了26.40%和32.34%,造成模型训练和测试的效率低下,如下表所示。

参数量(Params)和计算量(GFlops)的比较

因此,如何减短编码长度是提高模型效率的关键。因此我们想到了密集编码方法(Densely Coded Label, DCL),主要编码方法有二值编码(Binary Coded Label, BCL)和格雷编码 (Gray Coded Label, GCL),它们的预测层厚度计算公式如下:

二值编码和格雷编码的预测层厚度计算公式

同样以  为例,它们所对应的预测层厚度只有72,只增加1.03%的参数量和1.26%的计算量,和回归方法的效率几乎一样。下式是它们的编解码过程,以二值编码为例:

BCL编解码过程

其中二值编码和格雷编码的编码伪代码:

二值编码和格雷编码的编码伪代码

尽管编码长度大大减少,但会引入几个其他问题。

第一问题是二值编码在一定程度上失去了相邻角度之间的“距离远近”,也就是相邻值之间的编码结果可能发生巨大变化,没有了CSL方法中强调的容忍性。比如,3和4在三位的二进制编码结果分别为011和100,如下表所示。

十进制数所对应的三位二值编码和格雷编码

可以看到所有三个位置都发生了变化,导致两个角度预测的误差很大。而格雷码没有这样的问题,这是因为在一组数字的编码中,任何两个相邻数的格雷码只有一位不同。由于最大值和最小值之间也只有一位数字不同,因此格雷码也称为循环码。格雷编码的缺点也很明显,尽管相邻角度之间的编码形式差别不大,但是具有较大差异的角度的编码差异也不是很明显,例如1(001)和6(101)。

第二个问题是所划分的角度类别数需要是2的指数倍才能保证每一种编码都对应一种角度,否则会有大量冗余的编码(尽管实验验证这个问题影响不大)。如果将180度范围划分为  个类别,则每个划分间隔的范围为  。根据CSL文章中的计算公式,理论期望误差和最大误差分别是  和  ,这种大小的误差在是可以忽略不计的。

为了更好比较稀疏编码和密集编码,下图就是一个具体例子:

稀疏编码和密集编码的比较例子

三、类正方形目标检测的不友好

不管是CSL还是DCL,为了避免角度周期性(PoA)和边的交换性(EoE)问题,它们均采用了“角度分类+长边定义法”的组合。长边定义法有这样一个问题,他无法较好定义一个类正方形目标,如下图所示:

类正方形检测问题

图的左边是gt,右边是一种“视觉可行”的预测结果,之所以说“视觉可行”是因为此时的计算误差非常大。这个误差主要来源于角度(类正方形目标两边近似相等,因此尽管wh的顺序相反,误差依然很小)。仔细观察可以发现这两种框的角度差约等于  。其实使用周期为90的定义方法对类正方形目标来说更加合适(如OpenCV定义法),长边定义法有明显的缺陷。我的另一篇文章GWD详细讨论了这种问题,有一句话概括长边定义法出现这种问题的原因:目标长宽比的减小使得评估(IoU)和损失(  -norm)之间的不一致性逐渐被放大。

针对这个问题以及第一个问题中提到的容忍性的消失,我们设计了一个损失权重(ADARSW),具体公式如下:

ADARSW权重

具体的想法是通过预测和gt的十进制差值来引入容忍性,三角函数的引入来解决角度周期性和类正方形检测问题(通过长宽比来调整  参数,从而调整三角函数的周期)。

四、实验结果

下表是对角度离散化粒度  的消融实验。尽管理论上越小,理论误差越小,预测精度上限越高,但是会增加角度分类的难度。越大也不好,太大的话理论误差太大,预测精度上限太低。一个合适的取值范围是[180/32-180/256]。并且我们发现,基于分类的角度预测方法(CSL和DCL)比基于回归方法在高精度  上更有优势,并且DCL比CSL效果更好,当然效率也更高。

角度离散化粒度的消融实验

下表是对所提权重的消融实验,主要列举了DOTA数据集中10种长宽比比较小的类正方形目标,并验证了ADARSW的有效性。

ADARSW的消融实验

下表是在不同数据集上对三种不同方法的比较,我们发现BCL>CSL>Reg.。

其他数据集上的效果验证

下面两个表格是所提方法在两种数据集上的SOTA对比,DCL-based方法具有一定的优势。

DOTA数据集上的SOTA方法对比
HRSC2016数据集上的SOTA方法对比

下图是对DCL方法的所预测角度的特征可视化:

RetinaNet-DCL角度特征可视化

五、总结

基于角度分类预测的方法基本告一段落,CSL和DCL验证了角度分类这条路子的可行性,那其实接下来可以研究如何更好分类,可以借鉴很多方向的分类损失设计,例如人脸识别。但是,这两篇方法并没有表现出角度分类这条路的优越性,我所看到的优势仅仅是方法本身不存在边界问题,也就是论文题目所写的Boundary Discontinuity Free,但是代价是存在理论误差以及模型参数量和计算量的增加。因此,最近我又回到了“角度回归预测+新loss设计”这条路,一个工作是GWD,欢迎大家交流讨论。

另外,简单介绍一下我所写的一个基于tensorflow框架的旋转检测benchmark:

https://github.com/yangxue0827/RotationDetection

  1. 支持的算法:RetinaNet、Faster-RCNN等baseline以及SCRDet (ICCV19)、R3Det (AAAI21)、RSDet (AAAI21)、CSL (ECCV20)、DCL (CVPR21)、GWD等创新方法;

  2. 支持的数据集:DOTA、HRSC2016、ICDAR2015、ICDAR2017 MLT、MSRA-TD500、UCAS-AOD、FDDB、OHD-SJTU、SSDD++;

  3. 提供大量不同的预训练权重和训练好的权重;

  4. 训练可视化分析,以R3Det (AAAI21)为例:

训练可视化
统计量记录

5. RotationDetection的总体框如下:

RotationDetection框架结构

最后欢迎大家使用这个工具,一个人维护不易,star多多益善。

https://github.com/yangxue0827/RotationDetection

上述论文和代码下载

后台回复:DCL,即可下载上述论文PDF和项目源代码

后台回复:CVPR2021,即可下载CVPR 2021论文和开源代码合集

点击下方卡片并关注,了解CV最新动态

重磅!CVer-论文写作与投稿交流群成立

扫码添加CVer助手,可申请加入CVer-论文写作与投稿 微信交流群,目前已满2400+人,旨在交流顶会(CVPR/ICCV/ECCV/NIPS/ICML/ICLR/AAAI等)、顶刊(IJCV/TPAMI/TIP等)、SCI、EI、中文核心等写作与投稿事宜。

同时也可申请加入CVer大群和细分方向技术群,细分方向已涵盖:目标检测、图像分割、目标跟踪、人脸检测&识别、OCR、姿态估计、超分辨率、SLAM、医疗影像、Re-ID、GAN、NAS、深度估计、自动驾驶、强化学习、车道线检测、模型剪枝&压缩、去噪、去雾、去雨、风格迁移、遥感图像、行为识别、视频理解、图像融合、图像检索、论文投稿&交流、PyTorch和TensorFlow等群。

一定要备注:研究方向+地点+学校/公司+昵称(如论文写作+上海+上交+卡卡),根据格式备注,可更快被通过且邀请进群

▲长按加小助手微信,进交流群

▲点击上方卡片,关注CVer公众号

整理不易,请给CVer点赞和在看

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值