ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

无人机车辆检测数据集实战:VOC/COCO/YOLO格式转换与YOLO11训练避坑指南

无人机车辆检测数据集实战:VOC/COCO/YOLO格式转换与YOLO11训练避坑指南 简介面向无人机场景车辆检测的实战型数据集资源适合从事目标检测算法学习与落地的开发者、学生及科研人员使用可解决无人机视角下车辆目标识别样本不足、标注格式不统一的问题。数据集包含1000张真实场景高质量图片覆盖城市道路行驶、道边停车、停车场、小区车辆以及车辆遮挡、严重遮挡等多种复杂场景类别划分为轿车car、货车van和巴士bus三类采用labelimg标注并提供VOC、COCO、YOLO三种主流格式标签可直接用于YOLO等算法训练。资源包共1个PDF文件约2MB内含数据集基本情况介绍与获取方式并附赠YOLO11一键训练脚本支持GPU、CPU及Mac芯片多平台训练方案同时提供博主训练结果日志供参考。目前已有261人学习下载能帮助读者快速搭建无人机车辆检测训练流程完成从数据准备到模型训练的全链路实践。1. 无人机视角下的车辆检测这份 1000 张图的数据集到底能不能直接开训拿到一份无人机场景的车辆检测数据集第一反应通常不是“图好不好看”而是“标注格式能不能直接喂进训练脚本”。这份资源给的是 1000 张真实无人机视角图片覆盖城市道路行驶车辆、道边停车、停车场、小区内部以及车辆遮挡和严重遮挡等场景类别只划了轿车 car、货车 van、巴士 bus 三类。它解决的核心问题很具体你手头有一个无人机车辆检测的项目要落地但自己从零采集和标注的成本太高尤其是遮挡样本和小目标样本靠人工补既慢又容易漏。这份数据适合做无人机视觉感知方向的目标检测训练与验证也适合作为通用车辆检测数据集的场景补充。需要提前说清楚的是资源本身托管在网盘下载到的是一个 PDF里面写了数据集基本情况介绍和获取方式不是直接给你一个压缩包这一点后面会专门讲怎么处理。2. 三种标签格式怎么选VOC、COCO、YOLO 的转换逻辑与目录结构2.1 为什么同一批图要同时给三种格式很多人看到 VOC、COCO、YOLO 三套标签会觉得冗余实际上一线做项目时这三套格式对应的是三条不同的工具链。VOC 的 xml 是 labelimg 的原生输出适合做标注复核和二次修改COCO 的 json 是很多评测脚本和论文复现实验的默认输入YOLO 的 txt 则是 YOLO11 训练脚本直接读取的格式。数据集同时提供三种意味着你不需要自己写转换脚本省掉的恰恰是最容易出错的坐标归一化和类别映射环节。常见做法是先用 VOC 的 xml 在 labelimg 里抽查几十张确认框的位置和类别没错再用 YOLO 的 txt 直接开训COCO 的 json 留着做 mAP 评测或者换框架时用。这个顺序能帮你把标注质量问题挡在训练之前而不是等 loss 不降了才回头查。2.2 三种格式的目录组织与字段对照一份组织规范的目标检测数据集目录通常长这样drone_vehicle_dataset/ ├── images/ │ ├── train/ │ ├── val/ │ └── test/ ├── labels_yolo/ │ ├── train/ │ ├── val/ │ └── test/ ├── annotations_voc/ │ └── *.xml ├── annotations_coco/ │ └── instances.json └── data.yamlYOLO 的 txt 每行是class_id x_center y_center width height全部归一化到 0 到 1 之间VOC 的 xml 里是绝对像素坐标的xmin ymin xmax ymaxCOCO 的 json 里是[x, y, width, height]加category_id。这三种表达方式在转换时最容易翻车的地方是坐标取整和边界裁剪尤其是无人机图片里车辆贴着画面边缘的情况取整方式不对会让框偏移一两个像素小目标上这个误差占比不小。2.3 用脚本快速校验三种格式是否对齐在开训之前我一般会跑一段校验脚本确认同一张图在三种格式下的框数量和类别一致import os import xml.etree.ElementTree as ET import json # 校验 VOC 与 YOLO 标签数量是否一致 def count_voc_boxes(xml_path): tree ET.parse(xml_path) root tree.getroot() return len(root.findall(object)) def count_yolo_boxes(txt_path): with open(txt_path, r) as f: lines [l for l in f.readlines() if l.strip()] return len(lines) voc_dir annotations_voc yolo_dir labels_yolo/train mismatch [] for xml_file in os.listdir(voc_dir): if not xml_file.endswith(.xml): continue stem os.path.splitext(xml_file)[0] txt_file stem .txt voc_count count_voc_boxes(os.path.join(voc_dir, xml_file)) yolo_path os.path.join(yolo_dir, txt_file) if not os.path.exists(yolo_path): mismatch.append((stem, voc_count, missing)) continue yolo_count count_yolo_boxes(yolo_path) if voc_count ! yolo_count: mismatch.append((stem, voc_count, yolo_count)) print(f不一致样本数: {len(mismatch)}) for item in mismatch[:10]: print(item)这段脚本的逻辑很直接遍历 VOC 目录下的每个 xml找到同名的 YOLO txt比较object节点数量和 txt 行数。参数上你只需要改voc_dir和yolo_dir两个路径。如果输出不一致样本数为 0说明两套标签是对齐的如果不为 0优先检查是不是有图片没有对应标签或者标注时漏标了某个类别。这个检查花不了两分钟但能避免训练到一半发现标签错位。提示无人机图片里车辆遮挡严重时标注人员容易把被遮挡车辆漏掉校验脚本能帮你把这类问题提前暴露出来。3. YOLO11 一键训练脚本怎么跑GPU、CPU、Mac 三平台的参数差异3.1 训练脚本的核心结构与 data.yaml 配置一键训练脚本的价值在于把环境判断、路径拼接和训练参数都封装好了你只需要确认data.yaml写对。YOLO11 的data.yaml通常包含训练集、验证集路径和类别名path: ./drone_vehicle_dataset train: images/train val: images/val test: images/test names: 0: car 1: van 2: bus这里path是数据集根目录train和val是相对路径。类别顺序必须和 YOLO txt 里的class_id严格对应0 是 car、1 是 van、2 是 bus顺序错了模型会把货车认成轿车。常见做法是先把data.yaml里的路径改成绝对路径跑一次确认能读到图之后再换回相对路径避免因为工作目录不同导致找不到文件。3.2 GPU、CPU、Mac 三平台的启动命令与关键参数一键脚本一般会暴露几个入口参数我按平台拆开说。GPU 平台是最常见的启动命令类似python train_yolo11.py --data data.yaml --epochs 100 --imgsz 640 --batch 16 --device 0--device 0指定第一块 GPU--batch 16在 8GB 显存上比较稳--imgsz 640是无人机图片常用的输入尺寸。如果你的显存只有 6GB把 batch 降到 8或者把 imgsz 降到 512先保证能跑起来。CPU 平台适合没有独显的机器做小规模验证python train_yolo11.py --data data.yaml --epochs 50 --imgsz 416 --batch 4 --device cpuCPU 训练速度慢是客观事实1000 张图跑 50 轮可能要几个小时所以 imgsz 和 batch 都要压小目的是验证流程通不通不是追求精度。Mac 平台M 芯片走的是 MPS 后端python train_yolo11.py --data data.yaml --epochs 100 --imgsz 640 --batch 8 --device mpsM 芯片的显存是统一内存batch 给 8 到 16 一般没问题但如果同时开着浏览器和 IDE内存吃紧会直接报错训练前把不用的应用关掉。3.3 训练日志里该盯哪几个指标脚本跑起来之后日志里最该关注的是box_loss、cls_loss和mAP50。box_loss下降说明框的位置在收敛cls_loss下降说明类别判断在变好mAP50是最终你拿去汇报的指标。无人机车辆检测里巴士 bus 因为尺寸大、特征明显mAP 通常最高轿车 car 数量多但小目标多mAP 会低一些货车 van 介于两者之间。如果训练到 30 轮左右cls_loss还在震荡大概率是学习率偏大或者标注里有类别混淆先回去抽查 van 和 car 的标注边界。注意一键脚本里的默认学习率是按通用数据集调的无人机小目标场景可以适当调低常见做法是从 0.01 降到 0.005 再观察几轮。4. 避坑与排查从 PDF 到可训练数据的五个真实翻车点4.1 下载到的是 PDF 不是压缩包现象兴冲冲点开资源发现只有一个 PDF 文件里面没有图片和标签。 原因数据集体积大托管在网盘PDF 只是介绍文档和获取入口。 解决先通读 PDF 里的数据集基本情况介绍按里面写的获取方式拿到真正的数据包再解压到工作目录。不要试图把 PDF 当数据集直接喂给脚本。4.2 解压后目录层级多了一层现象data.yaml里写的images/train读不到图报No images found。 原因压缩包解压后多套了一层同名文件夹实际路径变成了drone_vehicle_dataset/drone_vehicle_dataset/images/train。 解决用find . -name *.jpg | head确认图片真实位置把data.yaml的path指到正确的那一层或者把内层文件夹整体移出来。4.3 类别顺序和标签对不上现象训练出来的模型把货车识别成轿车mAP 看着不低但实际用不了。 原因data.yaml里names的顺序和 YOLO txt 里class_id的映射不一致。 解决随便抽一张图用标注工具打开对应的 txt看class_id是 0 还是 1再和data.yaml对照。改names顺序比重标一遍快得多。4.4 Mac 上跑 MPS 报内存不足现象训练刚启动就崩提示MPS backend out of memory。 原因M 芯片统一内存被其他应用占用或者 batch 给太大。 解决先把 batch 降到 4imgsz 降到 416关掉浏览器和多余应用再试。如果还不行临时切到 CPU 跑通流程确认数据没问题再回 MPS。4.5 验证集 mAP 虚高但实际漏检严重现象mAP50跑到 0.9 以上但拿新拍的无人机图去测遮挡车辆基本检不出来。 原因验证集和训练集来自同一批场景分布太接近模型过拟合了。 解决从 1000 张里手动留出几十张遮挡最严重的图单独做测试集不参与训练。如果这份数据里严重遮挡样本本身就不多考虑做马赛克增强或者复制粘贴增强来补。5. 把 1000 张图用出 3000 张的效果小目标增强与训练结果验证1000 张图在目标检测里不算大尤其是无人机视角下车辆像素占比小直接训容易欠拟合。我一般会做两件事一是开 YOLO11 自带的马赛克增强和混合增强二是针对小目标单独调 anchor 或者用更高分辨率的输入。马赛克增强在 YOLO11 里默认是开的但mosaic概率可以手动调常见做法是从 1.0 降到 0.5 再观察因为无人机图片背景本来就复杂过度拼接反而引入噪声。验证环节不要只看mAP50我习惯把训练好的权重拿几张典型图跑一遍推理肉眼确认三类车的框有没有漏、有没有串类。下面这段推理脚本可以直接抄from ultralytics import YOLO # 加载训练好的权重 model YOLO(runs/detect/train/weights/best.pt) # 对单张无人机图片推理 results model.predict( sourcetest_images/drone_001.jpg, imgsz640, conf0.25, # 置信度阈值遮挡场景可降到 0.2 iou0.45, # NMS 的 IoU 阈值 saveTrue ) # 打印每个框的类别和置信度 for box in results[0].boxes: cls_id int(box.cls[0]) conf float(box.conf[0]) print(f类别: {model.names[cls_id]}, 置信度: {conf:.3f})conf和iou这两个参数是推理阶段最值得调的。无人机车辆遮挡严重时conf从 0.25 降到 0.2 能多召回一些被遮挡的车但误检也会增加iou调低会让重叠框保留更多适合车辆密集的停车场场景。我的习惯是先在验证集上扫一遍conf从 0.1 到 0.5看召回和误检的平衡点在哪再定最终值。还有一个容易被忽略的点训练日志里博主提供的参考结果只能当参照不能当基准。你的硬件、随机种子、数据划分比例只要有一项不同最终指标就会有波动。我踩过的坑是直接拿别人的 mAP 去汇报结果自己复现时差了五个点被问得下不来台。从那以后我每次拿到新数据集都强制先跑一轮小 epoch 的基线把 loss 曲线和 mAP 曲线存下来再决定要不要调参。希望这份无人机车辆检测数据集和 YOLO11 训练脚本能帮你把无人机视觉感知的项目少走一段弯路。本文还有配套的精品资源点击获取
返回列表