Arbitrary-Oriented Object Detection with Circular Smooth Label(ECCV2020,旋转目标检测)

论文链接:https://arxiv.org/abs/2003.05597
code:https://github.com/Thinklab-SJTU/CSL_RetinaNet_Tensorflow
文章概要:
本文展示了目前流行的基于回归的旋转目标检测方法都存在或多或少的不连续边界问题,问题直接由角度的周期性或角点的顺序导致。根本原因则是理想的预测超出了所定义的范围,导致边界问题的产生,即产生了一个较大的损失值。针对上述问题,本文设计了一种没有边界问题的预测方法。该方法的核心是将角度预测从回归任务转变为分类任务处理,并提出了环形平滑标签(circular smooth label ,CSL ),通过引入周期性解决了角度周期性的问题。
本文出发点:
面对四边形的边界问题,SCRDet、Gliding Vertex和RSDet在内没有从更深层次来解决这个问题,只是在发现有这个问题之后采取措施抢救,而不是设计一种没有边界问题的预测方法。本文通过探讨发现理想的预测超出了所定义的范围,导致了边界问题的产生,即产生了一个较大的损失值。因此本文提出了CSL的概念,通过将角度的回归问题转换成了一个分类问题,限制预测结果的范围来消除这一问题。
网路结构:

从Fig.1可以看到,本文在RetinaNet的基础上添加了一个角度分类的分支,同时依然保留角度回归分支。作者实验中没有给出CSL单独使用的实验结果。
常见的角度回归表示方法:

- 90°-regression-based method (五参数法,$x,y,w,h,\theta$),角度$\theta$表示矩形框与x轴所形成的锐角,且框与x轴组成锐角的边记为$w$,另一条边则记为$h$。$\theta\in[-90,0])$。
- 180°-regression-based method (五参数法,$x,y,h,w,\theta$),即长边表示法。矩形框的长边($h$)与x轴形成的夹角。$\theta\in[-90,90)$。
- Point-based method (八参数法,$x_1,y_1,x_2,y_2,x_3,y_3,x_4,y_4$),最左边的点(如果水平矩形的话有两个点满足取上面的那个)为起始点,逆时针排列。
各种回归方法的边界问题:

- 90°-regression-based method :最理想的角度回归路线是由蓝色框逆时针旋转到红色框,但由于角度的周期性,导致按照这个回归方式的损失非常大(参见上图右边的Example)。此时模型必须以更复杂的形式回归(例如蓝色框顺时针旋转,同时缩放w和h),增加了回归的难度。通过上图(a)右边的example,我们可以发现损失值的突增来源于两部分,一个是角度周期性(periodicity of angular,PoA),另一个是边的交换性(exchangeability of edges,EoE)。
- 180°-regression-based method :这种方式比上面稍微简单一些,损失值的突增只来源于PoA。
- point-based method:看(c)图,如果是蓝框是anchor,红框是ground-truth,那么通过点的排序之后,实际和理想的回归方式是一样的(按照回归的距离定义),都是:
而绿框是ground-truth时,实际是:

理想情况是:

