关于深度学习:基于密度图的航空物体检测理论与代码实现

48次阅读

共计 3768 个字符,预计需要花费 10 分钟才能阅读完成。

作者 | lcl
编辑 | CV 君
报道 | 我爱计算机视觉(微信 id:aicvml)

本文来谈一下基于深度学习的航空物体场景下的物体检测。航空物体这类场景个别由无人机空拍来收集数据,而后进行后处理来满足特定的工作场景,有些状况下要求实现实时反馈,甚至多任务。

这里探讨的航空物体检测是其中的一个分支,这类论题最近两年慢慢火起来。具体来说,从 2017 年开始,属于这类工作相干,且有较大影响的论文在 CVPR,ICCV,ECCV 等国内计算机视觉顶级期刊中出镜率越来越高,波及相干题目的比赛也越来越多。

和通用物体检测一样,航空物体检测也经验了从无到有的过程。乍一看,这两类工作都属于物体检测(object detection)的领域,而以后通用物体检测器曾经十分的多,不论是双阶段的 fast rcnn 系列还是单阶段的 yolo 系列,貌似办法是能够拿来间接套用的。然而,航空物体检测因为其特殊性,附带有下列挑战:

  1. 数据收集的过程由无人机拍摄执行。因为是低空拍摄,收集到的物体相比拟于个别物体尺度更小,整体散布稠密。相机随着焦距变换,导致数据会有肯定水平的扭曲效应,具体表现为前后图片尺度不一

  2. 收集的数据受光照,地理位置及地形,气象等天然因素影响,像素散布简单,导致数据集物体检测难度显著回升

  3. 受到拍摄角度的影响,密集物体场景下物体会有遮挡或梗塞的状况,这些物体的真值不全,不利于模型训练

  4. 天然场景下无奈保障每一类物体平衡呈现于数据集中,因此数据集类散布不平衡

为了读者更好地了解上述挑战,上面的一组图比照了天然物体与航空物体的利用场景。

天然物体(左图)VS 航空物体(右图)

这些问题叠加在一起对航空场景下的物体检测提出了较高的要求。为了能很好的解决这个问题,最近几年的主会和 workshop 都提出了解决方案。

主会中比方 2019 年 ICCV 的 ClusDet“Clustered Object Detection in Aerial Images”提出应用聚类形式做图像切分,尽可能地通过聚类合并前景像素来生成高质量的切块,以防止检测器节约过多工夫在背景上。同时为了改正生成的切块的尺度,追加了 scalenet 来均衡。

再比方强调用检测器来发现检测弱点,进一步学习并从新检测,心愿基于艰难区域检测(DREN)的网络“How to fully exploit the abilities of aerial image detectors”这些计划都是十分有启发性的,也获得了较好的精度。

然而这些计划的精度还是不够令人满意。此外除了检测网络,额定追加了两个子网络来帮忙晋升精度,导致整体速度被拉慢。

为了提出更进一步的解决方案,这里笔者介绍一篇来自 CVPR2020 workshop 的论文 ”Density map guided object detection in aerial images”,该论文应用密度图的办法来解决航空物体检测的问题。

相比拟于上述计划,应用了更少的子网络,获得了更进一步的精度和更快的检测速度。论文代码已开源。上面一张图简略展现了基于密度图的办法是如何切分出前景的。

密度图办法切分出前景(foreground)

相比于之前的办法,应用密度图去做航空图像检测能够更快的检测航空图像中的物体。密度图的办法来源于一个相近畛域的利用,也就是人流计数(crowd counting)。人流计数中物体高度密集,散布集中,单个物体的尺度小,和航空物体数据集在这方面高度类似。

在人流计数中一个支流的利用是应用密度图。密度图也能够视为热力求,能够和很好的反馈物体在单个图片中的散布,而背景对密度图没有奉献,所以这种办法其实能够很好的辨别前景和背景。这也是这篇论文想到把密度图引入航空物体检测的一个起因。

基于密度图的航空物体检测(以下简称 DMNet)分为三个大的局部

  1. 密度图预计
  2. 基于密度图宰割输出航空图像并生成前景
  3. 应用生成的前景进行物体检测

DMNet 的网络框架

以下是对三个局部的具体介绍

密度图预计


密度图(density map)预计和人流计数中的密度图预计相近。给定输出航空图像,咱们心愿估测并针对每一类物体的尺度,领导深度学习模型学习其对应的密度,以便在测试数据上生成

绝对应的密度图。常见的人流技术框架(比方 MCNN, CSRNet)应用高斯核卷积来生成密度图, 依据原理不同,有进一步分成动静核和动态核两种。因为人流计数中应用动静核须要满足肯定的假如,而航空图像中不满足(比方假如物体尺寸和其相邻物体间间隔成比例),DMNet 应用的是动态核(fix kernel)来生成密度图。动态核的 sigma 值取全副训练数据集的平均值。

