DOTA V1.5数据集:基于航空图像的大规模目标检测数据集

DOTA V1.5数据集:基于航空图像的大规模目标检测数据集,第1张

  目标检测是计算机视觉任务中一个具有挑战性的方向。尽管在过去十年中目标检测在自然场景中有了重大突破,但是在航拍图像的进展是十分缓慢的,这不仅是因为地球表面相同类别物体的规模、方向和形状有着巨大的差异,而且还因为缺少航拍影像中目标对象的标注信息。为了推进“Earth Vision”(也称为“地球观测和遥感”)中目标检测的研究,我们提出了用于航拍影像中用于目标检测的大规模数据集(DOTA)。我们从不同的传感器和平台收集了2806个航拍影像,每张图像的大小约为4000*4000像素,并包含了各种不同比例、方向和形状的目标对象。航拍图像专家将这些DOTA数据集图像中常见的15种对象类别进行标注。完全注释之后的DOTA数据集图像包含188282个实例,每个实例都由四点确定的任意四边形(8 d.o.f.)标记。为了建立地球视觉中目标检测的基准,我们评估了DOTA上最新的目标检测算法。实验表明,DOTA能够代表真实的地球视觉应用,并具有一定的挑战性。

  Earth Vision中的目标检测是指在将地球表面感兴趣的物体(例如车辆、飞机场)定位并预测他们的类别。与传统的目标检测数据集相反,在传统的目标检测数据集中,物体的位置通常由于重力而以一种向上的姿态出现,航拍图像中物体的实例通常以任意状态出现,如图1所示,这取决于航拍视角的关系。

  由于计算机视觉领域的最新进展以及Earth Vision应用的高要求,有大量的研究者已经开始围绕航拍影像中的目标检测开展研究,这些方法中的大多数尝试将原有的目标检测算法应用在航拍影像中。最近,在基于深度学习的目标检测算法取得巨大成功的鼓舞下,Earth Vision的研究者们基于大规模数据集(ImageNet和MSCOCO数据集)预训练模型上进行微调网络的方法,使之在航拍数据集检测中有所改善。

  尽管这种基于微调的方法是可行的,但是如图1所示,航拍图像中的目标检测与常规的目标检测有着以下方面的区别:

  近年来,在一些较为依赖数据的研究中,数据集扮演着十分重要的角色,像MSCOCO这样的大型数据集在促进目标检测和图像捕捉研究方面发挥了重要的作用。当涉及到分类任务和场景识别任务时,ImageNet以及Places也很重要。

  但是,在航拍目标检测中,缺少像MSCOCO和ImageNet这样在图像数量和详细注释方面的数据集,特别是对于开发基于深度学习的算法时,这是Earth Vision研究的主要障碍之一。航拍目标检测对于车辆计数,远程目标跟踪和无人驾驶领域非常有用。因此,创建一个能实际应用的大规模数据集并提出富有挑战性的航拍目标检测基准对于促进该领域的研究十分必要。

  我们认为,一个好的航拍影像数据集应该具有以下四个属性:

