代码编织梦想

📝论文下载地址

  [论文地址]

🔨代码下载地址

  [GitHub-official]

👨‍🎓论文作者

Lei Liu,Zongxu Pan,Bin Lei

📦模型讲解

[背景介绍]

  在遥感图像目标检测领域,定向框的标注越来越收到关注,作者在论文提出了水平框的三大缺点与定向框的三大优点。
  ①水平框的缺点
  尺寸与宽高比不能反映目标的真实形状。目标和背景像素没有有效分离。密集对象难以分离。
  ②定向框的优点
  定向框的宽度和高度反映了目标的物理尺寸,这有助于定制预选框。定向框比水平框包含更少的背景像素,因此目标和背景之间的分类更容易。定向框可以有效地分隔目标,并且在相邻目标之间没有重叠区域。

2020071517463947.png

  在本文中,定义了定向框来克服上述困难。定向框是一个带有angle参数的矩形,用于定义其方向。定向框需要五个参数来回归其位置,大小和方向。与水平相比,定向框更紧密地围绕了目标的轮廓,因此克服了表中列出的所有缺点。
  给定两个框,检测算法评估它们的距离非常重要,该距离用于在训练期间选择阳性样本,并抑制检测中的重复预测。水平框常用的标准是交并比(IoU),旋转框也可以使用。两个目标框 A A A B B B之间的 I o U IoU IoU定义如下: I o U ( A , B ) = a r e a ( A ⋂ B ) a r e a ( A ⋃ B ) IoU(A,B)=\frac{area(A \bigcap B)}{area(A \bigcup B)} IoU(A,B)=area(AB)area(AB)其中 ⋂ \bigcap ⋃ \bigcup 是两个定向框之间的布尔运算。定向框之间的布尔运算比BBox更为复杂,因为两个定向框的交集可以是不超过八个边的任何多边形。定向框的另一个标准是角度相关的IoU(ArIoU),其定义如下: A r I o U ( A , B ) = a r e a ( A ^ ⋂ B ) a r e a ( A ^ ⋃ B ) cos ⁡ ( θ A − θ B ) A r I o U 180 ( A , B ) = a r e a ( A ^ ⋂ B ) a r e a ( A ^ ⋃ B ) ∣ cos ⁡ ( θ A − θ B ) ∣ ArIoU(A,B)=\frac{area(\hat A \bigcap B)}{area(\hat A \bigcup B)}\cos (\theta_A-\theta_B)\\ArIoU_{180}(A,B)=\frac{area(\hat A \bigcap B)}{area(\hat A \bigcup B)}| \cos (\theta_A-\theta_B) | ArIoU(A,B)=area(A^B)area(A^B)cos(θAθB)ArIoU180(A,B)=area(A^B)area(A^B)cos(θAθB)其中 θ A \theta_A θA θ B \theta_B θB是定向框 A A A B B B的角度, A ^ \hat A A^是与定向框 A A A保持相同参数的定向框,角度参数是 t h e t a B theta_B thetaB而不是 θ A \theta_A θA。ArIoU考虑了角度差,因此,当定向框角度差从0度变为90度时,定向框 A A A B B B之间的 A r I o U ArIoU ArIoU单调减小。当 ( θ A − θ B ) (\theta_A-\theta_B) (θAθB)接近180度时,这两种定义的行为有所不同。
   I o U IoU IoU A r I o U ArIoU ArIoU的使用方式不同。 A r I o U ArIoU ArIoU用于训练,因此它可以强制模型学习直角,而 I o U IoU IoU用于非最大抑制(NMS),因此可以有效去除角度不准确的预测。

[论文解读]

  定向框使用卷积结构进行检测,如下图所示。输入图像经过多层卷积网络以生成检测结果。最后一个卷积层用于预测,其他卷积层用于特征提取。预测层包括K个通道,其中K是每个像素位置中预选框的数量。预选框是一系列预定义的定向框,对于每个预选框,预测层将输出一个表示其是否为目标对象或背景的置信度预测向量以及一个5维向量,该向量为预测目标定向框之间的参数偏移量和相应的预选框。需要进行解码处理才能将偏移量转换为准确的预测定向框。最后,对预测的定向框进行置信度排序,并通过NMS删除重复的预测。

20200715213639709.png

  多角度预选框在中扮演重要角色。卷积结构确保预选框可以在不同位置移动以搜索目标对象。在每个像素位置上,预选框旋转角度以生成多角度预测,这是定向框与其他基于边界框的方法之间的关键区别。检测中使用的宽高比根据对象类型决定的,这减少了预选框的总数。

