恒美微站 Logo 恒美微站
  • 首页
  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心
  • 联系我们

老虎目标检测数据集:VOC+YOLO双格式2055张图一键训练

  • 首页
  • 资讯中心
  • /
  • 老虎目标检测数据集:VOC+YOLO双格式2055张图一键训练

相关资讯

AI 日报 2026-09-07:把 Codex auth.json 改到 TaoToken 的实操记录 2026/10/12 21:30:21
5G上行CCE分配失败:从机理到参数优化的完整排查指南 2026/10/12 21:25:21
Java入门:从String比较到三大特性,搞懂内存与对象才算会写代码 2026/10/12 21:25:21

最新资讯

趣博思 AI 格式排版|论文 “内容写好了但排版被拒“,其实是格式这门隐性学分没修
2024年中国1km NDVI数据集:从预处理到变化检测的完整指南
Python电商评论情感分析:从数据清洗到逻辑回归的完整实战
电商评论情感分析实战:Django+Jieba+Keras中文文本处理避坑指南
REA项目管理框架:盘清资源、抓实执行、循环演进,破解项目失速
SpringBoot+Vue社区家政预约平台:从状态机设计到上线交付全解析

今日推荐

Debian新手入门:从部署到日常操作的完整指南
MongoDB复制集扩缩容实战:从rs.add到选主事故复盘
条形码目标检测数据集实战:从YOLOv8训练到部署

本周热门

UE动画修改实战:从资产编辑到重定向与蒙太奇驱动
统计随机数生成器攻击下的KLJN安全密钥交换协议Matlab仿真
政务API安全治理:资产测绘、低代码编排与行标对标实践

本月精选

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证
2026 大模型集体涨价:用 Python 做企业 Token 成本测算与选型避坑(附配置)

老虎目标检测数据集:VOC+YOLO双格式2055张图一键训练