通过上述三种例子的分析,我们不难得出这样的结论:理想的预测结果超出了所定义的范围,导致出现边界问题,即产生一个较大的损失值。
环形平滑标签(CSL):
作者在该节内容探讨了将基于回归方法的角度预测问题转换为分类问题的可行性。以180°-regression-based method 为例,将定义的角度范围进行类别划分,比如一度归为一类$(\omega =1°)$。但是将回归问题转化为分类问题实际上是一个连续到离散的变换,会造成精度的损失。因为转换为分类问题后,基于本文一度一类的举例,0.5度的情况是无法预测的。在这种情况下,计算最大损失和期望损失:
$$\begin{split}
&Max(loss)=\omega/2,\\
&E(loss)=\int^b_a x*\frac{1}{b-a}dx=\int^{\omega/2}_0 x*\frac{1}{\omega/2-0}dx=\frac{\omega}{4},
\end{split}\tag{1}
$$
同样,以一度一类的为例$(\omega =1°)$,精度最大和期望的损失分别是0.5和0.25。假如,有两个相同的长宽比1:9的同中心的矩形,角度相差0.5和0.25,则他们之间的IoU只下降了0.05和0.02。这对于最后评测其实影响非常小,毕竟也不是所有目标都有这么大的长宽比(长宽比越大,IoU随角度的变化愈加剧烈)。因此,将角度预测方式转换成分类问题是可行的,但是如果只是以最简单的分类手段(one-hot编码)来处理还是存在几个问题的:
- 边界交换性无法解决
- 预测值和真实值的角度距离不可知,当ground-truth为0°时,预测为-90°和1°的损失值是一样的,但是实际上预测为1°时才是可接受的情况。
作者在论文里论述CSL能规避边界交换性和角度周期性问题,作者的表述不是很准确(角度分类只解决PoA问题,EoE是用180定义法解决的。)CSL的表达式如下:
$$ CSL(x) =
\begin{cases}
g(x),& \text{$\theta-r<x<\theta+r$,} \\
0,& \text{$otherwise$.}
\end{cases} \tag{2} $$
公式中的 $g(x)$是窗口函数,窗口半径由 $r$来控制。窗口函数主要由四点性质:
按作者在论文中以及知乎专栏中的表述可知,窗口函数的设置使得模型可以衡量预测标签和地面真相标签之间的角度距离,即在一定范围内越靠近真实值的预测值的损失值越小。而且通过引入周期性解决了角度周期性的问题,即使得89和-90两个度数变成是近邻的,这也是取名为环形平滑损失的原因。为了更好的理解,引用https://zhuanlan.zhihu.com/p/111493759这篇文章评论中tgis-top的举例:“比如就离散成8类,脉冲函数处理出来的类别真值向量是1 0 0 0 0 0 0 0,高斯函数处理出的可能是 1 0.5 0.1 0 0 0 0.1 0.5,方波处理出来的可能是 1 0 0 0 0 0 0 1,相当于对类别标签进行了平滑。也就说原始真值是1 0 0 0 0 0 0 0,预测成 1 0 0 0 0 0 0 1也是和CSL处理出来的真值相同的,对于最终结果来说也是准确的。确实是从两个角度入手,本质都是通过引入周期函数让“取值虽然相差很大,但是损失可以很小”。需要注意的是,当窗口函数是脉冲函数或者窗口函数的窗口半径很小时,Circular Smooth Label 等价于One-hot label。平滑标签的概念不是作者首创,但是根据具体任务引入了窗口函数,解决了角度周期性的问题,对相邻角度具有一定的容忍性,非常棒的想法。
Loss Function
- 边框回归
$$\begin{split}
&t_x=(x-x_a)/w_a,t_y=(y-y_a)/h_a\\
&t_w=log(w/w_a),t_h=log(h/h_a),\\
&t_{\theta}=(\theta-\theta_a)\cdot\pi/180 (only for regression branch)
\end{split}\tag{3}
$$
$$\begin{split}
&t^{'}_x=(x^{'}-x_a)/w_a,t^{'}_y=(y^{'}-y_a)/h_a\\
&t^{'}_w=log(w^{'}/w_a),t^{'}_h=log(h^{'}/h_a),\\
&t^{'}_{\theta}=(\theta^{'}-\theta_a)\cdot\pi/180 (only for regression branch)
\end{split}\tag{4}
$$
变量$x,x_a,x^{'}$分别表示vground-truth box, anchor box, 和predicted box (y,w,h, θ同理) 。
- 多任务损失
$$\begin{split}
L=&\frac{\lambda_1}{N}\sum_{n=1}^{N}{obj_n}\cdot\sum_{j\in\lbrace x,y,w,h,\theta \rbrace}{}{ L_reg(v^{'}_{nj},v_{nj})}\\
&+\frac{\lambda_2}{N}\sum_{n=1}^{N}{L_{CSL}(\theta^{'}_n,\theta_n})+\frac{\lambda_3}{N}\sum_{n=1}^{N}{L_{cls}(p_n,t_n})
\end{split}\tag{5}
$$
$\lambda_1,\lambda_2,\lambda_3$取值为$[1,0.5,1]$
实验分析
1. 不同窗口函数的对比实验
- 采用90°定义的方法因为边界交换性问题的存在,效果不如180°定义法
- 高斯窗口函数的效果最好,而基于脉冲窗口函数的方法效果最差
下图是在尽可能相同配置条件下CSL-Based和regression-based方法的效果对比,以及不同窗口函数的可视化对比。
2.不同窗口半径的对比
- 窗口半径的大小要适中,过小则会变成One-hot label形式,无法学到角度信息,过大则角度预测偏差会加大;
- 单阶段检测器比双阶段检测器对于窗口半径更加敏感,推测的原因是双阶段方法是基于instance-level的特征提取方法(RoI Pooling或RoI Align),这些方法提取到的特征会明显好于单阶段image-level的提取方式,使得双阶段检测方法可以区分更加小角度差的角度类别。
- 不同窗口下的可视化效果图

3. CSL-Based与regression-based方法的比较
CSL-based方法在角度特征明显的类别上具有较大的优势,但是由于DOTA数据集类别多且边界情况所占整个数据集的比例比较小,因此在整体性能比较上的优势并不是那么大。

其他数据集的效果比较
4. 可视化分析
为了进一步证明CSL-based方法的特性,作者对CSL-FPN-based检测器中的每个RoI的角度特征向量进行了可视化的展示,采用的方法是主成分分析法(PCA),可视化结果如下图所示:
上图中第一行用的是脉冲窗口函数,可以看到每个RoI的角度特征分布是趋于随机的,也就说明它没有学习到角度这一信息。而第二行使用的是高斯窗口函数,可以看到整个可视化分布是呈现环状的,而且相邻度数的特征是挨在一起的,具有一定的耦合。这种现象正是作者设计CSL方法的目的,也很好证明了基于CSL方法的检测器可以很好学习到目标的方向信息。
5. 与其他方法的比较
总结
本文从源头上解决旋转目标检测的角度周期性问题,引入窗口函数的设计很巧妙,将相邻类别之间的角度距离,预测容忍度,以及角度的周期性问题都考虑在内。但是角度类别划分的数量有点多,导致检测器的head过厚。实验中也没有设计CSL单独作用时的实验。
Arbitrary-Oriented Object Detection with Circular Smooth Label(ECCV2020,旋转目标检测)的更多相关文章
- Object detection with deep learning and OpenCV
目录 Single Shot Detectors for Object Detection Deep learning-based object detection with OpenCV 这篇文 ...
- TensorFlow object detection API应用--配置
目标检测在图形识别的基础上有了更进一步的应用,但是代码也更加繁琐,TensorFlow专门为此开设了一个object detection API,接下来看看怎么使用它. object detectio ...
- 论文阅读之: Hierarchical Object Detection with Deep Reinforcement Learning
Hierarchical Object Detection with Deep Reinforcement Learning NIPS 2016 WorkShop Paper : https://a ...
- Viola–Jones object detection framework--Rapid Object Detection using a Boosted Cascade of Simple Features中文翻译 及 matlab实现(见文末链接)
ACCEPTED CONFERENCE ON COMPUTER VISION AND PATTERN RECOGNITION 2001 Rapid Object Detection using a B ...
- 目标检测(四)Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks
作者:Shaoqing Ren, Kaiming He, Ross Girshick, and Jian Sun SPPnet.Fast R-CNN等目标检测算法已经大幅降低了目标检测网络的运行时间. ...
- 深度学习论文翻译解析(四):Faster R-CNN: Down the rabbit hole of modern object detection
论文标题:Faster R-CNN: Down the rabbit hole of modern object detection 论文作者:Zhi Tian , Weilin Huang, Ton ...
- 论文笔记: LSTD A Low-Shot Transfer Detector for Object Detection
背景知识: Zeroshot Learning,零次学习. 模型 对于 训练集 中 没有出现过 的 类别,能自动创造出相应的映射: X→Y. Low/Few-shot Learning.One-sho ...
- Image Processing and Analysis_8_Edge Detection:Edge and line oriented contour detection State of the art ——2011
此主要讨论图像处理与分析.虽然计算机视觉部分的有些内容比如特 征提取等也可以归结到图像分析中来,但鉴于它们与计算机视觉的紧密联系,以 及它们的出处,没有把它们纳入到图像处理与分析中来.同样,这里面也有 ...
- 关于目标检测(Object Detection)的文献整理
本文对CV中目标检测子方向的研究,整理了如下的相关笔记(持续更新中): 1. Cascade R-CNN: Delving into High Quality Object Detection 年份: ...
随机推荐
- 实验08——java百文百鸡
package cn.tedu.demo; /** * @author 赵瑞鑫 E-mail:1922250303@qq.com * @version 1.0 * @创建时间:2020年7月17日 下 ...
- 深度学习论文翻译解析(十二):Fast R-CNN
论文标题:Fast R-CNN 论文作者:Ross Girshick 论文地址:https://www.cv-foundation.org/openaccess/content_iccv_2015/p ...
- 基于boost的bind与function的一个简单示例消息处理框架
前两年开始接触boost,boost库真是博大精深:今天简单介绍一下boost中之前用到的的bind与function,感觉挺实用的,分享给大家,我对boost用的也不多,让大家见笑了. 上次文发了一 ...
- myBatis源码解析-数据源篇(3)
前言:我们使用mybatis时,关于数据源的配置多使用如c3p0,druid等第三方的数据源.其实mybatis内置了数据源的实现,提供了连接数据库,池的功能.在分析了缓存和日志包的源码后,接下来分析 ...
- 10、Strategy 策略模式 整体地替换算法 行为型模式
1.模式说明 策略模式比较好理解,就是将程序中用到的算法整体的拿出来,并有多个不同版本的算法实现,在程序运行阶段,动态的决定使用哪个算法来解决问题. 2.举例 排序算法的问题,假如我们的程序中需要对数 ...
- C++字符串转整形、浮点型stof()、atoi()、strtol()等
头文件:#include<stdlib.h>string str;stof:float val=stof(str);atoi:int val=atoi(str);atol:long val ...
- 2020-07-14:es用过冷热分离吗?假如现在有些数据热变冷,有些数据冷变热,怎么解决?
福哥答案2020-07-14: 热变冷: 有x台机器tag设置为hot. 有y台机器tag设置为cool. hot集群中只存最近两天的. 有一个定时任务每天将前一天的索引标记为cool. es看到有新 ...
- C#设计模式之19-观察者模式
观察者模式(Observer Pattern) 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/423 访问. 观察者模式 ...
- C#LeetCode刷题之#453-最小移动次数使数组元素相等(Minimum Moves to Equal Array Elements)
问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/3877 访问. 给定一个长度为 n 的非空整数数组,找到让数组所有 ...
- Web前端性能优化,应该怎么做?
摘要:本文将分享一些前端性能优化的常用手段,包括减少请求次数.减小资源大小.各种缓存.预处理和长连接机制,以及代码方面的性能优化等方面. base64:尤其是在移动端,小图标可以base64(webp ...