[训练网络]

  从SSD训练过程扩展到涉及角度估计。在训练过程中,每个真实定向框根据其与预选框的 A r I o U ArIoU ArIoU分配了预选框。 A r I o U ArIoU ArIoU是非交换函数,这意味着 A r I o U ( A , B ) ArIoU(A,B) ArIoU(A,B) A r I o U ( B , A ) ArIoU(B,A) ArIoU(B,A)不同。当预选框 P P P与真实定向框 G G G满足 A r I o U ( P , G ) > 0.5 ArIoU(P,G)>0.5 ArIoU(P,G)>0.5则匹配成功。分配后,匹配的预选框被视为正样本,并负责计算位置损失和回归角度。 A r I o U ArIoU ArIoU的使用有助于训练过程选择具有适当角度的预选框作为正样本,因此可以在训练过程中大致了解物体的角度信息。匹配后,大多数预选框为负样本。
  通过添加角度相关项,将定向框的目标损失函数从SSD的目标损失函数进行扩展。总体目标损失函数如下: L ( x , c , l , g ) = 1 N ( L conf  ( c ) + L rbox  ( x , l , g ) ) \mathrm{L}(x, c, l, g)=\frac{1}{N}\left(\mathrm{L}_{\text {conf }}(c)+\mathrm{L}_{\text {rbox }}(x, l, g)\right) L(x,c,l,g)=N1(Lconf (c)+Lrbox (x,l,g))
  其中 N N N为匹配的预选框的数量。置信度损失 L c o n f ( c ) L_{conf}(c) Lconf(c)是所有选择的正样本和负样本的两类softmax损失。定向框回归损失 L r b o x ( x , l , g ) L_{rbox}(x,l,g) Lrbox(x,l,g)类似于SSD和Faster R-CNN,其中计算了预测定向框与地面真实定向框之间的smooth L1 loss:
L r b o x ( x , l , g ) = ∑ i ∈ P o s ∑ j ∑ m ∈ { c x , c y , w , h , a } x i j smooth ⁡ L 1 ( l ^ i m − g ^ j m ) \begin{array}{l}L_{\mathrm{rbox}}(x, l, g) \\=\sum_{i \in P o s} \sum_{j} \sum_{m \in\{c x, c y, w, h, a\}} x_{i j}\operatorname{smooth}_{\mathrm{L} 1}\left(\hat{l}_{i}^{m}-\hat{g}_{j}^{m}\right)\end{array} Lrbox(x,l,g)=iPosjm{cx,cy,w,h,a}xijsmoothL1(l^img^jm)其中 x i j ∈ { 1 , 0 } x_{ij}\in\{1,0\} xij{1,0}是将第 i i i个预选框与第 j j j个真实定向框进行匹配的指标。定义如下的 l ^ \hat l l^ g ^ \hat g g^,分别是参数真实值 g g g与其相应的预选框 l l l的偏移量: t ^ c x = ( t c x − p c x ) / p w , t ^ c y = ( t c y − p c y ) / p h t ^ w = log ⁡ ( t w / p w ) , t ^ h = log ⁡ ( t h / p h ) t ^ a = tan ⁡ ( t a − p a ) \begin{array}{c}\hat{t}^{c x}=\left(t^{c x}-p^{c x}\right) / p^{w}, \quad \hat{t}^{c y}=\left(t^{c y}-p^{c y}\right) / p^{h} \\\hat{t}^{w}=\log \left(t^{w} / p^{w}\right), \quad \hat{t}^{h}=\log \left(t^{h} / p^{h}\right) \\\hat{t}^{a}=\tan \left(t^{a}-p^{a}\right)\end{array} t^cx=(tcxpcx)/pw,t^cy=(tcypcy)/pht^w=log(tw/pw),t^h=log(th/ph)t^a=tan(tapa)
上式中分别是位置回归,尺寸回归和角度回归。角度回归项应用正切函数以适应角度参数的周期性。

[补充细节]

[金字塔输入]

  应用金字塔输入策略,即将原始图像重新缩放为不同的分辨率,并分割为重叠的300×300的patch。定向框网络将应用于每个子图像,并且该网络仅检测具有适当大小的目标。非最大抑制应用于整个图像的检测结果,这不仅抑制子图像内的重复预测,而且还抑制不同子图像的重叠区域的重复预测。金字塔输入策略可帮助检测网络在大小物体之间共享特征。此外,本文使用的卫星图像通常非常大,因此子图像的分割过程和非最大抑制有助于检测超大图像中的物体。

[卷积结构]

  定向框使用删除全连接层的VGG进行检测。删除conv4_3之后的所有全连接层,卷积层和池化层。然后,在conv4_3层之后添加一个3×3卷积层。conv4_3的特征图为38×38,因此可能会出现小于8个像素的小目标漏检。

