实践教程|对稀有飞机数据集进行多属性物体检测:使用YOLOv5的实验过程

2022 年 2 月 15 日 极市平台
↑ 点击 蓝字  关注极市平台

来源丨小白学视觉
编辑丨极市平台

极市导读

 

本文详解如何使用物体的多个特征来提升物体检测的能力,使用YOLOv5进行多属性物体检测的实验。 >>加入极市CV技术交流群,走在计算机视觉的最前沿

我们发布了RarePlanes数据集和基线实验的结果。今天,我们试图进一步展示数据集的多特征以及它独特的用途。我们训练了一个目标检测模型,不仅可以识别飞机,还可以识别它们的特征,如引擎的数量、机翼形状等,并且建立了一个教程,所以你可以自己做这个实验。

在本系列教程中,我们将从头到尾介绍在RarePlanes数据集上训练YOLOv5模型的整个机器学习流程。

快速回顾:RarePlanes数据集是由CosmiQ Works和AI.Reverie通过将主要是机场的遥感数据与综合生成的数据相结合创建的。然后将这些图像按照5个特征、10个属性和33个子属性进行分类。每架飞机都通过从机头到翼尖再到尾部的菱形来标注,以保持宽度和长度的比例,然后,不同的飞机特征被标注在每个标注上。

下面是数据集中使用的飞机分类树。

模型 (YOLOv5)

在我们开始之前,先介绍一下背景。我们尝试了语义分割方法和物体检测方法。最终,我们决定使用YOLOv5进行物体检测,事后看来,这是对的,分割方法很难分离靠的很近的相似物体。

YOLO网络在各种任务上都显示了优良的性能。

You Only Look Once version 5 (YOLOv5),就像它的前身一样,它是一个物体检测网络。它将输入图像分割成一个个网格,然后输出每个网格框的包围框置信度和类概率矩阵。然后对这些输出进行过滤,从最终的预测中去除重叠和低置信的检测。这些包围框然后被输送到一个神经网络中进行检测。使用YOLO的网格建议方法(而不是R-CNN风格的网络中使用的更大的区域建议网络),预测的速度要快得多,允许YOLOv5实时工作。我们选择使用Ultralytics的YOLOv5实现,因为它非常简单,使用该模型创建管道比使用类似方法要简单得多。

预处理/准备工作

RarePlanes数据集包含了tiled图像,这些tiled图像是在PS-RGB_tiled目录下找到的实例周围进行局部选取的。我们建议首先对这些图像进行训练,因为它们可以提高训练速度。下载好了图片,必须按照下面的结构进行组织:

YOLOv5数据层次结构

使用RarePlanes数据集,你可以为你想要检测的特性提供许多选项。例如,你可以检测飞机的位置、飞机的单个属性或属性的唯一组合。如果我们想检测属性的唯一组合,预处理中的第一步是创建自定义类。“role”,“num_engines”,“propulsion”,“canards”,“num_tail_fins”,“wing_position”,“wing_type”,“faa_wingspan_class”的任何组合都可以用来创建一个自定义类。在本教程中,我们选择在自定义类中组合“num_engines”和“propulsion”,因为我们希望通过强制模型尝试识别这两个相关属性来促进对这两个类的模型推断。

然后必须将这些自定义类的列表添加到YOLO特定的data .yaml文件中,该文件包括到训练和测试映像的文件路径、类的数量和类列表。

最后一步是从平片图像中创建YOLO标签,这些图像是由空格分隔的文本文件,包含每个框的类类型、位置和大小。为每个图像创建这些标签,在每个目标周围创建边框,用于训练和模型评估。

训练/推理

在这里有用于训练和运行推理的pipeline的基础实现。它告诉脚本在哪里找到我们上面创建的图像和训练标签。训练使用下面的命令,使用2个NVIDIA Titan XP GPUs训练大约需要4-5个小时。

推理和评分脚本也预先构建在这个YOLOv5实现中,可以用作性能的初始衡量标准。只需将函数指向训练过的权重,我们就可以在不到两分钟的时间内对所有2700多张图像运行推断。

初步推断

使用detect.py检测不同自定义类的输出示例。

初步评分

使用简单的单行bash命令运行这些脚本。然而,这些结果并不是最准确的,因为它们包括重复的预测和部分预测。再运行一轮非极大抑制,去掉重复数据,拼接预测并在tiled的图像上给它们评分。现在,让我们看看我们做得如何。