1)大量的图片;2)每个类别都有很多实例;3)合适角度的目标注释框;4)许多不同类别的对象,这使得数据集能够应用到实际中。然而目前所公开的航拍数据集存在以下缺点:图像数据和类别不足,缺少更精细的注释以及分辨率过低。而且,它们缺少复杂性并不能足以应用再实际现实世界中。

  像TAS,VEDAI,COWC等数据集只关注车辆,UCAS-AOD包含汽车和飞机,HRSC2016只包含船只,虽然有标注细致的分类信息。但所有这些数据集在类别的数量上都是少的,这对它们在复杂场景的泛化适应上有所约束。作为对比,NWPU VHR-10数据集由10种类型的物体组成,而它的总实例数大概只有3000。关于这些已存在的数据集的具体比较细节在表1中给出。我们在第四部分可以看到,对比这些航拍数据集,DOTA具有更庞大的目标实例数目、随意但是均匀的方向,多样性的分类目录和复杂的航拍场景。此外,DOTA数据集中的场景与真实场景更加一致,所以DOTA数据集对于真实世界应用开发来说是更有帮助的。

  当涉及到普通对象数据集时,ImageNet和MSCOCO因其具有大量的图像、更多的类别和详细的注释而被大多数研究人员所选择。在所有对象检测数据集中,ImageNet的图像数量最多。但是每个图像的平均实例数远少于MSCOCO和我们的DOTA数据集,而且必须拥有干净的背景和精心选择的场景带来了局限性,DOTA数据集中的图像包含大量的对象实例,其中一些图片具有1000多个实例。 PASCAL VOC数据集在每个图像和场景的实例上与ImageNet相似,但是图像数量不足使得它不适合处理大多数检测需求。我们的DOTA数据集在实例编号和场景类型方面类似于MSCOCO,但是DOTA的类别不如MSCOCO那样多,因为可以在航拍影像中能清晰看到的对象时非常有限的。

  此外,在上文提到的大规模普遍目标检测基准中DOTA数据集的特别之处在于使用OBB方法注释,OBB可以很好的区分目标物体的离散与聚集,在第三部分详细描述了使用OBB注释目标物体的好处。在表2中对DOTA,PASCAL VOC,ImageNet and MSCOCO等数据集的比较中给出不同点。

  在航拍数据集中由于存在多种多样的传感器被使用的情况,导致数据集产生偏差。为了消除这些偏差,我们数据集中的图片是由多分辨率多传感器和多平台收集而来的,如谷歌地球。为了提高数据的多样性,我们收集的图片的城市是由图像判读方面的专家来挑选的。在挑选过程中,会记录下精确的地理坐标,来捕捉图片使得确保没有重复的图像。

  我们的DOTA数据集注释选择了15种类别,包括飞机、船只、储蓄罐、棒球内场、网球场、篮球场、田径场、海港、桥、大型车辆、小型车辆、直升飞机、英式足球场、环状交叉路口、游泳池。

  标注类别是由图像判读方面的庄家根据目标物体的普遍性和现实世界中存在的价值来挑选的,前十个类别在已有的数据集中很普遍,我们保留了下来,除了将交通工具的汽车分为大型和小型,因为两种类型的汽车在航拍图像上区别很大。其他的类别主要是由于现实场景的应用。我们选择直升机是考虑到航拍图像中运动物体具有重要的意义,环状交叉路口被选中是因为它在巷道分析中具有重要意义。

  要不要把“stuff”作为一类是值得探讨的,在SUN数据集中,一般说来没有明确的定义说明什么是stuff一类,比如海港、机场、停车场。但是,它们提供的语义信息是对检测有帮助的。我们只采纳了海港分类,因为它的边界容易定义,并且在我们的图片源信息中有丰富的实例。最后拓展的分类是足球场。

  在表2我们比较了DOTA和NWPU VHR_10,后者在先前存在的航拍图像目标检测数据集中有更多的分类数。而且DOTA在目录分类数目和每一类下的实例数目都远超过了NWPU VHR-10。

  我们考虑了许多不同的注释方法。在计算机视觉领域,许多视觉概念(比如区域说明,目标,属性,关系)都可以被一个注释边框说明,对边框的一个普遍描述一般采用 ,其中 表示位置, 是边框的宽和高度。

  没有一定方向的物体可以采用这种注释方式充分注释。然而,在航拍影像中的文本和物体以这种方式标记的边界框不能精确或紧凑地贴合物体的轮廓。如图3(c)所示的极端但实际的普遍存在情况和图(d)比起来,两个边界框之间的重叠是如此之大以至于最先进的对象检测方法也不能区分它们。为了解决这一问题,我们需要一种其他更适合面向这种有一定方向物体的注释方法。

  一个可选选项是采用基于 的边界框,它被应用于一些文本检测基准,即 ,其中 表示从边界框与水平方向的夹角度。但这种方法的缺点是依旧不能贴合围绕住那些不同部分之间可能有较大变形的物体。考虑到航拍图像中物体的复杂场景和物体的各种方位,我们需要放弃这种方法选择其他更灵活易懂的方式。一种可供选择的方法是使用任意四边形边界框,它可以被描述为: ,其中 表示图像中定向边界框的顶点的位置,顶点按顺时针顺序排列,这种方法在定向场景的文本检测中广泛使用。我们受到这些研究的启发,在注释物体时使用这种任意四边形边界框的方式。

  为了进行更具体的注释,如图3所示,我们强调了第一点 的重要性,该点通常表示对象的“首部”。对于直升机,大型车辆,小型车辆,港口,棒球钻石,轮船和飞机等类别,我们选择与之丰富的潜在用途有关的点作为起始点。对于足球场,游泳池,桥梁,地面田径场,篮球场和网球场类别来说,没有视觉上的线索来确定第一个点,因此我们通常选择左上角的点作为起点。

  我们在图4中展示了DOTA数据集中一些已经注释过的例子(不是全部的初始图像)

  为了确保训练数据和测试数据分布大致相同,我们随机选择原始图像的一半作为训练集,将1/6作为验证集,将1/3作为测试集。 我们将为训练集和验证集公开提供所有带有原始事实的原始图像,但不会为测试集提供。 为了进行测试,我们目前正在构建评估服务。

  与其他图像数据集相比,航拍图像一般尺寸很大。我们的数据集中图像的原始大小约为800×800到4000×4000之间不等,而常规数据集中的大多数图像(例如PASCAL-VOC和MSCOCO)则不超过1000×1000。我们在原始完整图像上进标注,而不将其分割成块,以避免将单个实例分割成不同碎片的情况。

  如图1(f)所示,我们的数据集在不同方向的实例中达到了比较好的平衡,这对于网络检测器的鲁棒性提升有很大帮助。此外,我们的数据集更接近真实场景,因为在现实世界中通常会看到各种方向的对象。

  我们还为数据集中的每幅图像提供了空间分辨率,这可以推断出实例的实际大小。空间分辨率对检测任务的重要性有两个方面。首先,它使模型对于相同类别的各种对象更具适应性和鲁棒性。众所周知,从远处看物体会显得更小。具有不同大小的同一对象会给模型造成麻烦并损害分类。但是,通过提供分辨率信息而不是对象的大小,模型可以更加关注形状。其次,可以进行进行更精细的分类。例如,将一艘小船与一艘大型军舰区分开是很简单的。

  空间分辨率还可以用于过滤数据集中标记错误的离群值,因为大多数类别的类内实际大小变化是有限的。在较小的空间分辨率范围内,选择与同类物体尺寸相差较大的物体,可以发现离群值(Outliers)。

  按照[33]中的规定,我们将水平边框的高度(简称为像素大小)称为实例大小的度量。我们根据水平边界框的高度将数据集中的所有实例分为三个部分:较小的范围为10到50,中间的范围为50到300,较大的范围为300以上。图3说明了不同数据集中的三个实例拆分的百分比。显然,PASCAL VOC数据集,NWPU VHR-10数据集和DLR 3K Munich Vehicle数据集分别由中间实例,中间实例和较小实例主导。但是,我们在小实例和中间实例之间实现了良好的平衡,这与现实世界场景更加相似,因此有助于在实际应用中更好地捕获不同大小的对象。

  值得注意的是,像素大小在不同类别中有所不同。例如,车辆可能小到30像素,但是桥梁可能大到1200像素,比车辆大40倍。不同类别实例之间的巨大差异使检测任务更具挑战性,因为模型必须足够灵活以处理极小的物体。

