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

点击上方“3D视觉工坊”,选择“星标”
干货第一时间送达

编译:ronghuaiyang(AI公园)

导读

如何使用物体的多个特征来提升物体检测的能力,使用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)

英文原文:https://medium.com/the-downlinq/you-only-look-once-multi-faceted-object-detection-w-rareplanes-13da3d7aaed0

本文仅做学术分享,如有侵权,请联系删文。

下载1

在「3D视觉工坊」公众号后台回复:3D视觉即可下载 3D视觉相关资料干货,涉及相机标定、三维重建、立体视觉、SLAM、深度学习、点云后处理、多视图几何等方向。

下载2

在「3D视觉工坊」公众号后台回复:3D视觉github资源汇总即可下载包括结构光、标定源码、缺陷检测源码、深度估计与深度补全源码、点云处理相关源码、立体匹配源码、单目、双目3D检测、基于点云的3D检测、6D姿态估计源码汇总等。

下载3

在「3D视觉工坊」公众号后台回复:相机标定即可下载独家相机标定学习课件与视频网址;后台回复:立体匹配即可下载独家立体匹配学习课件与视频网址。

重磅!3DCVer-学术论文写作投稿 交流群已成立

扫码添加小助手微信,可申请加入3D视觉工坊-学术论文写作与投稿 微信交流群,旨在交流顶会、顶刊、SCI、EI等写作与投稿事宜。

同时也可申请加入我们的细分方向交流群,目前主要有3D视觉CV&深度学习SLAM三维重建点云后处理自动驾驶、多传感器融合、CV入门、三维测量、VR/AR、3D人脸识别、医疗影像、缺陷检测、行人重识别、目标跟踪、视觉产品落地、视觉竞赛、车牌识别、硬件选型、学术交流、求职交流、ORB-SLAM系列源码交流、深度估计等微信群。

一定要备注:研究方向+学校/公司+昵称,例如:”3D视觉 + 上海交大 + 静静“。请按照格式备注,可快速被通过且邀请进群。原创投稿也请联系。

▲长按加微信群或投稿

▲长按关注公众号

3D视觉从入门到精通知识星球:针对3D视觉领域的知识点汇总、入门进阶学习路线、最新paper分享、疑问解答四个方面进行深耕,更有各类大厂的算法工程人员进行技术指导。与此同时,星球将联合知名企业发布3D视觉相关算法开发岗位以及项目对接信息,打造成集技术与就业为一体的铁杆粉丝聚集区,近2000星球成员为创造更好的AI世界共同进步,知识星球入口:

学习3D视觉核心技术,扫描查看介绍,3天内无条件退款

 圈里有高质量教程资料、可答疑解惑、助你高效解决问题

觉得有用,麻烦给个赞和在看~  

