RetinaNet在航空图像行人检测中的应用

2019 年 8 月 24 日 AI科技评论

一次RetinaNet实践

作者 | Camel

编辑 | Pita 

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

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

我们来看下面的示例图像。

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

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


Retina Net

Retina Net 是一个单级目标检测器,使用特征金字塔网络 (FPN) 和焦点损失函数(Focal loss)进行训练。

特征金字塔网络是本文引入的多尺度目标检测结构,它通过自上而下的路径和横向连接将低分辨率、语义强大的特征与高分辨率、语义薄弱的特征相结合。这样做的结果是,它在网络中的多个层级上生成不同尺度的特征图,这有助于分类和回归网络。

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

  

焦点损失解释

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



Stanford Drone 数据集

斯坦福无人机(Stanford Drone数据是在斯坦福校园上空通过无人机收集的航拍图像数据集。这个数据集是目标检测和跟踪问题的理想选择,它包含约了60个航拍视频。每个视频,有6类标注 :"行人"、"自行车"、"滑板"、"购物车"、"汽车"和"巴士"。数据集非常丰富,不过行人和骑行者这2类大约占所有标注的85%-95%。


训练RetinaNet

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

  • 从大量斯坦福德无人机数据集中选择图像示例。我采用了大约 2200 张训练图像,包含30000 多个标注信息,并保存了大约 1000 张图像进行验证。我已经把我的图像数据集放在google drive[4] 上。

  • 以 RetinaNet 所需的格式生成标注。RetinaNet 要求所有标注都采用该格式。

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

我转换了斯坦福标注的格式,我的训练和验证标注上载到我的 Github。

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

  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中。

到这里,就完成了!

这个模型训练速度很慢,我训练一晚上。

通过检查测试集的平均平均精度 (Mean Average Precision,MAP),测试了下训练模型的准确性。
  
  
    
Biker:  0.4862
Car: 0.9363
Bus:  0.7892
Pedestrian:  0.7059
Weighted:  0.6376
如上所示,第一个经过训练的模型有一个非常好的 MAP 0.63。特别是在汽车和巴士类上,表现较好,原因在于在航拍图片中这些都是很容易区分出来的。自行车类的 MAP 很低,主要原因在于经常和行人混淆一起。我目前打算进一步提高自行车类的准确性。


结论

RetinaNet是一个强大的模型,使用特征金字塔网络。它能够用在航拍物体检测场景中,即使是目标尺寸极小、极具挑战性的数据集也可以。我大概花了一晚上的时间训练 RetinaNet,而训练出的模型性能还不错。接下来我准备探索如何进一步调整RetinaNet  架构,在航拍物体检测中能够获得足够高的精度。

参考资料:

[1] https://ai.yanxishe.com/page/postDetail/14362?from=ttweixin190824
[2] https://github.com/priya-dwivedi/aerial_pedestrian_detection
[3] https://github.com/fizyr/keras-retinanet
[4] https://drive.google.com/drive/u/0/folders/1bLt6KK_9zKogJdvW-lKh9BnBKgFfvPp9
[5] https://github.com/priya-dwivedi/keras_retinanet_cs230

  点击 阅读原文 下载

登录查看更多
5

相关内容

RetinaNet是2018年Facebook AI团队在目标检测领域新的贡献。它的重要作者名单中Ross Girshick与Kaiming He赫然在列。来自Microsoft的Sun Jian团队与现在Facebook的Ross/Kaiming团队在当前视觉目标分类、检测领域有着北乔峰、南慕容一般的独特地位。这两个实验室的文章多是行业里前进方向的提示牌。 RetinaNet只是原来FPN网络与FCN网络的组合应用,因此在目标网络检测框架上它并无特别亮眼创新。文章中最大的创新来自于Focal loss的提出及在单阶段目标检测网络RetinaNet(实质为Resnet + FPN + FCN)的成功应用。Focal loss是一种改进了的交叉熵(cross-entropy, CE)loss,它通过在原有的CE loss上乘了个使易检测目标对模型训练贡献削弱的指数式,从而使得Focal loss成功地解决了在目标检测时,正负样本区域极不平衡而目标检测loss易被大批量负样本所左右的问题。此问题是单阶段目标检测框架(如SSD/Yolo系列)与双阶段目标检测框架(如Faster-RCNN/R-FCN等)accuracy gap的最大原因。在Focal loss提出之前,已有的目标检测网络都是通过像Boot strapping/Hard example mining等方法来解决此问题的。作者通过后续实验成功表明Focal loss可在单阶段目标检测网络中成功使用,并最终能以更快的速率实现与双阶段目标检测网络近似或更优的效果。
最新《医学图像深度语义分割》综述论文
专知会员服务
94+阅读 · 2020年6月7日
3D目标检测进展综述
专知会员服务
191+阅读 · 2020年4月24日
专知会员服务
160+阅读 · 2020年4月21日
【CVPR2020】MSG-GAN:用于稳定图像合成的多尺度梯度GAN
专知会员服务
27+阅读 · 2020年4月6日
【CVPR2020-百度】用于视觉识别的门控信道变换
专知会员服务
12+阅读 · 2020年3月30日
专知会员服务
41+阅读 · 2020年2月20日
深度学习目标检测算法综述
AI研习社
25+阅读 · 2019年2月1日
【深度】行人检测算法
GAN生成式对抗网络
29+阅读 · 2018年6月3日
Fast R-CNN
数据挖掘入门与实战
3+阅读 · 2018年4月20日
讲透RCNN, Fast-RCNN, Faster-RCNN,将CNN用于目标检测
数据挖掘入门与实战
18+阅读 · 2018年4月20日
人脸表情分类与识别:人脸检测+情绪分类
北京思腾合力科技有限公司
27+阅读 · 2017年12月18日
深入浅出介绍:GAN的基本原理与入门应用!
全球人工智能
14+阅读 · 2017年10月23日
Clustered Object Detection in Aerial Images
Arxiv
5+阅读 · 2019年8月27日
Scale-Aware Trident Networks for Object Detection
Arxiv
4+阅读 · 2019年1月7日
Arxiv
7+阅读 · 2018年9月27日
Deep Learning for Generic Object Detection: A Survey
Arxiv
13+阅读 · 2018年9月6日
Zero-Shot Object Detection
Arxiv
9+阅读 · 2018年7月27日
Arxiv
7+阅读 · 2018年3月19日
VIP会员
相关VIP内容
最新《医学图像深度语义分割》综述论文
专知会员服务
94+阅读 · 2020年6月7日
3D目标检测进展综述
专知会员服务
191+阅读 · 2020年4月24日
专知会员服务
160+阅读 · 2020年4月21日
【CVPR2020】MSG-GAN:用于稳定图像合成的多尺度梯度GAN
专知会员服务
27+阅读 · 2020年4月6日
【CVPR2020-百度】用于视觉识别的门控信道变换
专知会员服务
12+阅读 · 2020年3月30日
专知会员服务
41+阅读 · 2020年2月20日
相关资讯
深度学习目标检测算法综述
AI研习社
25+阅读 · 2019年2月1日
【深度】行人检测算法
GAN生成式对抗网络
29+阅读 · 2018年6月3日
Fast R-CNN
数据挖掘入门与实战
3+阅读 · 2018年4月20日
讲透RCNN, Fast-RCNN, Faster-RCNN,将CNN用于目标检测
数据挖掘入门与实战
18+阅读 · 2018年4月20日
人脸表情分类与识别:人脸检测+情绪分类
北京思腾合力科技有限公司
27+阅读 · 2017年12月18日
深入浅出介绍:GAN的基本原理与入门应用!
全球人工智能
14+阅读 · 2017年10月23日
相关论文
Clustered Object Detection in Aerial Images
Arxiv
5+阅读 · 2019年8月27日
Scale-Aware Trident Networks for Object Detection
Arxiv
4+阅读 · 2019年1月7日
Arxiv
7+阅读 · 2018年9月27日
Deep Learning for Generic Object Detection: A Survey
Arxiv
13+阅读 · 2018年9月6日
Zero-Shot Object Detection
Arxiv
9+阅读 · 2018年7月27日
Arxiv
7+阅读 · 2018年3月19日
Top
微信扫码咨询专知VIP会员