爱收集资源网

一次RetinaNet实践|航空图像中的目标检测是什么?

网络整理 2022-05-14 07:01

RetinaNet 实践

作者 |骆驼

编辑 |皮塔饼

航拍图像中的对象检测是一个具有挑战性且有趣的问题。随着无人机成本的降低和航拍图像数据量的激增,拥有可以从航拍数据中提取有价值信息的模型将非常有用。

RetinaNet 是最著名的单级目标检测器,在本文中,我将在斯坦福无人机数据集的行人和骑自行车者的航拍图像上测试 RetinaNet。

让我们看看下面的示例图片。

来自斯坦福无人机数据集的航拍图像 - 粉色和红色自行车行人

这是一个具有挑战性的问题,因为大多数对象只有几个像素宽,有些对象被遮挡,阴影中的对象更难检测。

视网膜网

Retina Net 是使用特征金字塔网络 (FPN) 和 Focal loss 训练的单阶段目标检测器。

特征金字塔网络是本文介绍的一种多尺度目标检测结构,它通过自顶向下的路径和横向连接将低分辨率、语义强的特征与高分辨率、语义弱的特征相结合。因此,它在网络的多个层生成不同尺度的特征图,这有助于分类和回归网络。

Focal loss 旨在解决单阶段目标检测问题,因为图像中可能存在大量背景类和多个前景类,这会导致训练效率低下。大多数位置都是负样本行人检测输入图片,往往会产生任何有用的信号,大量这些负样本会压倒训练并降低模型性能。焦点损失基于下图所示的交叉熵损失,通过调整γ参数,可以从分类良好的样本中减少损失贡献。

解释焦点丢失

在本文中,我将讨论如何在 Keras 上训练 Retina Net 模型。 RetinaNet背后的理论,请参考[1]。我的代码可以在 Github [2] 上下载。训练好的模型在空中目标检测中的效果可以参考以下动画:

斯坦福无人机数据集

斯坦福无人机数据是无人机在斯坦福校园上空收集的航空图像数据集。该数据集非常适合目标检测和跟踪问题,它包含大约 60 个航拍视频。对于每个视频,都有 6 类注释:“行人”、“自行车”、“滑板”、“购物车”、“汽车”和“公共汽车”。数据集非常丰富,但行人和骑车人这两类约占所有标注的 85%-95%。

训练视网膜网

为了训练 RetinaNet,我使用了 Keras 中 keras-retinanet [3] 的代码实现,它的帮助文档非常好,运行起来没有任何错误。

path/to/image.jpg,x1,y1,x2,y2,class_name

复制

我转换了斯坦福注释格式并将我的训练和验证注释上传到我的 Github。

调整锚点大小:RetinaNet 的默认锚点大小为 32、64、128、256、512。这些锚点大小适用于大多数对象,但由于我们处理的是航拍图像,因此某些对象可能小于 32。此代码项目中提供了一个方便的工具来检查现有锚点是否有效。在下图中,绿色标注被锚点中的标注覆盖,红色标注被忽略。可以看出不少annotation对于最小anchor size来说也太小了。

RetinaNet 默认锚大小结果

所以我调整了锚点,丢弃了 512 的最大锚点,并添加了一个大小为 16 的小锚点。这显着改善了结果如下:

添加一个小锚

有了这一切,我们就可以开始训练了。我保留了大部分其他默认参数,包括 Resnet50 骨干网络参数,并开始训练:

keras_retinanet/bin/train.py --weights
snapshots/resnet50_coco_best_v2.1.0.h5  --config config.ini csv
train_annotations.csv labels.csv --val-annotations
val_annotations.csv

复制

这里加载的权重是 COCO 权重。用于训练和验证的注释是输入数据,config.ini 具有更新的锚大小。所有文件都在我的 Github 中。

到此,完成!

这个模型训练很慢行人检测输入图片,我训练了一夜。

通过检查测试集上的平均精度 (MAP) 来测试训练模型的准确性。

Biker: 0.4862
Car:0.9363
Bus: 0.7892
Pedestrian: 0.7059
Weighted: 0.6376

复制

如上图,第一个训练好的模型有一个非常好的MAP0.63。尤其是在汽车和公共汽车类别中,表现更好,因为这些在航拍照片中很容易区分。骑自行车的地图很低,主要是因为它们经常与行人混淆。我目前正计划进一步提高自行车类的准确性。

结论

复制

RetinaNet 是一个使用特征金字塔网络的强大模型。它可用于空中物体检测场景,即使是极小且具有挑战性的数据集。我花了大约一晚上的时间训练 RetinaNet,训练出来的模型表现不错。接下来,我将探索如何进一步调整 RetinaNet 架构,以获得足够高的航空物体检测精度。

参考资料:

[1]

[2]

[3]

[4]

[5]

标注 训练 航空