然而,应用动态核办法并没有齐全思考到各个类之间物体的差异性。比方某些物体(公交车,汽车)的尺度比拟大,而某些较小(比方行人)。应用同一个 sigma 无奈贴切的刻画这种差异性。

所以 DMNet 进一步提出基于类别的动态核办法。应用这种办法能够更加粗疏的辨别同一类的前景和背景。下图能够看到这种办法的劣势。

基于类别的动态核办法

在 DMNet 中,作者应用 MCNN 来生成密度图。MCNN 是十分经典的人流计数框架,应用了三种不同尺度的卷积来尽可能捕获特色。应用已有框架间接生成密度图,尽管很直观,然而仍旧有一个问题要探讨。

MCNN 中有两层池化层,所以间接应用 MCNN 会导致生成的特色图缩水。一种解决方案是间接把特色图插值回原尺度,另外则是加两层升采样层解决。

针对这个问题,作者做了试验,试验后果发现,以 MAE 为评估指标,两种解决方案体现差的不大,思考到升采样会吃更多 gpu 内存,最初 DMNet 采纳了第一种计划。

基于密度图宰割输出航空图像并生成前景

在生成了对应的密度图后,咱们须要应用他们来生成前景。因为密度图自身能够通过密度值的高下来间接示意某一像素上有物体的概率,咱们人为定了一个阈值。咱们心愿通过调节这个阈值来尽可能的过滤背景像素,并放弃现有像素的完整性。

具体的做法是,设置一个滑动窗口对密度图进行滑动,每次滑动不重叠。滑动的时候会对以后区域下的像素加和,如果加和大于阈值,咱们保留这个区域,也就是存下这个窗口对应的坐标值。否则咱们间接抛弃(也就是将其视为背景)。咱们重复屡次加和,直到滑动窗口笼罩所有特色图。

上面是上述过程的一个例子。

应用滑动窗口生成 density mask

在咱们实现一次滑动后,咱们会失去多个离散的小区域。为了将这些区域全副连起来,咱们应用八连通域算法来进行连贯。如果最终生成的区域不规则,咱们取这些区域的最左上右下地位,整个连起来。

物体检测

在生成密度切块(density crop)后,咱们把这些图放到物体检测模型中进行训练。训练时原图也参加其中,因为进行切块可能会伤到大物体,所以将原图退出来确保大物体的精度。DMNet 应用了 faster-rcnn rpn 来训练物体检测。须要指出的是,任何物体检测办法都能够用在这一步,并不仅限于 faster rcnn 检测器。

在评估(evaluation)阶段,原图和切好的密度图会被别离送入咱们之前训练的检测器中进行评估。最终的后果会被对立合并在原图对应的后果文件上。DMNet 应用 NMS 算法对检测后果进行后处理。

DMNet 模型体现

DMnet 和论文发表时的 sota 模型间的对比方下图。作者将本人的算法和两个十分常见的航空图像数据集进行比照,应用的数据集别离是 Visiondrone 数据集和 UAVDT 数据集。

DMNet 在 Visiondrone 2018 评估(evaluation)集上的体现

DMNet 在 UAVDT 数据集上的体现

综合来看,DMNet 能进一步晋升大略 1 -1.5AP, 取决于 backbone 的抉择。尤其在小物体检测下面,DMnet 体现不凡,在 Visiondrone 数据集上晋升了近 4AP。

模型钻研(Ablation study)

作者针对于模型如何成果好,进行了多个方面的剖析。

1. 生成密度图时阈值的抉择

阈值抉择在生成密度图时有很大的影响。阈值过低,根本无奈过滤背景像素;而阈值过高,根本不会生成密度切块,或者切块过小反而烦扰学习过程。作者对此做了试验。

阈值抉择对生成密度图的影响

从试验后果来看,施加十分小的阈值,模型体现很差,近乎于间接应用原图检测。所以通过不同的伎俩(比方穿插验证或可视化)抉择正当的阈值是很重要的。

2. 应用密度图切分和平均切分相比是否有劣势

作者比照了密度图切分和更加粗疏的 4 * 3 平均切分(“密度图办法切分出前景”一图中蕴含了这种办法)办法。从试验后果来看,密度图更胜一筹。起因是因为密度图是依据密度来判断切分边界,应用了更加牢靠的情景信息。

3. 应用密度图切分的奉献

应用密度图切分晋升了小物体和中型物体的检测精度,进而整体拉高了整体的检测进度,这也是 DMNet 表现出色的一个起因。

后果展现

总结

这篇文章简略总结了DMNet(Density map guided object detection in aerial images)的原理和工作办法,心愿能对各位看官有帮忙。DMNet 的相干代码已开源,对这篇文章有任何的疑难和指教,欢送发邮件到 lcltopismine3@gmail.com 探讨或者在 github 上提 issues。

论文:https://arxiv.org/abs/2004.05520

代码:https://github.com/Cli98/DMNet

END

正文完
 0