结果

在棕榈滩县公园机场按引擎数量和动力类型划分的飞机
盐湖城国际机场按发动机数量和动力类型划分的飞机
上海浦东国际机场按发动机数量+动力类型划分的飞机数量
类的颜色作为上面图片的图例

使用F1度量,IoU为0.5,结果在90年代的飞机数据集上的F1得分非常稳定。值得注意的是,该模型能够识别引擎的位置和数量,而不需要训练数据集为引擎提供特定的标注。引擎的数量与每个飞机实例相关联,而不是引擎本身。

此外,对于不太常见的飞机,结果明显不那么好,这可能是由于缺少模型合适的样本。之前,我们讨论了如何使用合成数据来增强这些稀有类(或稀有飞机),以提高特定类的性能。

总结

鲁棒的机器学习严重依赖于高质量的数据集。虽然随着AlexNet和卷积神经网络的发明,性能得到了显著改善,但预测机制缺乏真正的证明。最终,该模型依赖于“看到”足够多的与测试场景相似的场景,从而做出准确的预测(可以是数百或数千个场景)。有了这些,多样化的、有条理的、标记良好的数据集可以创建有效的模型,但需要注意的是,你不一定需要大量的数据。多样化、高质量的数据通常可以用更少的数据创建类似的性能模型,甚至仅用3%的数据得到2/3的性能模型。

然而,作为一个数据科学家,他的角色不是向模型提供尽可能多的数据,而是生成最准确的预测以解决某些问题。在这种情况下,我们通过创建有意义的自定义类来实现这一点,但在其他情况下,这可能意味着排除不太相关的特征,等等。创建自定义类可以提高性能,因为它迫使模型考虑飞机的特定属性。例如,使用动力类型和引擎数量的组合,我们看到两个属性的分类得到了改进。制造偏见是这个过程的一个固有部分。

总之,像这样的方法可以跨领域应用,从明显的国家安全应用到与健康相关的应用,比如在组织扫描中自动检测特定细胞类型,其准确性与人工计数相似,如果不是更高的话。稀有的飞机类型也可以通过测试合成数据的价值,改进检测技术,或评估零样本或少样本学习,实现计算机视觉领域的重大进步。我们希望引入类似的以应用为中心的研究和教程,以推动该领域向前发展。


公众号后台回复“数据集”获取30+深度学习数据集下载~

△点击卡片关注极市平台,获取 最新CV干货
极市干货
数据集资源汇总: 10个开源工业检测数据集汇总 21个深度学习开源数据集分类汇总
算法trick 目标检测比赛中的tricks集锦 从39个kaggle竞赛中总结出来的图像分割的Tips和Tricks
技术综述: 一文弄懂各种loss function 工业图像异常检测最新研究总结(2019-2020)


CV技术社群邀请函 #

△长按添加极市小助手
添加极市小助手微信(ID : cvmart4)

备注:姓名-学校/公司-研究方向-城市(如:小极-北大-目标检测-深圳)


即可申请加入极市目标检测/图像分割/工业检测/人脸/医学影像/3D/SLAM/自动驾驶/超分辨率/姿态估计/ReID/GAN/图像增强/OCR/视频理解等技术交流群


每月大咖直播分享、真实项目需求对接、求职内推、算法竞赛、干货资讯汇总、与 10000+来自港科大、北大、清华、中科院、CMU、腾讯、百度等名校名企视觉开发者互动交流~


觉得有用麻烦给个在看啦~   
登录查看更多
0

相关内容