表3:航拍图像和自然图像中某些数据集的实例大小分布比较

  对于基于锚的模型,例如Faster RCNN和YOLO V2,长宽比是至关重要的因素。我们对数据集中所有实例的两种长宽比进行计数,以提供更好的模型设计参考:1)最低程度受限于水平边界框的横纵、2)原始四边形边框的长宽比。图5说明了我们数据集中实例的两种纵横比分布类型,我们可以看到实例的纵横比差异很大。此外,DOTA数据集中有许多横纵比较大的实例。

  航拍图像中常常包括数以千计的实例,它们完全与自然场景图像不同。例如IMANEET数据集中每张图像平均包含2个类别和2个实例,MSCCO共有3.5个类别、7.7个实例。如图5所示我们的DOTA数据集更丰富,每个图像的实例可以高达2000个。

  在一幅图像中有如此多的实例,不可避免地会看到很密集的实例聚集在某个区域。在COCO数据集中,实例并不是逐个注释的,因为图像中的遮挡使之难以将实例与其相邻实例区分开来。在这些情况下,实例组被标记为一个属性名为“crowd”的片段。然而,这种情况不会在航拍图像下出现,因为从航拍视角来看,很少有遮挡物。因此,我们可以在拥挤的实例场景中将实例一个个分别标注。图4展示了聚集着很多实例的一个例子。在这种情况下检测物体对现有的检测方法提出了巨大的挑战。

  我们在DOTA上评估了最新的物体检测方法。对于水平物体检测,我们谨慎地选择Faster R-CNN,R-FCN,YOLO V2和SSD作为我们的基准测试算法,因为它们在一般物体检测中具有出色的性能。对于定向对象检测,我们修改了原始的Faster R-CNN算法,以便可以预测正确定向的边界框,表示为 。

  值得注意的是,R-FCN和Faster R-CNN的骨干网络分别ResNet-101,用于SSD的是Inception V2,YOLO V2用的是GoogLeNet 。

  为了全面评估基于深度学习的DOTA检测方法的现状,我们提出了两个任务,即在水平边界框(简称HBB)上进行检测以及在定向边界框(简称OBB)上进行检测。更具体地说,无论采用何种方法训练,我们都根据两种不同的基础事实(HBB或OBB)评估这些方法。

  DOTA的图像太大,无法直接发送到基于CNN的探测器。因此,我们将原始图像裁剪为一系列1024*1024的面片,步幅设置为512。注意在裁剪过程中,完整的物体可能会被切成两部分。为了方便起见,我们将原始对象的面积为 ,划分部分 的面积为 然后计算:

  最终我们将U<0.7的部分标记为“difficult”,其他的标记和原始注释一样。对于那些新生成的部分的顶点我们需要保证它们可以被一个具有4个顺时针排列顶点的定向边界框用一种合适的方法来描述。

  在测试阶段,我们首先将裁剪后的面片送到一个临时的结果中,然后将结果合并在一起,来重构原始图像的检测,最后我们对预测结果使用NMS(非极大值抑制算法)。我们设置NMS的参数阈值对于水平边界框(简称HBB)将阈值设置为0.3,定向的边界框阈值设置为0.1。通过使用这种方式,我们在基于CNN的模型上训练和测试了DOTA数据集。

  对于评价的度量,我们使用和PSASCAL VOC一样的mAP计算方式。

  HBB实验的ground truth 是通过在原始的已标注的边界框上计算轴对称边界框产生的,为了公平起见,我们将实验的配置以及超参数设置为与文章[4,16,25,26]一致。

  在表4中给出了HBB实验的预测结果,我们注意到SSD上的结果比其他模型低很多。我们怀疑可能是因为SSD数据集数据增长策略中的随意裁剪 *** 作,这种 *** 作在普通的目标检测中有用,但是在航拍图像目标检测的大规模小实例上作用有所降低。实验结果也进一步表明了航拍图像和普通目标图像检测在实例大小上的巨大差别。

  OBB的预测比较困难,因为现有的目标检测方法并非针对定向对象而设计。因此,我们依据准确性和效率选择Faster R-CNN作为基础框架,然后对其进行修改使之能预测定向的边界框。

  由RPN(候选区域生成网络)产生的RoIs(兴趣区域)是可以被表示为 的矩形框,更为详尽的解释是 。在R-CNN程序中,每个RoI都附加有一个ground truth定向边界框写作: ,然后R-CNN的输出目标 由以下等式计算:

其中 。

  其他配置和超参数设置保持与Faster R-CNN中所述相同。数值结果显示在表5中。为了与我们为OBB实施的Faster R-CNN进行比较,我们评估了OBB地面实况在HBB上训练的YOLO V2,R-FCN,SSD和Faster R-CNN。如表5所示,在HBB上训练的那些方法的结果比在OBB上训练的Faster R-CNN的结果低得多,这表明对于空中场景中的定向目标检测,相应地调整这些方法可能会得到更好的结果。

  当我们分析表4中呈现的数据结果时,小型汽车,大型汽车,船只的分类结果不尽人意,因为它们的尺寸较小,并且在航拍图像中位置十分密集。然而大型的离散物体如飞机,游泳池、网球场等,表现出的效果较好。

  在图6中我们比较了HBB和OBB两种检测方式的结果。在图6(a)和6(b)中表示的紧密图像中,HBB实验的定位精度要比OBB实验差的多,并且许多结果受到先前工作的限制。所以OBB回归是定向物体检测的一个正确方式,并且可以被真正在实际中应用。在图6(c)中,使用OBB来标注纵横比较大的物体(比如桥和海港),对于现在的检测器来说很难做回归。但是在HBB方法中,这些物体通常有着较为普通的纵横比,因此结果如图6(d)看起来比OBB好很多。但是在一些极度拥挤的场景下,比如图6(e)和6(f),HBB和OBB的结果并不尽如人意,表明了现阶段检测器具有一定的缺陷。

  交叉数据集验证是数据集泛化能力的一个评价方式。我们选择UCAS-AOD数据集来做交叉数据集泛化,因为它与其他航空物体检测数据集相比有着更大的数据量。因为没有UCAS-AOD数据集的官方划分方式,于是我们随机选择1110个进行训练和400个进行测试。选择YOLO V2作为所有测试实验的检测器,并且将所有的ground truth使用HBB标注。将UCAS-AOD数据集中原始图片大小改为960*544作为输入的图片大小,其余的配置不改变。

  结果显示在表6中,对于YOLOv2-A模型而言两个数据集之间的性能差异分别为35.8和15.6。这表明DOTA极大地覆盖了UCAS-AOD,并且具有更多的模式和特性,而UCAS-AOD则不具备这种特性。两种模型在DOTA上的结果都很低,这表明DOTA更具挑战性。

  我们建立了一个大型数据集,用于航拍图像中进行定向物体检测,这个数据集比这个领域中所有现有的数据集都要大。 与一般对象检测基准相反,我们使用定向边界框标注大量分布良好的定向物体。 我们猜测这个数据集是具有挑战性的,并且非常类似于自然的航拍场景,更适合实际应用。我们还为航拍图像物体检测建立了基准,并展示了通过修改主流检测算法生成定向边界框的可行性。

  这个数据集在大图片中检测密集排列的小实例和具有任意方向的超大实例都将特别有意义且具有挑战性。我们相信DOTA不仅会推动Earth Vision中物体检测算法的发展,而且还会对计算机视觉中的一般物体检测提出有趣的问题。