[预选框设置]

  本文对三个DRBox网络分别进行了车辆检测,船舶检测和飞机检测的训练。比例和输入分辨率设置相同确保现有RBox的区域充分覆盖目标,因此可以有效地捕获不同大小的对象。在船舶检测中,很难区分目标的头和尾。在这种情况下,真实定向框和多角度预选框的角度在0度到180度之间变化。用预选框检测舰船目标,定向框的大小为 20 × 8 , 40 × 14 , 60 × 17 , 80 × 20 , 100 × 25 20×8,40×14,60×17,80×20,100×25 20×8,40×14,60×17,80×20,100×25像素,角度为 0 : 30 : 150 0:30:150 0:30:150。使用尺寸为 25 × 9 25×9 25×9像素且角度为 0 : 30 : 330 0:30:330 0:30:330的现有RBox来检测车辆对象;预选框尺寸为 50 × 50 , 70 × 70 50×50,70×70 50×50,70×70像素,角度为 0 : 30 : 330 0:30:330 0:30:330,可以检测出飞机物体。用于舰船,车辆和飞机检测的每个图像的预选框的总数分别为43320、17328和34656。

  在NVIDIA GTX 1080Ti和Intel Core i7上DRBox达到70-80 fps。输入金字塔策略产生的时间成本不超过 4 / 3 4/3 4/3倍。考虑到子图像之间的 1 / 3 1/3 1/3重叠,DRBox达到了每秒1600×1600像素的处理速度。使用相同的卷积网络架构,在作者的数据集上,SSD和更快的R-CNN的速度分别为70 fps和20 fps。

[结果分析]

[数据集]

  作者的方法应用于卫星遥感图像的目标检测。作者的数据集包括三类对象:车辆,轮船和飞机。车辆是从中国北京的市区收集的。船只在长江,珠江和东海以外的码头和港口附近收集。飞机是从中美15个机场的图像中收集的。该数据集最近包括约12000辆汽车,3000艘船和2000架飞机。取出约2000辆汽车,1000艘船和500架飞机作为测试数据集,并使用其他数据进行训练。
  图像中的每个对象都用RBox标记,该RBox不仅指示对象的位置和大小,还指示对象的角度。开发了Matlab工具以使用RBoxes标记数据。

[基准]

  作者将DRBox的性能与使用BBox的检测器进行比较。SSD和Faster R-CNN用作基于BBox的方法的基准。所有目标检测网络使用相同的卷积架构和相同的训练数据。针对数据集优化了SSD中使用的预选框和Faster R-CNN中使用的预选框。所有其他超参数也针对数据集进行了优化。

[检测结果]

  下图展示了使用RBox(DRBox)和BBox(SSD)检测到的船舶,车辆和飞机。与IoU> 0.5的真实边界框匹配的预测边界框以绿色绘制,而假阳性和假负性预测结果分别以黄色和红色绘制。DRBox可成功检测到港口区域和开阔水域中的大多数船舶,而SSD几乎无法检测到附近的船舶。车辆和飞机的检测结果还显示,与DRBox相比,SSD产生更多的虚警和误检。

20200716121741968.png

  下图显示了DRBox的更多结果。与开放水域相比,港口区域的船舶检测更具挑战性,而DRBox在两种情况下均能很好地完成。由于体积小且背景复杂,因此很难检测到车辆。在作者的数据集中,每辆车的长度约为20像素,宽度约为9像素。幸运的是,作者发现DRBox成功地检测了隐藏在高楼大厦阴影下或停在彼此之间非常近的车辆,还发现DRBox不仅可以输出汽车的位置,而且可以预测每辆汽车的行驶方向。

20200716121818799.png2020071612245053.png
202007161222320.png20200716122341410.png20200716122353629.png

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接: https://blog.csdn.net/qq_36449741/article/details/107366835

知识分享:美颜算法原理-爱代码爱编程

转载链接为:https://blog.csdn.net/hahabeibei123456789/article/details/94592172 美颜大致上可以分为两块:美白和磨皮。如果玩过Photoshop的都知道其实美颜其实就是四大步:1.用具有保边效果的滤波算法对图像进行模糊处理。2.用肤色检测算法保护非皮肤区域。3.将模糊后的图像和原图进行图像融

浅谈工业4.0背景下的空中数据端口,无人机3D 可视化系统的应用-爱代码爱编程

前言 近年来,无人机的发展越发迅速,既可民用于航拍,又可军用于侦察,涉及行业广泛,把无人机想象成一个“会飞的传感器”,无人机就成了工业4.0的一个空中数据端口,大至地球物理、气象、农业数据、小至个人位置信息,无人机将引爆一场空中的大数据革命!本系统则是通过 Hightopo 的 HT for Web 产品来搭建的一款 无人机 3D 可视化系统,通过对无人