NeurIPS 2021 | 寻MixTraining: 一种全新的物体检测训练范式
专知会员服务
11+阅读 · 2021年12月9日
【NeurIPS2021】用于物体检测的实例条件知识蒸馏
专知会员服务
19+阅读 · 2021年11月10日
【2021新书】深度学习计算机视觉,320页pdf
专知会员服务
187+阅读 · 2021年5月20日
【CVPR2021】多实例主动学习目标检测
专知会员服务
41+阅读 · 2021年4月18日
专知会员服务
29+阅读 · 2021年4月5日
【AAAI2021】可解释图胶囊网络物体检测
专知会员服务
27+阅读 · 2021年1月4日
【GitHub实战】Pytorch实现的小样本逼真的视频到视频转换
专知会员服务
35+阅读 · 2019年12月15日
基于OpenCV的图像阴影去除
极市平台
1+阅读 · 2022年2月27日
实践教程|最简单的代码实现语义分割!
极市平台
0+阅读 · 2022年2月18日
实操教程|基于OpenCV的条形码区域分割
极市平台
3+阅读 · 2022年2月7日
手把手教你使用 YOLOV5 训练目标检测模型
极市平台
1+阅读 · 2022年1月25日
实践教程|如何用YOLOX训练自己的数据集?
极市平台
0+阅读 · 2022年1月5日
2019最全目标检测指南
计算机视觉life
13+阅读 · 2019年10月22日
用PyTorch做物体检测和追踪
AI研习社
12+阅读 · 2019年1月6日
SSD多盒实时目标检测教程
论智
13+阅读 · 2018年4月5日
使用SSD进行目标检测:目标检测第二篇
专知
29+阅读 · 2018年1月28日
TensorFlow图像分类教程
机器学习研究会
33+阅读 · 2017年12月29日
国家自然科学基金
0+阅读 · 2014年12月31日
国家自然科学基金
3+阅读 · 2013年12月31日
国家自然科学基金
1+阅读 · 2012年12月31日
国家自然科学基金
1+阅读 · 2012年12月31日
国家自然科学基金
0+阅读 · 2012年12月31日
国家自然科学基金
1+阅读 · 2009年12月31日
国家自然科学基金
2+阅读 · 2008年12月31日
国家自然科学基金
0+阅读 · 2008年12月31日
Arxiv
0+阅读 · 2022年4月20日
Arxiv
0+阅读 · 2022年4月18日
Arxiv
18+阅读 · 2020年7月13日
Object Detection in 20 Years: A Survey
Arxiv
48+阅读 · 2019年5月13日
Arxiv
11+阅读 · 2018年4月8日
Arxiv
10+阅读 · 2018年2月17日
VIP会员
相关VIP内容
NeurIPS 2021 | 寻MixTraining: 一种全新的物体检测训练范式
专知会员服务
11+阅读 · 2021年12月9日
【NeurIPS2021】用于物体检测的实例条件知识蒸馏
专知会员服务
19+阅读 · 2021年11月10日
【2021新书】深度学习计算机视觉,320页pdf
专知会员服务
187+阅读 · 2021年5月20日
【CVPR2021】多实例主动学习目标检测
专知会员服务
41+阅读 · 2021年4月18日
专知会员服务
29+阅读 · 2021年4月5日
【AAAI2021】可解释图胶囊网络物体检测
专知会员服务
27+阅读 · 2021年1月4日
【GitHub实战】Pytorch实现的小样本逼真的视频到视频转换
专知会员服务
35+阅读 · 2019年12月15日
相关资讯
基于OpenCV的图像阴影去除
极市平台
1+阅读 · 2022年2月27日
实践教程|最简单的代码实现语义分割!
极市平台
0+阅读 · 2022年2月18日
实操教程|基于OpenCV的条形码区域分割
极市平台
3+阅读 · 2022年2月7日
手把手教你使用 YOLOV5 训练目标检测模型
极市平台
1+阅读 · 2022年1月25日
实践教程|如何用YOLOX训练自己的数据集?
极市平台
0+阅读 · 2022年1月5日
2019最全目标检测指南
计算机视觉life
13+阅读 · 2019年10月22日
用PyTorch做物体检测和追踪
AI研习社
12+阅读 · 2019年1月6日
SSD多盒实时目标检测教程
论智
13+阅读 · 2018年4月5日
使用SSD进行目标检测:目标检测第二篇
专知
29+阅读 · 2018年1月28日
TensorFlow图像分类教程
机器学习研究会
33+阅读 · 2017年12月29日
相关基金
国家自然科学基金
0+阅读 · 2014年12月31日
国家自然科学基金
3+阅读 · 2013年12月31日
国家自然科学基金
1+阅读 · 2012年12月31日
国家自然科学基金
1+阅读 · 2012年12月31日
国家自然科学基金
0+阅读 · 2012年12月31日
国家自然科学基金
1+阅读 · 2009年12月31日
国家自然科学基金
2+阅读 · 2008年12月31日
国家自然科学基金
0+阅读 · 2008年12月31日
Top
微信扫码咨询专知VIP会员