<think>好的,我需要回答用户关于使用YOLOv5模型训练时有哪些轻量化数据集的问题。首先,我要理解用户的需求。他们可能希望找到适合快速训练或资源有限情况下使用数据集,尤其是数据量较小但又能有效训练模型的数据集。接下来,我需要回忆或查找常见的轻量化目标检测数据集,以及它们的适用场景和特点。 首先,YOLOv5本身支持多种数据集格式,比如COCO、VOC等,但这些通常是大型数据集。用户询问的是轻量化的,所以可能需要更小的数据集。例如,一些公开的小型数据集,或者通过特定方法处理后的数据集,比如子集采样、特定类别的筛选等。 我需要考虑几个方面:公开的小型数据集、自定义的小数据集、数据增强方法生成的数据、以及合成数据。此外,可能还需要提到如何从大型数据集中提取子集作为轻量化数据集,以及如何确保数据质量。 然后,我需要组织这些信息,分点列出每个数据集的名称、特点、适用场景、下载或构建方式。同时,可能还需要说明使用轻量化数据集时的注意事项,比如数据平衡、类别覆盖等。 需要验证每个提到的数据集是否确实适合YOLOv5训练,比如是否有合适的标注格式(如YOLO所需的txt文件)。例如,PASCAL VOC虽然原本较大,但可以选取部分类别或图像数量来创建子集。同样,COCO数据集也可以进行裁剪,选择少量类别或图像。 此外,需要提到一些专为轻量化训练设计的数据集,比如VisDrone(无人机图像,相对较小)、Open Images的子集,或者一些特定领域的小数据集,如口罩检测、交通标志识别等。 还要考虑用户可能的实际应用场景,比如学术研究、小型项目、嵌入式设备部署前的快速原型验证等,这些情况下轻量化数据集非常有用。 最后,需要确保回答结构清晰,分点说明每个数据集,并提供获取途径或构建方法,以及使用时需要注意的问题。同时,可能需要补充一些建议,如数据增强、迁移学习结合小数据集的效果等,来帮助用户更好地利用轻量化数据集训练YOLOv5模型。</think>使用YOLOv5进行模型训练时,若需轻量化数据集(即数据量较小、训练成本低但具备代表性的数据集),可选择以下常见方案: --- ### 一、公开轻量化标准数据集 1. **PASCAL VOC子集** - **特点**:经典目标检测数据集,包含20个常见类别(人、车、动物等) - **轻量化方法**: - 仅选择部分类别(如`person`, `car`, `dog`) - 随机抽取10%~20%的原始数据(约1,600~3,200张图) - **下载**:[官方链接](http://host.robots.ox.ac.uk/pascal/VOC/) 2. **COCO Tiny** - **特点**:COCO数据集的精简版本,包含1,000~5,000张图片 - **适用场景**:快速验证模型基础性能 - **下载**:通过API筛选或使用开源社区提供的子集(如[Kaggle COCO-5k](https://www.kaggle.com/datasets)) 3. **VisDrone2021-DET**(无人机视角) - **特点**:专为轻量化设计,含6,471张训练图,覆盖行人、车辆等10类 - **优势**:标注密集且场景单一,适合快速收敛 - **下载**:[官网](http://aiskyeye.com/) --- ### 二、领域专用小型数据集 1. **口罩检测数据集** - **规模**:约1,200张图,标注`mask`和`no-mask`两类 - **用途**:疫情相关轻量化应用 - **来源**:[GitHub开源项目](https://github.com/X-zhangyang/Real-World-Masked-Face-Dataset) 2. **交通标志数据集(TT100K)** - **规模**:6,236张中国交通标志图片,45个类别 - **特点**:高密度小目标,适合测试轻量化模型的细节检测能力 - **下载**:[清华大学公开数据](http://cg.cs.tsinghua.edu.cn/traffic-sign/) 3. **自定义小样本数据集** - **构建方法**: - 手机拍摄50~200张目标场景图 - 使用标注工具(LabelImg、CVAT)生成YOLO格式标签 - **示例**:办公室物品检测(键盘、鼠标、杯子等) --- ### 三、合成数据增强方案 1. **背景替换法** - **操作**:固定目标物体,随机更换背景(如使用[BGSLibrary](https://github.com/andrewssobral/bgslibrary)) - **效果**:可将100张原始图扩展至1,000+张 2. **GAN生成数据** - **工具**:使用StyleGAN2-ADA生成逼真物体图像 - **案例**:工业缺陷检测中生成稀有缺陷样本 3. **3D渲染数据(Blender)** - **流程**:建模目标物体→多角度渲染→导出图像和自动标注 - **优势**:零成本获取多视角、多光照条件数据 --- ### 四、轻量化数据使用技巧 1. **数据平衡** - 确保每个类别至少有50~100张图(可通过过采样或数据增强实现) 2. **预训练权重利用** - 加载`yolov5s.pt`的COCO预训练权重,冻结部分层进行微调 3. **混合数据集策略** - 将公开数据(如VOC)与少量自定义数据混合训练 4. **高效增强配置** - 在`data/hyps/hyp.scratch-low.yaml`中调整: ```yaml hsv_h: 0.01 # 降低色相抖动幅度 hsv_s: 0.2 # 减少饱和度增强 fliplr: 0.5 # 保持水平翻转 ``` --- ### 五、典型轻量化训练参数示例 ```bash python train.py \ --img 320 \ # 降低输入分辨率 --batch 64 \ # 提高批次大小(需减少显存占用) --epochs 50 \ # 减少训练轮次 --data custom.yaml \ --weights yolov5s.pt \ --optimizer Adam \ # 改用轻量级优化器 --rect # 启用矩形训练(减少填充黑边) ``` --- ### 六、注意事项 - **过拟合监控**:使用TensorBoard观察训练/验证损失曲线,若验证损失上升则停止训练 - **硬件适配**:在CPU或低显存GPU上训练时,设置`--workers 0`以避免数据加载瓶颈 - **部署验证**:使用`--include onnx`导出模型并在移动端测试实时推理速度 通过上述轻量化数据集和训练策略,可在保持较高检测精度的前提下,显著降低训练时间和资源消耗。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值