我报名参加金石方案1期应战——切割10万奖池,这是我的第14篇文章,点击检查活动概况
导读
怎么运用物体的多个特征来前进物体检测的才能,运用YOLOv5进行多特点物体检测的实验。
咱们发布了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的功能模型。
但是,作为一个数据科学家,他的人物不是向模型供给尽或许多的数据,而是生成最精确的猜测以处理某些问题。在这种情况下,咱们经过创立有意义的自定义类来完成这一点,但在其他情况下,这或许意味着扫除不太相关的特征,等等。创立自定义类能够前进功能,因为它迫使模型考虑飞机的特定特点。例如,运用动力类型和引擎数量的组合,咱们看到两个特点的分类得到了改善。制造偏见是这个进程的一个固有部分。
总归,像这样的办法能够跨范畴使用,从明显的国家安全使用到与健康相关的使用,比如在组织扫描中自动检测特定细胞类型,其精确性与人工计数相似,如果不是更高的话。稀有的飞机类型也能够经过测试合成数据的价值,改善检测技能,或评价零样本或少样本学习,完成计算机视觉范畴的严重前进。咱们期望引入相似的以使用为中心的研讨和教程,以推动该范畴向前发展。
![image-20210201142357002](You Only Look Once — Multi-Faceted Object Detection w RarePlanes.assets/image-20210201142357002.png)
英文原文:medium.com/the-downlin…