当你驾轻就熟地用无人机拍摄了某个地区的航拍图像后,除了分享到微信朋友圈里,还可以做些什么呢?或许 OpenDroneMap 能助你开启思路。

OpenDroneMap 是一个开源的航拍图像处理工具,可以把航拍图像进行点云、正射影像和高程模型等转换处理。

一般的无人机用的都是「傻瓜式」的相机,其实这跟你用手机或普通数码相机拍的没差,只是拍摄的角度不一样而已。它们拍出来的照片都是非量测影像(non-metric imagery),而 OpenDroneMap 则可以将这些非量测影像转换成三维地理建模数据,并应用在地理信息系统中。

具体而言,OpenDroneMap 可以将航拍图像处理为下面几种格式的数据:

点云(Point Clouds)

纹理数字表面建模(Textured Digital Surface Models)

正射校正影像(Orthorectified Imagery)

数字高程模型(Digital Elevation Models)

……

使用方法

OpenDroneMap 支持 Docker,这意味着你可以在不同的 *** 作系统上运行 OpenDroneMap。下面以 Mac OS 为例,介绍 OpenDroneMap 的使用方法。

1、安装 Docker CE

到 Docker 官网 找到并下载适用于你所使用的 *** 作系统的 Docker CE 版本(Docker EE 是企业版,暂时用不上)。经过「傻瓜式」的安装后,可以在 Terminal 上输入 docker --version 检验 Docker 是否安装成功。

2、下载 OpenDroneMap 的镜像

确认 Docker 成功安装后,在 Terminal 上输入以下指令:

docker pull opendronemap/opendronemap

Docker 就会从 Docker Hub 中下载 OpenDroneMap 的镜像到本地中。为提高下载速度,建议提前使用 Proxifier 之类的工具(建议自行 Google)让 Terminal 走上代理道路。镜像下载完成后,在 Terminal 输入 docker images 指令,就能查看到刚才下载的 OpenDroneMap 的镜像了。

3、创建文件目录

在 Finder 上任意一目录新建一个名为 images 的文件夹,作为待处理图片的存放位置。我的习惯是以「项目名 / images」的方式来对目录进行命名,这样能更直观地管理文件。比如:

//odm_test_1/images

//odm_test_2/images

接下来,就需要把你需要进行处理的航拍影像拷贝到 images 文件夹中了,如果你暂时没有这些航拍图像的话,

我在网站上下载了「aukerman」素材的图像文件,这个范例素材似乎是对某个绿化公园连续拍摄的航拍图像,查看每个图像文件的 info(Command + I),都能找到它的经纬度信息。我们可以用 OpenDroneMap 对这些文件进行「正射影像(拼接)」和「纹理网面建模」的处理。

4、运行 OpenDroneMap

在航拍图像文件拷贝到 images 目录以后,打开 Terminal 并定位到项目文件夹(比如 odm_test_1)中,执行以下指令:

docker run -it --rm \

-v $(pwd)/images:/code/images \

-v $(pwd)/odm_orthophoto:/code/odm_orthophoto \

-v $(pwd)/odm_texturing:/code/odm_texturing \

opendronemap/opendronemap

指令的作用是:通过 OpenDronMap 对 odm_test_1/images 目录下的图像文件同时进行「正射影像(odm_orthophoto)」和「纹理网面建模(odm_texturing)」的图像处理(作为测试,为了节省时间,你可以只选取 odm_orthophoto 或 odm_texturing 其中一种处理方式):

指令解释:

docker run -it --rm

Docker 的运行指令。-it 指让 Docker 分配一个伪输入终端并以交互模式运行容器;--rm 是指在容器运行完之后自动清除以节省电脑存储空间。

-v $(pwd)/images:/code/images

-v 是用来将本地目录绑定到容器中的,在本例子中,是让 OpenDroneMap 知道待处理的照片在哪里;冒号前面,代表的是本地 images 路径,其中 (pwd) 代表当前 Teminal 定位目录的绝对路径,你可以更改为其他目录的绝对路径;冒号后面,是指容器的路径,这个是不能更改的。

-v $(pwd)/odm_orthophoto:/code/odm_orthophoto

这行指令,是指希望使用 OpenDroneMap 对图像文件进行怎么样的处理,你可以根据项目的需要,输入不同的处理指令,OpenDroneMap 提供了以下几种处理方式:

odm_meshing # 3D 网面建模

odm_texturing # 纹理网面建模

odm_georeferencing # 地理配准后的点云图

odm_orthophoto # 正射影像图

opendronemap/opendronemap

这是指明需要调用的镜像,这里是调用 Repository 为 opendronemap/opendronemap 的镜像,可以用该镜像的 tag(如果有设置的话)和镜像 ID 替代。

5、查看结果

指令执行后,就交给程序去处理了。运行时间可能会稍长,请耐心等候,一切顺利的话,Terminal 就会下面的提示:

然后在项目的文件夹中(比如 odm_test_1),就能在 odm_orthophoto 和 odm_texturing 目录中看到对应的输出结果了。

正射影像的输出结果的 png 预览图:

或许有朋友会说,最后还不是一张常见的无人机俯视航拍图,但其实 odm_orthophoto 的输出结果还有一个后缀为 tif 的 GeoTIFF 文件,这可以应用在 QGIS 上作为光栅图层,供地理信息分析之用(比如实现地图的修测更新)。

小结

上述教程中的 GIS 术语可能翻译得不够到位,如有不妥的地方望请指出。

整体来说,有 docker 这样的工具能很大程度上减少配置开发环境的时间,也简化了不少的 *** 作步骤,不过需要注意的是 OpenDroneMap 的项目还是挺占用电脑空间的,所以在 *** 作之前,最好能确保电脑有足够的剩余空间。

上面的例子采用的是范例素材的航拍图像,如果要实际应用到自己的项目中,则需要自己使用无人机,结合相关软件的航线规划和定时拍摄功能,对某一个地区进行连续拍摄,将拍摄的图像文件导入到「images」文件夹中,再按教程步骤执行就能实现数据处理了。

此外,Docker 也有 Windows 版本,把教程中 Terminal 的 *** 作换成 Windows 系统的 Cmd,或许也能实现(没有尝试过,所以不敢打包票)。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/6686889.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-26
下一篇 2023-03-26

发表评论

登录后才能评论

评论列表(0条)

保存