1. 磐创AI首页
  2. Medium

如何检测(超)大图像中的小目标


在ML6,我们有时会被问到如何在高分辨率下检测非常小的物体,即非常大的图像。在航空图像中查找对象就是一个很好的例子。这篇博客文章的目的是演示一种使用切片辅助超推理(SAHI)来解决此问题的实用方法。Slicing Aided Hyper Inference

我们将看一下DOTA数据集(v1.0),它包含大小从800×800到20.000×20.000像素的航空图像。训练数据包含约1400幅图像。下面您可以看到一些示例。DOTA

数据集包含以下15个类的边界框批注:

针对此类问题微调预先训练的检测器(例如使用mmDetection框架)通常相当困难,主要原因有两个:mmdetection framework

尽管如此,我们仍将探索一种使用mmDetection框架在DOTA数据集上微调速度更快的R-CNN的方法。为此,我们必须首先重新格式化注释文件以符合COCO标准。然后,我们可以从模型动物园中选择一个模型,并下载相应的模型和配置文件。如果您尝试跟随,也不要忘记下载配置文件中使用的各个基本配置。最后,根据您的需要修改配置,特别是数据目录和类的位置。model zoo

为了避免在模型的训练预处理流水线中由于图像的大小调整而丢失小对象,我们在流水线的开头添加了一个随机裁剪。实际上,我们是在原始图像的小块上进行训练,并保留这些块中的所有信息。

另一种方法是通过预先切片所有图像来创建派生数据集。

我们还在配置中添加了一个Tensorboard日志钩子,以可视化培训进度。

在配置文件中配置优化器之后,您可以运行mmDetection提供的培训脚本。这是我们10个时代长跑的训练进度:

这个看起来已经相当不错了。我们现在可以使用保存的模型进行推理。

然而,如何对大规模输入图像执行推理的问题仍然存在。我们在训练中解决了这个问题,只对随机作物进行了训练。但这显然不是一种可行的推论方法。这就是切片辅助超推理(SAHI)发挥作用的地方。Sahi的切片预测将输入图像分解成略有重叠的小块,对每个小块执行预测,最后合并每个小块的注释以将它们可视化到原始图像上。

下面的示例代码显示了使用SAHI进行推理是多么容易。

这就是与简单地让模型调整输入大小相比,结果看起来是什么样子。您应该放大图像以实际查看模型预测的边界框和标签。有趣的是,两幅图像中的预测都是由完全相同的模型产生的,但结果却大相径庭。

最后,Sahi目前可以开箱即用地使用任何mmDetection模型。使用功能更强大的模型,如Cascade R-CNN,再加上一些额外的训练和超参数调整,这种方法在高分辨率图像中获得高质量的小目标检测结果方面有很大的潜力。然而,这篇博客文章的目的只是展示如何使用切片辅助推理有效地解决这类问题。

原创文章,作者:fendouai,如若转载,请注明出处:https://panchuang.net/2021/09/18/%e5%a6%82%e4%bd%95%e6%a3%80%e6%b5%8b%e8%b6%85%e5%a4%a7%e5%9b%be%e5%83%8f%e4%b8%ad%e7%9a%84%e5%b0%8f%e7%9b%ae%e6%a0%87/

联系我们

400-800-8888

在线咨询:点击这里给我发消息

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息