本文主要是介绍YOLT(you only look twice): Rapid multi-scale object detection in satellite imagery(中文翻译simrdwn),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
摘要
在大片图像中检测小物体是卫星图像分析的主要问题之一。虽然地面图像中的对象检测受益于对新深度学习方法的研究,但将此类技术过渡到高空图像并非易事。挑战之一是每幅图像的绝对像素数量和地理范围:单个 DigitalGlobe 卫星图像包含 > 64 km 2 和超过 2.5 亿像素。另一个挑战是感兴趣的对象很小(通常只有约 10 个像素),这使传统的计算机视觉技术变得复杂。为了解决这些问题,我们提出了一种YOLT(You Only Look Twice),以≥ 0.5 km 2 /s 的速率评估任意大小的卫星图像。所提出的方法可以在多个传感器上使用相对较少的训练数据快速检测到尺度差异很大的对象。我们以原始分辨率评估大型测试图像,并为车辆定位产生 F 1 > 0.8 的分数。我们通过以降低的分辨率系统地测试管道来进一步探索分辨率和对象大小的要求,并得出结论,只有 5 个像素大小的对象仍然可以高可信度地定位。
关键字:计算机视觉; 卫星图像;目标识别
1 引言
自从在 ImageNet [13] 竞赛中引入卷积神经网络 [5] 以来,计算机视觉技术在过去几年取得了长足的进步。
ImageNet [13]、PASCAL VOC [2] 和 MS COCO [6] 等大型、高质量标记数据集的可用性帮助推动了在近实时运行的快速对象检测方面取得了许多令人印象深刻的进步;最好的三个是:Faster R-CNN [12]、SSD [7] 和 YOLO [10] [11]。 Faster R-CNN 通常摄取 1000 × 600 像素图像,而 SSD 使用 300 × 300 或 512 × 512 像素输入图像,而 YOLO 在 416 × 416 或 544 × 544 像素输入上运行。虽然所有这些框架的性能都令人印象深刻,但没有一个可以远远接近摄取卫星图像典型的 ∼ 16, 000×16, 000 输入尺寸。在这三个框架中,YOLO 在 PASCAL VOC 数据集上展示了最快的推理速度和最高分。作者还表明,该框架在 Picasso 数据集 [3] 和 People-Art 数据集 [1] 上表现出优于其他框架(即 SSD 和 Faster R-CNN)的卓越性能,从而表明该框架可高度转移到新领域。由于 YOLO 的速度、准确性和灵活性,我们相应地利用该系统作为我们卫星图像对象检测框架的灵感。
由于多种原因,将深度学习方法应用于传统的对象检测管道并非易事。 卫星图像的独特方面需要算法贡献来解决与前景目标对象的空间范围、完全旋转不变性和大规模搜索空间相关的挑战。 排除实现细节,算法必须针对:
空间范围小 在卫星图像中,感兴趣的对象通常非常小且密集,而不是 ImageNet 数据中典型的大而突出的主题。 在卫星领域,分辨率通常定义为地面采样距离 (GSD),它描述了一个图像像素的物理尺寸。 商用图像从最清晰的数字地球图像的 30 厘米 GSD 到行星图像的 3 - 4 米 GSD 不等。 这意味着对于像汽车这样的小物体,即使在最高分辨率下,每个物体的范围也只有 15 个像素左右。
完全旋转不变性 从头顶观察的对象可以具有任何方向(例如,船舶可以具有 0 到 360 度之间的任何航向,而 ImageNet 数据中的树是可靠的垂直方向)。
训练示例频率 训练数据相对缺乏(尽管 SpaceNet 等努力试图改善这个问题)
超高分辨率 输入图像是巨大的(通常是数百兆像素),因此不能简单地将采样缩小到大多数算法所需的输入大小(数百像素)(参见图 1)。
他在这项工作中的贡献单独解决了这些问题中的每一个,同时利用了从传感器到物体的相对恒定的距离,这是众所周知的,通常约为 400 公里。 这与面向天底的传感器相结合,导致对象的像素大小一致。
第 2 节更深入地详细介绍了标准算法在应用于卫星图像时所面临的挑战。 这项工作的其余部分被分解以描述拟议的贡献如下。 为了解决小而密集的集群,第 3.1 节描述了一种新的、更细粒度的网络架构。 第 3.2 和 3.3 节详细介绍了我们在原始分辨率下拆分、评估和重新组合任意大小的大型测试图像的方法。 关于旋转不变性和小标记训练数据集大小,第 4 节描述了数据增强和大小要求。 最后,第 6 节详细讨论了算法的性能。
2 相关工作
深度学习方法已被证明对基于地面的物体检测有效,尽管当前的技术对于高空图像应用仍然不是最理想的。
例如,成群结队的小物体(例如成群的鸟)提出了一个挑战 [10],部分原因是上面列出的所有三种卷积网络方法(YOLO、SDD、Faster-RCNN)的多个下采样层。此外,这些多个下采样层导致对象区分的相对过程特征;如果感兴趣的对象在范围内只有几个像素,这就会带来问题。例如,考虑默认的 YOLO 网络架构,它以 32 倍的因子进行下采样并返回一个 13 × 13 的预测网格;这意味着如果对象质心的间隔小于 32 个像素,则对象区分是有问题的。因此,我们实现了具有更密集最终预测网格的独特网络架构。这通过产生更细粒度的特征来帮助区分类来提高性能。这种更精细的预测网格还允许对更小的对象和更密集的集群进行分类。
对象检测算法与卫星图像斗争的另一个原因是它们难以概括具有新的或不寻常的纵横比或配置的对象 [10]。 由于对象可以具有任意方向,因此这种有限的旋转不变性范围很麻烦。 我们的方法通过数据的旋转和扩充来解决这种复杂性。 具体来说,我们围绕单位圆旋转训练图像以确保分类器与目标方向无关,并随机缩放 HSV(色调饱和度值)中的图像以增加分类器对变化的传感器、大气条件、 和照明条件。
对象检测算法与卫星图像斗争的另一个原因是它们难以概括具有新的或不寻常的纵横比或配置的对象 [10]。 由于对象可以具有任意方向,因此这种有限的旋转不变性范围很麻烦。 我们的方法通过数据的旋转和扩充来解决这种复杂性。 具体来说,我们围绕单位圆旋转训练图像以确保分类器与目标方向无关,并随机缩放 HSV(色调饱和度值)中的图像以增加分类器对变化的传感器、大气条件、 和照明条件。
在高级对象检测技术中,网络在训练和测试时看到整个图像。 虽然这极大地改善了背景差异,因为网络为每个对象编码上下文(背景)信息,但典型硬件(具有 12GB RAM 的 NVIDIA Titan X GPU)上的内存占用对于 256 兆像素图像是不可行的。
我们还注意到,大尺寸卫星图像排除了解决上述某些问题的简单方法。 例如,对图像进行上采样以确保感兴趣的对象对于标准架构来说足够大和分散是不可行的,因为这种方法也会将运行时间增加许多倍。 类似地,在图像上运行滑动窗口分类器以快速搜索感兴趣的对象在计算上变得难以处理,因为每个对象大小都需要多个窗口大小。
对于透视,如果目标是 DigitalGlobe 图像中的 10 米船,则必须评估超过一百万个滑动窗口切口。 我们的反应是利用快速目标检测算法来评估卫星图像,结合合理大小的图像芯片(~200 米)上的局部图像插值和多尺度探测器集合。
为了演示卫星图像分析的挑战,我们训练了一个具有标准网络架构(13×13 网格)的 YOLO 模型,以识别 COWC 开销图像数据集 [8] 的 416 × 416 像素切口中的汽车(有关更多详细信息,请参阅第 4 节 在这个数据集上)。 由于对测试图像进行了 100 倍的下采样,因此使用该网络天真地评估大型测试图像(见图 2)会产生 ~ 100% 的误报率。 即使大小合适的图像芯片也存在问题(再次参见图 2),因为标准的 YOLO 网络架构无法区分质心间隔小于 32 像素的对象。 因此,即使将注意力限制在小切口上,在具有标准架构的高密度区域中,性能通常也很差。
3 YOU ONLY LOOK TWICE
为了解决第 2 节中讨论的局限性,我们实现了一个针对高空图像优化的对象检测框架:You Only Look Twice (YOLT)。 我们扩展了 Darknet 神经网络框架 [9] 并更新了许多 C 库,以支持地理空间图像分析并与外部 Python 库集成。 我们选择利用 Python 的灵活性和庞大的用户社区进行预处理和后处理。 在对 C 代码的更新和用 python 编写的预处理和后处理代码之间,感兴趣的各方不需要任何 C 知识来训练、测试或部署 YOLT 模型
3.1 网络结构
为了减少模型的粗糙程度并准确检测密集物体(例如汽车或建筑物),我们实现了一个网络架构,该架构使用 22 层和 16 倍下采样。因此,416 × 416 像素的输入图像产生 26 × 26 的预测网格。 我们的架构受到 30 层 YOLO 网络的启发,尽管这种新架构针对小型、密集的对象进行了优化。密集网格对于机场等漫反射对象是不必要的,但对于停车场等高密度场景至关重要(见图 2)。 为了提高小对象的保真度,我们还包括一个传递层(在 [11] 中描述,类似于 ResNet [4] 中的身份映射),它将最终的 52 × 52 层连接到最后一个卷积层,允许检测器访问这个扩展特征图的更细粒度的特征。
每个卷积层保存最后一个使用泄漏校正线性激活批量归一化,保存使用线性激活的最后一层。 最后一层提供边界框和类别的预测,大小为:N f = N 个框 × (N 个类别 + 5),其中 N 个框是每个网格的框数(默认为 5),N 个类别是数量 对象类 [10]。
3.2 测试过程
在测试时,我们将任意大小的测试图像划分为可管理的剪切图,并通过我们训练的模型运行每个剪切图。分区通过具有用户定义的 bin 大小和重叠(默认为 15%)的滑动窗口进行,参见图 4。我们通过根据架构命名每个切口来记录每个滑动窗口切口的位置:
ImageName | row_column_height_width.ext
例如:panama50cm | 1370_1180_416_416.tif
3.2 后期
大部分的卫星(或空中)图像在于其固有的映射全球较大范围能力的效用。因此,小图像碎片远不如卫星平台产生的大视野图像有用。 因此,目标检测流程的最后一步是将数百或数千个测试碎片拼接成一个最终的图像条。
对于每个 cutout,从分类器返回的边界框位置预测根据该 cutout 的行和列值进行调整;这提供了原始输入图像中每个边界框预测的全局位置。15% 的重叠确保将分析所有区域,但也会导致剪切边界上的重叠检测。我们将非最大抑制应用于边界框预测的全局矩阵,以减轻这种重叠检测。
4 训练数据
训练数据是从三个来源的大图像的小碎片中收集的:DigitalGlobe 卫星、Planet 卫星和空中平台。 标签由每个对象的边界框和类别标识符组成。 我们最初关注五个类别:飞机、船只、建筑足迹、汽车和机场。 对于尺度非常不同的物体(例如飞机与机场),我们在 6.2 节中展示了在不同尺度上使用两个不同的检测器是非常有效的。
Cars 带有上下文的汽车开源 (COWC) [8] 数据集是一个大型、高质量的带注释汽车集,来自在多个区域收集的开源图像。 数据是通过空中平台收集的,但在一个类似于卫星图像的最低视角。 该影像的分辨率为 15 厘米 GSD,大约是目前商业卫星影像最佳分辨率(DigitalGlobe 为 30 厘米 GSD)的两倍。 因此,我们使用高斯核对原始图像进行卷积并将图像尺寸减少一半以创建相当于 30 cm GSD 图像。 标签由每辆汽车质心处的一个点组成,我们在每辆汽车周围绘制了一个 3 米长的边界框以进行训练。 我们保留了最大的地理区域(Utah)进行测试,留下了 13,303 辆带标签的训练车。
Building Footprints 第二轮 SpaceNet 数据包括 30 厘米 GSD DigitalGlobe 图像和标记的四个城市的建筑物足迹:拉斯维加斯、巴黎、上海和喀土穆。 标签是精确的建筑足迹,我们将其转换为包含 90% 足迹范围的边界框。 图像分割方法显示出应对这一挑战的巨大希望;尽管如此,我们探索了 YOLT 在建筑轮廓检测方面的性能,承认由于 YOLT 输出边界框,它永远不会实现复杂建筑形状的完美建筑足迹检测。 这四个城市之间有 221,336 座标记建筑物。
Airplanes我们在机场上为 8 个 DigitalGlobe 图像标记了训练集中总共 230 个对象。
Boats我们标记了在沿海地区拍摄的三张 DigitalGlobe 图像,共计 556 艘船。
Airports我们在 37 个 Planet 图像中标记机场用于训练目的,每个图像每个碎片都有一个机场。对于机场大小的物体,需要进行一些下采样,因为即使在低分辨率的 Planet 图像中,跑道的长度也可能超过 1000 像素;因此,出于训练目的,我们将 Planet 图像的采样率降低了 4 倍。
按照计算机视觉标准,飞机、机场和船只的原始训练数据集非常小,而更大的数据集可能会提高第 6 节中详述的推理性能。
我们使用随机梯度下降进行训练并保持 [11] 的许多超参数:每个网格 5 个框,初始学习率为 0.001 ,权重衰减为 0.0005,动量为 0.9。 在单个 NVIDIA Titan X GPU 上训练需要 2 - 3 天。
5 测试图像
为确保评估稳健性,所有测试图像均取自与训练示例不同的地理区域。对于汽车,我们保留Utah最大的地理区域进行测试,产生了 19,807 辆测试汽车。 建筑足迹分为 75/25 个训练/测试,留下 73,778 个测试足迹。 我们为总共 74 架飞机标记了四个机场测试图像。 标记了四艘船图像,产生了 771 艘测试船。我们的机场数据集较小,有十张行星图像用于测试。 有关每个类别的训练/测试拆分,请参见表 2。
6 目标识别结果
6.1 Universal Classifier Object Detection Results
最初,我们尝试训练一个分类器来识别上面列出的所有五个类别,包括车辆和基础设施。 我们注意到在这个例子中有一些虚假的机场检测(见图 6),因为下采样的跑道看起来类似于错误比例的高速公路。
6.2 Scale Confusion Mitigation
有多种方法可以解决图 6 中指出的误报问题。回忆第 4 节,对于这项探索性工作,我们的训练集仅包含几十个机场,远小于深度学习模型的通常情况。 增加此训练集大小可能会改进我们的模型,尤其是在背景变化很大的情况下。 另一种选择是使用后处理来删除任何不正确比例的检测(例如,大小约为 50 米的机场)。 另一种选择是简单地构建双分类器,每个相关尺度一个。
我们选择利用卫星图像中存在的比例信息并运行两种不同的分类器:一种用于车辆 + 建筑物的训练,另一种仅用于寻找机场。 在下采样图像上运行第二个机场分类器对运行时性能的影响最小,因为在给定的图像中,200 米的碎片比 2000 米的碎片大约多 100 倍。
6.3 Dual Classifier Results
对于大型验证图像,我们在两个不同的尺度上运行分类器:200m 和 2500m。第一个规模是为车辆和建筑物设计的,更大的规模是为机场等大型基础设施优化的。我们将验证图像分解为适当大小的图像碎片,并在适当的分类器上运行每个图像碎片。来自许多图像碎片和多个分类器的无数结果组合成一张最终图像,并通过非极大值抑制合并重叠检测。我们发现 0.3 到 0.4 之间的检测概率阈值会为我们的验证图像产生最高的 F1 分数。
我们将真阳性定义为具有大于给定阈值的联合(IOU)交集。 0.5 的 IOU 通常用作正确检测的阈值,尽管在 ImageNet [13] 的公式 5 中,我们为车辆选择了一个较低的阈值,因为我们正在处理非常小的物体。 对于 SpaceNet 建筑足迹和机场,我们使用 0.5 的 IOU。
表 3 显示了每个对象类别的所有测试图像的对象检测性能和速度。 尽管训练集规模较小,但 YOLT 在机场、飞机和船只上的表现相对较好。 YOLT 并未针对建筑足迹提取进行优化,但在 SpaceNet 数据集上的表现略有竞争力; 最近 SpaceNet 挑战的最高分达到了 0.692 的 F1 分数,而 0.61 的 YOLT 分数将其排在前 3 位。我们根据运行推理步骤的 GPU 时间报告推理速度。推理在 GPU 上以每秒 50 帧的速度快速运行。 目前,预处理(即,将测试图像拆分为更小的剪切块)和后处理(即,将结果拼接回一个全局图像)并未完全优化,而是在 CPU 上执行,这增加了 ≈ 2 的因子来运行 时间。 推理速度转化为 < 6 分钟的运行时间来定位华盛顿特区大小的区域内的所有车辆,以及 < 2 秒来定位该区域的机场区域。DigitalGlobe 的 WorldView3 卫星 3 每天最多覆盖 680,000 平方千米 ,因此以 YOLT 推理速度,16 个 GPU 集群将提供卫星图像的实时推理。
6.4 Detailed Performance Analysis
COWC 数据集的 9 个Utah图像中约 20,000 辆汽车的大型测试集可以进行详细的性能分析。大多数汽车 (> 13, 000) 位于盐湖城中部的图像中,因此我们将此图像分成 16 个较小的 600 × 600 米区域,以平均每张图像的汽车数量。我们删除了一个场景中只有 61 辆汽车的测试场景,留下了 23 个测试场景,每个测试图像的平均计数为 1130 ± 540。我们应用经过训练的 YOLT 模型在这些测试场景中寻找汽车。
在图 9 中,我们显示了每个场景的 F1 分数以及汽车计数准确度。 在商业领域,特定地区的汽车总数可能是比 F1 分数更有价值的指标。
因此,我们计算每个场景的预测汽车数量作为地面实况数量的一部分(F c = N 预测/N 实况)。
与 F1 分数一样,值为 1.0 表示对分数汽车计数指标的完美预测。 COWC [8] 作者试图计算(而不是定位)测试图像中的汽车数量,并实现了 0.19% 的误差。 COWC 数据上 YOLT 的总计数误差为 0.90%。
对图 9 的检查表明,对于典型的城市场景,F1 分数和地面实况分数非常高(例如,图 7 中的 ImageID = 21)。 图 9 中最差的异常值是 ImageID =2,F1 得分为 0.67,存在 2860 辆车。 这个位置对应于一个汽车垃圾场,这是一个可以理解的难以分析的区域。
7 Resolution Performance Study
COWC [8] 数据集中对象大小的一致性可以进行详细的分辨率研究。 为了研究分辨率对物体检测的影响,我们将原始 15 cm 图像与高斯核进行卷积并减小图像尺寸以创建额外的训练和测试库 [0.30, 0.45, 0.60, 0.75, 0.90, 1.05, 1.20, 1.50 , 1.80, 2.10, 2.40, 3.00] 米。
最初,我们在单个模型上测试多分辨率测试数据(在 0.30 米处训练),并且在图 11 中表明该模型外推到多个分辨率的能力很差。
随后,我们为每个分辨率训练了一个单独的模型,总共有 13 个模型。 创建低分辨率(例如 2.4m GSD)的高质量标记数据集是唯一可能的,因为我们从已经标记的高分辨率 15 cm 数据中进行了下采样; 通常低分辨率数据很难以高精度标记。
对于大约 3 米大小的物体,我们从图 13 中观察到,物体检测性能从大小为 20 像素的物体的 F 1 = 0.92 降低到大小为 1 像素的物体的 F 1 = 0.27,平均误差为 0.09。 有趣的是,当对象的大小从 20 像素缩小到 5 像素(0.15m 到 0.60m GSD)时,F1 分数仅下降约 5%。 至少对于从头顶观看的汽车,可以得出结论,≥ 5 个像素的物体尺寸会产生 F 1 > 0.85 的物体检测分数。 图 11 的曲线比图 13 和 14 的曲线退化得更快,这表明在高分辨率下拟合的单个模型不如在每个相应分辨率下训练的一系列模型。
8 结论
对象检测算法最近在定位 ImageNet 样式数据集中的对象方面取得了很大进展。 然而,此类算法很少适用于卫星图像中存在的对象大小或方向,它们也不是为处理数百兆像素的图像而设计的。
为了解决这些限制,我们实施了一个完全卷积神经网络管道 (YOLT) 来快速定位卫星图像中的车辆、建筑物和机场。 由于高速公路和跑道等小型和大型特征之间的混淆,我们注意到组合分类器的结果不佳。 在不同尺度上训练双分类器(一种用于建筑物/车辆,一种用于基础设施),产生了更好的结果。
该管道产生 ≈ 0.6 − 0.9 的对象检测 F1 分数,具体取决于类别。 虽然 F1 分数可能达不到许多读者在 ImageNet 比赛中所习惯的水平,但卫星图像中的目标检测仍然是一个相对新兴的领域,并且面临着独特的挑战。 此外,对于监督学习方法,我们的大多数类别的训练数据集相对较小,并且 F1 分数可能会通过进一步的检测后处理来提高。
我们还展示了在一个传感器(例如 DigitalGlobe)上训练的能力,并将我们的模型应用于不同的传感器(例如 Planet)。
我们表明,至少对于从头顶观看的汽车,≥ 5 像素的物体大小产生 F 1 > 0.85 的物体检测分数。 检测管道能够以原始分辨率评估任意输入尺寸的卫星和航拍图像,并以每分钟 ≈ 30 平方千米 的速度处理车辆和建筑物,以每分钟 ≈ 6, 000 平方千米的速度处理机场。 以这种推理速度,16 个 GPU 集群可以对 DigitalGlobe WorldView3 卫星馈送提供实时推理。
这篇关于YOLT(you only look twice): Rapid multi-scale object detection in satellite imagery(中文翻译simrdwn)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!