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 年份: ...
随机推荐
- 【NOI2017】游戏 题解(2-SAT+缩点)
题目链接 题目大意:有四种场地$a,b,c,x$和三种赛车$A,B,C$,$a$不能跑$A$,$b$不能跑$B$,$c$不能跑$C$,$x$都可以跑.给定$n$个场地和$m$个四元组$(i,h_i,j ...
- 基于视频压缩的实时监控系统-sprint3采集端传输子系统设计
由于jpg本来就是编码压缩后的格式,所有无需重复编码 传输子系统步骤:(1)初始化:a.socket(初始化tcp连接):b.将事件添加到epoll中 (2)事件处理:接收到网络包.发送完网络包 st ...
- 通过java程序(JSch)运行远程linux主机上的shell脚本
如果您看完文章之后,觉得对您有帮助,请帮我点个赞,您的支持是我不竭的创作动力! 如果您看完文章之后,觉得对您有帮助,请帮我点个赞,您的支持是我不竭的创作动力! 如果您看完文章之后,觉得对您有帮助,请帮 ...
- Java—增强for循环与for循环的区别/泛型通配符/LinkedList集合
增强for循环 增强for循环是JDK1.5以后出来的一个高级for循环,专门用来遍历数组和集合的. 它的内部原理其实是个Iterator迭代器,所以在遍历的过程中,不能对集合中的元素进行增删操作. ...
- C#LeetCode刷题-蓄水池抽样
蓄水池抽样篇 # 题名 刷题 通过率 难度 382 链表随机节点 47.0% 中等 398 随机数索引 41.6% 中等
- 聊聊Java内省Introspector
前提 这篇文章主要分析一下Introspector(内省,应该读xing第三声,没有找到很好的翻译,下文暂且这样称呼)的用法.Introspector是一个专门处理JavaBean的工具类,用来获取J ...
- 01第一个批处理文件 window开机自动加载批处理文件
1 批处理文件用来加载python程序 批处理的文件名称为:Hello.bat @echo off C: cd C:\Users\\Desktop\python\HelloWorld\HelloWo ...
- HahMap(jdk=1.8)源码解读
简介:岁月磨平了人的棱角,让我们不敢轻易的去放手,即使它在你心中并不那么重要,你依旧害怕失去它,不是舍不得,是内心的迷茫. 一 : 创建HashMap HashMap<Object, Objec ...
- 反制面试官 | 14张原理图 | 再也不怕被问 volatile!
反制面试官 | 14张原理图 | 再也不怕被问 volatile! 悟空 爱学习的程序猿,自主开发了Java学习平台.PMP刷题小程序.目前主修Java.多线程.SpringBoot.SpringCl ...
- IntelliJ IDEA中如何再次调出springboot的依赖窗口
原文链接:https://blog.csdn.net/qq_38138069/article/details/102528587 IDEA中如何再次调出springboot的依赖窗口,随时可以根据喜好 ...