一文普及Python语言的优缺点,不要错过哟!-爱代码爱编程

Python这门语言的魅力和影响力已经远超Java、C、C++等编程语言前辈,在之前主流的十大编程语言中,Python排名第一。被广大使用者誉为“更美好”编程语言。也常常被昵称为“胶水语言”,Python这门语言拥有很多的优势,那么任何一种东西就不可能是十全十美的,Python同样也是,它也有自己的优缺点。Python究竟有哪些优缺点呢?跟着我一起来看一下

Rank-consistent Ordinal Regression for Neural Networks-爱代码爱编程

Rank-consistent Ordinal Regression for Neural Networks 摘要 分类任务的网络结构已经得到显著的发展,但是常用的损失函数(例如多类别交叉熵)不能解决ranking(排名)和序数回归的问题。 本文作者提出了一个新框架(Consistent Rank Logits,CORAL),该框架具有rank-mo

james Yang - 红绿灯-爱代码爱编程

import turtle import time turtle.shape("turtle") turtle.pensize(30) turtle.bgcolor("blue") turtle.up() turtle.goto(-55,200) turtle.down() turtle.fd(110) turtle.right(90) turtle.fd

CIO分享:聊天机器人在企业IT HelpDesk场景中的应用-爱代码爱编程

提交工单或者拿起电话打电话给IT服务台(Helpdesk)的IT处理方式可能会成为过去式,用户希望快速、甚至无接触的解决他们的问题,人工智能聊天机器人是很好的解决问题的方案,也是未来智能化IT服务的发展方向。 以下是我们为内部IT Helpdesk(IT帮助台)引入人工智能聊天机器人遇到的问题和总结的经验,分享给大家,希望对有类似需求的CIO有所帮助

sklearn使用之Pipeline、FeatureUnion、GridSearchCV代码示例-爱代码爱编程

sklearn使用之Pipeline、FeatureUnion、GridSearchCV代码示例 示例一:使用pipeline串联处理操作、使用GridSearchCV搜索最佳参数组合 from sklearn.feature_extraction.text import CountVectorizer #计数矢量器 from sklearn.feat

Multi-Scale Boosted Dehazing Network with Dense Feature Fusion网络架构分析及代码注释-爱代码爱编程

本文将就Multi-Scale Boosted Dehazing Network with Dense Feature Fusion网络架构进行分析,并给出对应代码的注释 待处理的雾图从左下角输入,经过Genc,Gres,Gdec三个部分之后得到处理好的去雾图片。 在Genc部分, 雾图首先被传入到一个步长为1的卷积层中提取浅层信息,输出层数为16,并把

GBDT、Xgb、Lgb对比以及常见面试题-爱代码爱编程

GBDT、Xgb、Lgb对比以及常见面试题 GBDT特点残差正则化Xgb特点正则化Lgb常见面试题RF与GBDT之间的区别GBDT训练时长GBDT并行部分Xgb与GBDT的区别Lgb与Xgb的区别 之前写了一点RF的东西,作为决策树+bagging的模型自然经常会被拉出来和决策树+boosting的模型进行对比;而GBDT、Xgb、Lgb一系列的

机器学习入门数学书籍推荐(部分资源有下载链接)-爱代码爱编程

许多同学在入门机器学习时总喜欢从公式推导开始看,但又经常觉得很多地方看不懂。这自然就是数学基础不够导致的。虽然我们非常推荐以直接调包的方式入门学习,但这种方式也仅适合入门。其实无论是在机器学习、人工智能(现在广义中所指的含义),还是在许多较为传统的IT项目中,数学基础都是必不可少的。本文就简单总结机器学习中需要的数学知识以及对应的学习教材。 一、理工科数

CIO分享:聊天机器人在企业IT HelpDesk场景中的应用-爱代码爱编程

提交工单或者拿起电话打电话给IT服务台(Helpdesk)的IT处理方式可能会成为过去式,用户希望快速、甚至无接触的解决他们的问题,人工智能聊天机器人是很好的解决问题的方案,也是未来智能化IT服务的发展方向。 以下是我们为内部IT Helpdesk(IT帮助台)引入人工智能聊天机器人遇到的问题和总结的经验,分享给大家,希望对有类似需求的CIO有所帮助

( 保证能看懂系列)集成算法之Boosting -XGboost 详细原理-爱代码爱编程

预备知识: (1)GBDT实现原理  https://blog.csdn.net/Lee_Yu_Rui/article/details/107309184 https://blog.csdn.net/Lee_Yu_Rui/article/details/107294360 (2)bias 和 variance (3)L1 和 L2 正则化(Rid