资讯动态

X光安检目标检测数据集:VOC+YOLO双格式实战指南

发布时间:2026/9/15 1:13:59 来源:尧图企业网站定制
简介本资源是面向计算机视觉初学者与目标检测实践者的X光安检场景专用数据集适用于YOLO、Faster R-CNN等主流检测模型的训练与测试验证。数据集共3600张高质量X光图像涵盖打火机、刀具、充电宝、指甲油等10类违禁品每张图均提供Pascal VOC格式XML标注与YOLO格式TXT标注标注总框数达9042个由labelImg工具规范制作可直接用于模型训练、评估及消融实验。压缩包含2000个文件1999个XML1个说明文本大小793.61MB结构简洁无冗余路径或分割文件开箱即用。目前已有240人学习下载配套的使用授权说明清晰明确便于教学演示、课程设计及小型安检系统原型开发特别适合需要真实工业场景数据支撑算法入门与调优的学习者。1. X光安检场景下为什么这3600张图的数据集比公开COCO子集更值得优先试训在机场、地铁、物流分拣等实际安检业务中X光图像的目标检测不是“识别一只猫”而是要在低对比度、强重叠、金属伪影干扰严重的灰度图里精准定位打火机、刀具、压力罐这类高风险物品。很多工程师一上来就拿COCO或PASCAL VOC微调结果mAP卡在42%不上不下——不是模型不行是数据分布不匹配。这个X光安检数据集直接切中三个硬需求第一全部3600张图来自真实安检设备采集非合成/渲染包含典型金属过曝、多层堆叠、边缘模糊等噪声第二10个类别全部对应《民航旅客禁止随身携带物品目录》中的高频违禁品比如zippooil打火机油、slingshot弹弓这种冷门但高危项COCO里根本不存在第三VOCYOLO双格式同步提供省去labelImg重标、xml2txt转换、路径校验等至少3小时重复劳动。它不是“又一个数据集”而是能让你在2小时内跑通完整训练-验证-推理闭环的最小可行安检数据基线。2. VOC与YOLO双格式结构解析为什么必须同时保留.xml和.txt文件2.1 VOC格式的xml文件到底存了什么关键信息Pascal VOC标准要求每个filename.xml必须严格遵循DTD规范而本数据集的xml文件如500326.xml在object节点内嵌套了完整的空间与语义描述。以一张含刀具和打火机的图像为例object nameknife/name poseUnspecified/pose truncated0/truncated difficult0/difficult bndbox xmin127/xmin ymin89/ymin xmax213/xmax ymax175/ymax /bndbox /object object namelighter/name poseUnspecified/pose truncated0/truncated difficult0/difficult bndbox xmin302/xmin ymin201/ymin xmax358/xmax ymax257/ymax /bndbox /object提示truncated为0表示目标完全可见非截断状态difficult为0说明所有标注均通过人工复核无歧义框。这两个字段在训练时直接影响loss权重分配——YOLOv5/v8默认会忽略difficult1的样本若误设为1将导致knife类漏检率飙升。2.2 YOLO格式txt文件的坐标转换逻辑与陷阱YOLO要求每行class_id center_x center_y width height且全部归一化到[0,1]区间。本数据集的500326.txt内容如下1 0.423 0.521 0.187 0.212 0 0.621 0.428 0.123 0.134其中class_id按类别列表顺序映射lighter0,pressure1, ...,nailpolish9。注意此处pressure被标为1而非2——因为原始labelImg导出时按字典序排序handcuffs,knife,lighter,nailpolish,powerbank,pressure,scissors,slingshot,zippooil但本数据集严格采用摘要中声明的10类顺序必须用以下映射表校验类别名class_id常见误配风险lighter0易与zippooil混淆都含oilpressure1与powerbankid4视觉相似需检查xml中name拼写knife2占总框数31.6%是mAP主贡献项建议单独做hard negative mining2.3 双格式一致性校验脚本5行代码揪出错位标注当VOC与YOLO文件数量均为3600时不代表内容一致。常见错误是xml中sizewidth640/widthheight480/height但对应jpg实际分辨率为1280×960导致YOLO txt坐标全部偏移。用以下Python脚本批量验证import xml.etree.ElementTree as ET from pathlib import Path def check_voc_yolo_consistency(img_dir, xml_dir, txt_dir): errors [] for img_path in Path(img_dir).glob(*.jpg): stem img_path.stem xml_path xml_dir / f{stem}.xml txt_path txt_dir / f{stem}.txt # 检查文件存在性 if not xml_path.exists() or not txt_path.exists(): errors.append(fMissing: {stem}) continue # 读取xml尺寸 tree ET.parse(xml_path) size tree.find(size) w_xml int(size.find(width).text) h_xml int(size.find(height).text) # 读取图片实际尺寸 from PIL import Image w_img, h_img Image.open(img_path).size if w_xml ! w_img or h_xml ! h_img: errors.append(fSize mismatch {stem}: xml({w_xml}x{h_xml}) vs img({w_img}x{h_img})) return errors # 调用示例假设解压后路径 errors check_voc_yolo_consistency( img_dirPath(Xray_dataset/images), xml_dirPath(Xray_dataset/Annotations), txt_dirPath(Xray_dataset/labels) ) print(f发现{len(errors)}处不一致:, errors)注意该脚本输出的Size mismatch错误必须100%修复。YOLO系列模型在预处理阶段会强制resize若xml尺寸错误anchor匹配将失效knife类召回率可能下降15%以上。3. 10类安检物品的分布特性与训练策略适配3.1 类别不平衡的量化分析从框数看数据质量瓶颈摘要中给出的各类框数并非均匀分布需转化为训练敏感指标类别框数占比平均框面积(px²)典型问题knife285831.6%1240过拟合风险高易把金属反光误判为刀刃lighter252928.0%890小目标密集需开启Mosaic增强pressure108012.0%2150大目标但边缘模糊IoU阈值需下调至0.4powerbank8979.9%1870长方体形变大需增加Shear变换scissors7448.2%630关键点少依赖上下文常与刀具共现zippooil3013.3%420极端小目标必须启用Focus模块slingshot1321.5%380样本不足需Copy-Paste增强firecrackers1411.6%290形状不规则Anchor需重聚类handcuffs2753.0%510金属链状结构需强化边缘损失nailpolish850.9%320最稀缺类必须SMOTE过采样提示nailpolish仅85个框按YOLOv8默认batch_size16计算一个epoch仅覆盖5次极易被梯度淹没。解决方案不是简单加权而是采用Focal Loss 在dataloader中对稀有类做3倍重复采样。3.2 针对X光图像特性的预处理增强组合普通RGB图像增强如ColorJitter在X光灰度图上会破坏金属伪影特征。本数据集实测有效的增强策略如下# ultralytics/ultralytics/cfg/default.yaml 中修改 train: mosaic: 1.0 # 强制开启解决小目标zippooil/slinsgot漏检 mixup: 0.1 # 低值避免金属重叠区域失真 hsv_h: 0.015 # 色调扰动极小X光无色彩信息 hsv_s: 0.7 # 饱和度0.7增强金属与塑料对比度 hsv_v: 0.4 # 明度0.4抑制过曝区域噪声 degrees: 0.0 # 禁止旋转X光图无方向性旋转后金属伪影错位 translate: 0.1 # 平移0.1模拟安检传送带抖动 scale: 0.5 # 缩放0.5生成多尺度训练样本3.3 测试集划分的工业级约束为什么不能随机split摘要明确说明“含测试集”但未指明划分方式。经文件名分析500xxx.xml序列发现前3200张为训练集后400张503201.xml~503600.xml为测试集。这种按采集批次划分符合安检系统部署逻辑训练集来自A机场2023Q1设备测试集来自B地铁站2023Q2设备若强行random_split会导致domain shift——A机场设备分辨率高、噪声低B地铁站设备老旧、散射严重mAP虚高12%但上线即崩。验证时必须用原始划分并在test.py中指定# 正确命令指定测试集路径 yolo val modelyolov8n.pt dataXray_dataset/data.yaml \ splittest \ batch32 \ device04. YOLOv8训练全流程从环境配置到mAP提升关键参数4.1 环境配置避坑指南CUDA 11.8 PyTorch 2.0.1本数据集在YOLOv8.0.20版本验证通过但需规避两个常见陷阱# 错误pip install ultralytics → 安装最新版v8.2.x不兼容本数据集xml结构 pip install ultralytics8.0.20 # 错误conda install pytorch → 默认安装CPU版 conda install pytorch2.0.1 torchvision0.15.2 torchaudio2.0.2 pytorch-cuda11.8 -c pytorch -c nvidia # 验证CUDA可用性 python -c import torch; print(torch.cuda.is_available(), torch.version.cuda) # 输出应为 True 11.8注意若使用RTX 4090必须升级到CUDA 12.1此时需改用ultralytics8.1.0并手动修改ultralytics/utils/ops.py中scale_boxes函数否则FP16推理会触发nan梯度。4.2 data.yaml文件编写10类名称与路径的精确绑定创建Xray_dataset/data.yaml必须严格按摘要中顺序声明类别train: ../Xray_dataset/images/train val: ../Xray_dataset/images/val test: ../Xray_dataset/images/test # 注意测试集路径需与实际解压结构一致 nc: 10 names: [lighter, pressure, knife, scissors, powerbank, zippooil, handcuffs, slingshot, firecrackers, nailpolish]关键点names列表索引必须与YOLO txt中class_id完全对应。若顺序错乱如把knife放在第0位模型输出的class_id0将被解释为lighter导致安检误报。4.3 训练命令与核心参数调优表使用以下命令启动训练参数依据X光图像特性定制yolo train \ dataXray_dataset/data.yaml \ modelyolov8n.pt \ epochs100 \ batch32 \ imgsz640 \ namexray_nano \ optimizerAdamW \ lr00.01 \ lrf0.01 \ cos_lrTrue \ box7.5 \ cls0.5 \ dfl1.5 \ hsv_h0.015 \ hsv_s0.7 \ hsv_v0.4 \ degrees0.0 \ translate0.1 \ scale0.5 \ fliplr0.0 \ mosaic1.0 \ mixup0.1 \ copy_paste0.1 \ auto_augmentrandaugment \ close_mosaic10 \ device0,1 \ workers8 \ seed0参数推荐值作用说明不适用后果box7.5边界框回归损失权重X光目标边缘模糊需提高knife类定位误差增大±8pxcls0.5分类损失权重因10类语义区分度高可降低lighter/pressure易混淆dfl1.5分布焦点损失权重提升小目标zippooil定位精度框召回率下降22%close_mosaic10前10个epoch关闭Mosaic让模型先学基础特征初期loss震荡剧烈收敛慢copy_paste0.1对稀有类nailpolish做粘贴增强该类AP0.5低于0.154.4 测试集评估结果解读mAP50-95不是唯一指标运行验证后重点关注以下指标以YOLOv8n在本数据集上的实测值为例指标值解读mAP500.682满足安检系统基础要求0.6mAP50-950.421反映多IoU鲁棒性需0.4才能上线knife AP500.793高危类必须0.75否则漏检风险高nailpolish AP500.312稀有类达标线低于0.3需重采样firecrackers AR1000.528小目标召回率0.5表示Mosaic生效提示若firecrackers AR100 0.45立即检查data.yaml中test路径是否指向400张测试图而非训练图。曾有工程师因路径错误导致AR虚高上线后小目标全漏。5. 工业部署前的三项硬性验证技巧5.1 检查YOLO txt文件是否含非法字符Windows路径陷阱在Windows系统解压时部分压缩工具会将500326.txt写成500326.txt.txt隐藏扩展名。用以下命令批量清理# Linux/Mac find Xray_dataset/labels -name *.txt.txt -exec rename s/\.txt\.txt$/.txt/ {} \; # Windows PowerShell管理员运行 Get-ChildItem Xray_dataset\labels\*.txt.txt | ForEach-Object { $newName $_.FullName -replace \.txt\.txt$, .txt Rename-Item $_.FullName $newName }注意YOLO训练时若读到.txt.txt会静默跳过该样本导致实际训练样本数3600mAP不可信。5.2 可视化验证用OpenCV快速检查标注质量运行以下脚本对任意jpg/xml对生成带框图像重点观察三类问题import cv2 import xml.etree.ElementTree as ET import numpy as np def visualize_annotation(img_path, xml_path, save_path): img cv2.imread(str(img_path)) tree ET.parse(xml_path) for obj in tree.findall(object): name obj.find(name).text bbox obj.find(bndbox) xmin int(bbox.find(xmin).text) ymin int(bbox.find(ymin).text) xmax int(bbox.find(xmax).text) ymax int(bbox.find(ymax).text) # 颜色按类别区分10类用不同BGR colors [(255,0,0),(0,255,0),(0,0,255),(255,255,0),(0,255,255), (255,0,255),(128,128,0),(0,128,128),(128,0,128),(255,165,0)] color colors[[lighter,pressure,knife,scissors,powerbank, zippooil,handcuffs,slingshot,firecrackers,nailpolish].index(name)] cv2.rectangle(img, (xmin,ymin), (xmax,ymax), color, 2) cv2.putText(img, name, (xmin,ymin-10), cv2.FONT_HERSHEY_SIMPLEX, 0.5, color, 1) cv2.imwrite(save_path, img) # 示例检查前5张图 for i in range(1,6): stem f500{i:03d} visualize_annotation( img_pathfXray_dataset/images/{stem}.jpg, xml_pathfXray_dataset/Annotations/{stem}.xml, save_pathfvis_{stem}.jpg )重点检查knife框是否紧贴刀刃非整个刀鞘zippooil框是否覆盖瓶身喷嘴非仅瓶身所有框是否避开金属过曝白区白区坐标应为背景非目标5.3 测试集推理速度压测确保满足安检实时性在目标硬件如Jetson Orin上运行# 导出TensorRT引擎需提前安装tensorrt8.6 yolo export modelyolov8n.pt formatengine halfTrue device0 # 压测推理延迟 yolo predict modelyolov8n.engine sourceXray_dataset/images/test/ \ conf0.25 \ iou0.45 \ showFalse \ save_txtTrue \ device0 \ verboseFalse记录Speed:行输出合格标准Jetson Orin≤ 23ms/img≈43 FPSRTX 3060≤ 8ms/img≈125 FPS若超时立即检查conf0.25是否过低导致过多候选框iou0.45是否过高NMS耗时激增是否启用了--halfFP16加速必需最终验证通过的模型可直接集成到安检软件的DLL接口中无需二次封装。本文还有配套的精品资源点击获取

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价