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 年份: ...
随机推荐
- java_String类、StringBuilder类、Arrays类、Math类的使用
String类 java.lang.String 类代表字符串.Java程序中所有的字符串文字(例如 “abc” )都可以被看作是实现此类的实例 构造方法 java.lang.String :此类不需 ...
- ~/.ssh/目录找不到解决方法
执行 cd ~/.ssh发现.ssh目录找不到 原因是因为没有用root用户ssh登录过,执行一下ssh操作就会自动生成了
- java 异常二
一 捕获异常try…catch…finally 捕获:Java中对异常有针对性的语句进行捕获,可以对出现的异常进行指定方式的处理 捕获异常格式: try { //需要被检测的语句. } catch(异 ...
- C#LeetCode刷题之#705-设计哈希集合(Design HashSet)
问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/4114 访问. 不使用任何内建的哈希表库设计一个哈希集合 具体地说 ...
- Python 批量保存word
from docx import Document path = r'D:\pywork\12' # word信息表所在文件夹 w = Document(path + '/' + 'word模板表.d ...
- python接口自动化 - 断言(上)
我们在做接口自动化的时候会用当unittest框架,这个框架中是有assert方法 当我们写好我们的case后 总要有个验证是否正确的东西,assert就给我们提供了非常强大的结果验证 序号 断言方法 ...
- SpringMVC关于拦截器的使用
这个是基于之前的视图定位进行的. @ 目录 拦截器类:IndexInterceptor 配置拦截器 修改 index.jsp 效果 拦截器类:IndexInterceptor package inte ...
- Docker商业版受限,胖容器是个选择
前情概要 8月13日,Docker 公司更新了网站服务协议,条款申明,禁止禁运国家和被列入「美国实体清单」的组织和个人使用带有该服务协议链接的 Docker 网站和所有相关网站.这一更新协议迅速引起了 ...
- Micro LED巨量转移技术研究进展
近年来,Micro LED因其功耗低.响应快.寿命长.光效率高等特点,被视为继LCD.OLED之后的新一代显示面板技术.Micro LED的英文全名是Micro Light Emitting Diod ...
- 计算机网络-网络层(2)NAT协议
网络地址转换(NAT,Network Address Translation)协议: 本地网络内通信的IP数据报的源与目的IP地址均在子网10.0.0.0/24内:所有离开本地网络去往Internet ...