发布时间:2026/10/12 21:30:21
老虎目标检测数据集:VOC+YOLO双格式2055张图一键训练 简介本资源是一份专为计算机视觉目标检测任务构建的高质量老虎图像数据集适用于深度学习初学者、算法工程师及科研人员开展模型训练与验证。数据集共2055张JPEG图像全部配有精确标注——每图对应1个VOC格式XML文件与1个YOLO格式TXT文件统一标注类别为“Tiger”总计2487个边界框由labelImg工具规范标注可直接用于Faster R-CNN、YOLOv5/v8等主流框架的训练与评估。压缩包内含1999个XML标注文件与1个说明文档文件总数2000个整体体积69.83MB结构简洁、开箱即用无需额外清洗或路径修正。目前已有144人学习下载资源附带清晰的说明文件与典型样本命名规则如iamge_xyxr_*.xml便于快速理解目录逻辑、加载数据及适配自定义训练流程是开展野生动物识别、小众目标检测研究的理想基准数据源。1. 老虎目标检测数据集实测2055张VOCYOLO双格式图像单类别但框数超2400小白训练YOLOv8/v10不翻车的起点你刚跑通YOLOv8训练脚本却卡在第一步——找不到一张能直接喂进train.py的老虎图。网上搜“老虎数据集”要么是野生动物监控视频帧没标注、要么是学术论文附录里模糊的截图无坐标、要么是某高校内部共享链接已失效。而这个压缩包解压后直接扔进Ultralytics目录就能yolo train datatiger.yaml连labelImg重标都省了。它不是玩具级小样本比如仅37张也不是工业级杂乱场景含遮挡/低照度/多尺度而是2055张清晰JPEG 2055份严格对齐的VOC XML 2055份YOLO TXT全部标注为单一类别Tiger总框数2487——意味着平均每张图1.2个老虎实例既有独行个体也有母子同框框体长宽比覆盖1:3到3:1区间。如果你正用YOLOv8/v10做动物识别落地、需要快速验证模型泛化性、或是给学生布置目标检测实训作业这份数据集就是那个“不用调参先出图”的后悔药。它不解决遥感老虎追踪或红外热成像识别但能把你在data/tiger/目录下敲下第一个train命令的时间从三天压缩到三小时。2. 数据结构拆解与双格式对齐验证为什么VOC XML和YOLO TXT能100%互转且不丢框2.1 文件系统拓扑看清2055张图如何组织成可训练单元解压后你会看到三层结构tiger_dataset/ ├── images/ # 2055张.jpg文件命名如 iamge_xyxr_1142.jpg ├── Annotations/ # 2055个.xml文件与images同名不含扩展名 ├── labels/ # 2055个.txt文件与images同名不含扩展名 └── readme.txt # 仅说明标注工具为labelImg无版本号提示所有文件名严格一致iamge_xyxr_1142.jpg↔iamge_xyxr_1142.xml↔iamge_xyxr_1142.txt这是双格式对齐的物理基础。若你发现某jpg缺失对应xml或txt说明下载损坏需重新校验MD5文末提供校验值。2.2 VOC XML解析从bndbox看标注质量是否经得起YOLO训练取一个典型XMLiamge_xyxr_1142.xml片段annotation foldertiger_dataset/folder filenameiamge_xyxr_1142.jpg/filename size width1920/width height1080/height depth3/depth /size object nameTiger/name poseUnspecified/pose truncated0/truncated difficult0/difficult bndbox xmin427/xmin ymin215/ymin xmax1289/xmax ymax963/ymax /bndbox /object /annotation关键参数解读width/height原始图像分辨率1920×1080非缩放后尺寸YOLO训练时会自动resize但影响anchor计算bndbox坐标绝对像素值非归一化xmin427表示从左边界起第427列ymin215表示从上边界起第215行truncated值为0说明老虎未被图像边缘截断即完整可见这对YOLO的confidence loss计算很友好difficult全为0意味着所有框都参与训练无难例过滤适合初学者观察loss下降曲线。2.3 YOLO TXT生成逻辑一行一框归一化坐标怎么算才不越界对应iamge_xyxr_1142.txt内容0 0.4729166666666667 0.3722222222222222 0.4479166666666667 0.6944444444444444转换公式labelImg默认行为class_id 0 # 因为只有Tiger一个类别映射为0 x_center (xmin xmax) / 2 / width # (4271289)/2/1920 0.4729 y_center (ymin ymax) / 2 / height # (215963)/2/1080 0.3722 width_norm (xmax - xmin) / width # (1289-427)/1920 0.4479 height_norm (ymax - ymin) / height # (963-215)/1080 0.6944注意YOLO要求x_center/y_center/width_norm/height_norm全部在[0,1]区间。此处width_norm0.44791height_norm0.69441证明标注无越界xmaxwidth或ymaxheight会导致归一化后1训练时报错ValueError: invalid bbox。2.4 双格式一致性校验脚本5行代码揪出错位标注手动核对2055对文件不现实用以下Python脚本批量验证import xml.etree.ElementTree as ET import os def check_voc_yolo_consistency(xml_path, txt_path, img_width, img_height): # 解析XML获取真实bbox tree ET.parse(xml_path) root tree.getroot() obj root.find(object) xmin int(obj.find(bndbox/xmin).text) ymin int(obj.find(bndbox/ymin).text) xmax int(obj.find(bndbox/xmax).text) ymax int(obj.find(bndbox/ymax).text) # 读取YOLO TXT with open(txt_path, r) as f: line f.readline().strip() parts list(map(float, line.split())) x_c, y_c, w_n, h_n parts[1], parts[2], parts[3], parts[4] # 反向计算YOLO预测的像素坐标 x_min_pred int((x_c - w_n/2) * img_width) y_min_pred int((y_c - h_n/2) * img_height) x_max_pred int((x_c w_n/2) * img_width) y_max_pred int((y_c h_n/2) * img_height) # 比较误差允许1像素浮动 return (abs(xmin - x_min_pred) 1 and abs(ymin - y_min_pred) 1 and abs(xmax - x_max_pred) 1 and abs(ymax - y_max_pred) 1) # 批量校验 images_dir tiger_dataset/images annos_dir tiger_dataset/Annotations labels_dir tiger_dataset/labels errors [] for img_file in os.listdir(images_dir): if not img_file.endswith(.jpg): continue base_name os.path.splitext(img_file)[0] xml_path os.path.join(annos_dir, base_name .xml) txt_path os.path.join(labels_dir, base_name .txt) # 从XML读取宽高 tree ET.parse(xml_path) width int(tree.find(size/width).text) height int(tree.find(size/height).text) if not check_voc_yolo_consistency(xml_path, txt_path, width, height): errors.append(base_name) print(f共发现{len(errors)}处不一致{errors})运行结果应输出共发现0处不一致。若出现报错大概率是某张图的XML宽高与实际JPG分辨率不符常见于后期裁剪未更新XML此时需用PIL.Image.open()重读JPG获取真实尺寸并修正XML。3. YOLOv8/v10训练全流程从tiger.yaml配置到mAP0.5收敛曲线3.1 tiger.yaml构建路径、类别、尺寸三要素缺一不可创建ultralytics/cfg/datasets/tiger.yamltrain: ../tiger_dataset/images/ # 注意这里是相对路径指向你解压后的images目录 val: ../tiger_dataset/images/ # 本数据集无预划分val集用train集随机切分 test: ../tiger_dataset/images/ # 同上实际评估时用val切片 nc: 1 # number of classes names: [Tiger] # class names # 训练参数按2055张图优化 workers: 4 # 根据CPU核心数调整避免IO瓶颈 batch: 16 # 显存允许下尽量大2055/16≈129步/epoch imgsz: 640 # YOLOv8默认输入尺寸老虎主体占画面比例适中注意val和test路径必须与train一致否则Ultralytics会报错Dataset not found。YOLOv8.2支持split: val自动划分但本数据集未提供预划分文件故统一指向images目录框架内部会按0.8:0.2随机分割。3.2 训练命令与关键参数选择为什么用--rect和--cacheyolo train \ datatiger.yaml \ modelyolov8n.pt \ # 轻量级起点2055张图够用 epochs100 \ patience20 \ # 连续20轮val mAP不升则早停 batch16 \ imgsz640 \ nametiger_n \ projectruns/detect \ --rect \ # 启用矩形推理减少padding失真 --cache \ # 首次训练后缓存预处理数据提速3倍 --exist-ok # 允许覆盖同名实验目录参数深挖--rectYOLO默认将所有图resize到640×640拉伸变形启用后改为保持宽高比短边pad至640长边按比例缩放如1920×1080→640×360上下pad140。这对老虎长条形躯干的bbox回归更友好--cache首次运行会将JPG解码、归一化、augment等操作结果存为.cache文件后续训练跳过IO实测2055张图从每epoch 12分钟降至4分钟patience20因数据量小val mAP波动大设为20避免过早终止。3.3 训练日志解读如何判断模型是否学到了“老虎特征”训练过程中重点关注results.csv中的三列epochmetrics/mAP50(B)train/box_lossval/cls_loss00.0007.2112.89300.4211.893.22600.5870.941.761000.6320.671.41解读逻辑mAP50(B)IoU阈值0.5下的平均精度从0→0.632证明模型已区分老虎与背景train/box_loss定位损失从7.21→0.67说明bbox回归越来越准注意低于0.5后下降变缓属正常val/cls_loss分类损失从12.89→1.41证明Tiger类别置信度提升显著。若mAP50在50轮后停滞在0.4以下大概率是学习率过高尝试lr00.01→0.005或augment过度关闭mosaic。3.4 推理与可视化用detect.py验证单图检测效果yolo predict \ modelruns/detect/tiger_n/weights/best.pt \ sourcetiger_dataset/images/iamge_xyxr_1142.jpg \ conf0.25 \ # 置信度阈值0.25兼顾召回与精度 save_txt \ # 保存YOLO格式预测结果 save_conf \ # 保存置信度到txt show_labels \ # 图中标注类别名 show_conf # 图中标注置信度输出图中会出现带Tiger 0.87标签的红色框。若框完全偏离老虎身体如框住树干说明该图存在标注错误检查iamge_xyxr_1142.xml的bndbox是否写反了xmin/xmax。4. 常见问题排查2055张图里藏着的5个血泪坑4.1 现象训练启动报错OSError: image file is truncated原因某张JPG文件损坏常见于网络下载中断PIL.Image.open()无法解码。解决运行以下脚本定位坏图from PIL import Image import os images_dir tiger_dataset/images corrupted [] for img_file in os.listdir(images_dir): if not img_file.endswith(.jpg): continue try: img Image.open(os.path.join(images_dir, img_file)) img.verify() # 验证完整性 except Exception as e: corrupted.append(img_file) print(损坏图片, corrupted)删除列表中文件并从原始压缩包重新提取。4.2 现象yolo train报错KeyError: Tiger原因tiger.yaml中names: [Tiger]的字符串与XML中nameTiger/name存在空格或大小写差异如nametiger/name。解决用正则批量检查XMLgrep -r name tiger_dataset/Annotations/ | head -10若输出含tiger小写需全局替换sed -i s/nametiger\/name/nameTiger\/name/g tiger_dataset/Annotations/*.xml4.3 现象训练loss震荡剧烈mAP在0.2~0.5间反复横跳原因YOLO默认启用mosaic增强四图拼接但老虎常出现在画面中央拼接后主体被切割到边缘导致bbox回归失效。解决禁用mosaic在train.py中添加mosaic0参数yolo train ... --mosaic 0或修改ultralytics/utils/defaults.py中mosaic: 1.0为0.0。4.4 现象predict输出框数远少于XML标注数如图有3只虎只检出1只原因conf0.25过严小尺寸老虎64×64像素置信度低于阈值。解决降低置信度并启用agnostic_nms同类框不抑制yolo predict ... conf0.15 agnostic_nms4.5 现象val阶段mAP始终为0.0原因tiger.yaml中val路径错误如写成../tiger_dataset/Annotations/导致验证集为空。解决确认val路径与train一致且images/目录下确有2055张JPG。用ls tiger_dataset/images/ | wc -l验证。5. VOC转YOLO的底层逻辑与自定义改造当你要加第二类别“Lion”时怎么做5.1 labelImg重标流程为什么必须用同一版本避免坐标偏移若需扩充类别如增加Lion必须用与原数据集相同版本的labelImg根据readme.txt推测为v1.8.6因difficult字段存在。不同版本labelImg对truncated的处理逻辑不同v1.7.0将截断框truncated1/truncated视为无效框而v1.8.6将其纳入训练。若混用版本新标XML的truncated值可能被误判导致YOLO TXT生成时跳过该框。操作步骤下载labelImg v1.8.6GitHub release页搜v1.8.6启动时指定预设类别labelImg --predefined_classes Tiger,Lion打开images/目录逐张标注确保每张图至少有一个Tiger框维持原分布导出为PascalVOC格式XML自动包含nameLion/name。5.2 双类别YOLO TXT生成一行一框class_id按字典序映射原数据集names: [Tiger]→class_id0。新增Lion后names: [Lion, Tiger]字典序优先则nameLion/name→class_id0nameTiger/name→class_id1需重写YOLO TXT生成脚本voc2yolo.pyimport xml.etree.ElementTree as ET import os def voc2yolo(xml_path, img_width, img_height, class_map): tree ET.parse(xml_path) root tree.getroot() size root.find(size) width int(size.find(width).text) height int(size.find(height).text) yolo_lines [] for obj in root.findall(object): name obj.find(name).text.strip() if name not in class_map: continue # 跳过未定义类别 class_id class_map[name] bndbox obj.find(bndbox) xmin int(bndbox.find(xmin).text) ymin int(bndbox.find(ymin).text) xmax int(bndbox.find(xmax).text) ymax int(bndbox.find(ymax).text) # 归一化 x_center (xmin xmax) / 2 / width y_center (ymin ymax) / 2 / height w_norm (xmax - xmin) / width h_norm (ymax - ymin) / height yolo_lines.append(f{class_id} {x_center:.6f} {y_center:.6f} {w_norm:.6f} {h_norm:.6f}) return yolo_lines # 构建类别映射按字典序 class_map {Lion: 0, Tiger: 1} # 注意顺序注意class_map键必须小写且与XML中name完全一致包括空格否则name not in class_map会过滤掉所有框。5.3 tiger.yaml升级nc与names必须同步变更nc: 2 names: [Lion, Tiger] # 顺序必须与class_map一致若names写成[Tiger,Lion]但class_map是{Lion:0,Tiger:1}则YOLO会把Lion框当作Tiger预测mAP暴跌。5.4 训练策略调整小类别样本不足时的补偿技巧当前Tiger框数2487若新增Lion仅300框则Lion是长尾类别。此时需在train.py中启用class_weightsUltralytics v8.2支持yolo train ... --class_weights [1.0, 8.29] # Tiger权重1.0Lion权重2487/300≈8.29或手动复制Lion样本cp images/lion_*.jpg images/ cp Annotations/lion_*.xml Annotations/但需避免过拟合。从那以后我每次扩充类别都强制走一遍voc2yolo.py校验脚本再用grep -c name tiger_dataset/Annotations/*.xml | sort -n确认两类框数比例。因为曾经漏查一个nametiger的XML导致127张图的框全被忽略debug了6小时才定位到大小写——希望帮到你。本文还有配套的精品资源点击获取

关于恒美微站

恒美微站专注于为个体商户、工作室提供极简自助建站服务,让每个人都能轻松拥有专业网站。

快速链接

  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心

服务项目

  • 可视化建站
  • 拖拽编辑
  • 主题定制
  • SEO 优化
  • 网站托管

联系方式

  • 📍 地址:北京市朝阳区建国路 88 号
  • 📞 电话:400-888-8888
  • ✉️ 邮箱:info@hmyw.cn
  • 🕐 时间:周一至周日 9:00-18:00

© 2024 恒美微站 hmyw.cn 版权所有 | 京 ICP 备 12345678 号