尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
ImageNet_Utils格式转换进阶:Pascal VOC边界框转Dlib格式深度解析
ImageNet_Utils格式转换进阶Pascal VOC边界框转Dlib格式深度解析【免费下载链接】ImageNet_Utils:arrow_double_down: Utils to help download images by id, crop bounding box, label images, etc.项目地址: https://gitcode.com/gh_mirrors/im/ImageNet_UtilsImageNet_Utils是面向图像标注与检测数据处理的实用工具集支持按 ID 批量下载 ImageNet 图片、按标注裁剪边界框、GUI 画框标注以及Pascal VOC 边界框转 Dlib 格式等核心功能。本文带你完整理解这一格式转换背后的坐标换算原理与使用方法一次搞懂从 VOC 标注到 Dlib 数据集的全流程。为什么需要格式转换不同的目标检测框架和评测工具对标注文件有各自的规定格式典型场景边界框表达方式Pascal VOC XML人工标注、通用标注工具输出每张图片一个.xml文件用xmin/ymin/xmax/ymax四个角点描述框Dlib XMLDlib 训练、imglab 数据集一个dataset文件汇总所有图片用left/top/width/height描述框如果你的标注是用标注工具例如 labelImg 系工具画出来的 Pascal 格式却要喂给 Dlib 系检测器就需要做一次批量转换。ImageNet_Utils 用不到 100 行 Python 代码就解决了这个问题核心脚本位于 boxesCvtPascaltoDlib.py。两种格式到底长什么样先看看输入的 Pascal VOC 标注文件demo/pascalBoxes/2008_004649.xml它是一张图片的独立标注每张图对应一个 XMLannotation filename2008_004649.jpg/filename sizewidth500/widthheight375/heightdepth3/depth/size object namehorse/name bndbox xmin185/xminymin110/ymin xmax264/xmaxymax299/ymax /bndbox /object object nameperson/name bndbox xmin168/xminymin58/ymin xmax276/xmaxymax217/ymax /bndbox /object /annotation再看转换后的 Dlib 输出demo/dlibDetBoxes.xml它把整批图片合并到一个 dataset 文件中dataset nameimglab dataset/name images image file/path/to/imgs/000456.jpg box top44 left73 width370 height270 label1/label /box /image /images /dataset结构差异一眼可见Pascal VOC角点式xmin, ymin, xmax, ymax一图一文件Dlib尺寸式left, top, width, height全部图片汇入一个images节点图配套的图形标注工具界面左侧画框、右侧管理 Box Labels是生成 Pascal 格式标注的常见入口核心坐标换算公式转换的关键在 boxesCvtPascaltoDlib.py 的addImg函数中它完成两件事1. 角点 → 尺寸注意那个1width xmax - xmin 1 height ymax - ymin 1为什么加 1因为 Pascal VOC 的xmax/ymax是包含端点的像素坐标从 185 数到 264实际覆盖了264 - 185 1 80个像素。漏掉这个1框就会窄 1 像素批量数据积累起来会造成明显的标注偏移。这也是新手手写转换脚本时最容易踩的坑。2. 图片路径拼接输出中的image file...属性由「你传入的图片目录」「XML 里记录的filename」拼接而成保证 Dlib 训练时能按路径找到原图。另外name类名会被直接写入label节点如horse、person。如果 Dlib 流程要求数字标签可以再借助 detection_eval_tools/gt_det.py 配套的labelMap.txt做整数标签映射例如15 person 9 horse一键执行Pascal VOC 转 Dlib 格式在项目根目录下运行./boxesCvtPascaltoDlib.py Pascal标注目录 图片目录 --out out.xml以仓库自带的示例数据为例./boxesCvtPascaltoDlib.py demo/pascalBoxes demo --out demo/dlibDetBoxes.xml三个参数的含义demo/pascalBoxes—— 存放每张图.xml标注的文件夹demo—— 图片所在目录用于拼接file属性路径--out—— 输出的 Dlib 数据集文件缺省为out.xml脚本会遍历目录内所有.xml文件逐个解析遇到打不开的文件只打印Fail to open ...!并跳过不会中断整个批次非常适合脏数据较多的真实场景。上手前的三个注意事项文件名必须对得上输出中的图片路径来自 VOC 标注里的filename字段如果标注文件名与磁盘上的图片名不一致Dlib 训练时会找不到图。字段缺失会被静默跳过脚本对缺少filename、name、bndbox任意关键节点的object直接continue不会报错转换后建议抽查几个image节点确认框数正确。坐标会取整int(round(...))保证输出为整数像素浮点标注会被四舍五入属正常行为。延伸与 ImageNet_Utils 其他工具串成完整工作流格式转换只是数据处理的一环ImageNet_Utils 把它和上下游工具串起来就是一条完整的检测数据流水线下载downloadutils.py 按 wnid 批量下载 URL 图、原图及边界框标注例如./downloadutils.py --downloadBoundingBox --wnid n00007846裁剪bbox_helper.py 按标注 XML 把目标从原图中裁出输出到bounding_box_imgs/适合做小目标训练样本标注labelImgGUI/ 提供画框 GUI产出 Pascal 格式 XML见文章开头截图转换本文主角 boxesCvtPascaltoDlib.py把标注批量转成 Dlib 数据集评测detection_eval_tools/ 下的gt_det.py、reorder_meta.py负责准备 ILSVC 检测真值和重排元数据仓库获取方式git clone --recursive https://gitcode.com/gh_mirrors/im/ImageNet_Utils小结要点说明坐标换算width xmax - xmin 1height ymax - ymin 1切勿漏掉1文件结构一图一文件的 VOC → 单文件汇总的 Dlibdataset使用方式一条命令批量转换坏文件自动跳过进阶需求数字标签用labelMap.txt映射配合 detection_eval_tools/ 完成评测准备理解了这个转换原理即使遇到其他自定义标注格式你也可以照着 boxesCvtPascaltoDlib.py 不到百行的逻辑快速写出自己的转换脚本——这正是 ImageNet_Utils 作为学习样本的价值所在。【免费下载链接】ImageNet_Utils:arrow_double_down: Utils to help download images by id, crop bounding box, label images, etc.项目地址: https://gitcode.com/gh_mirrors/im/ImageNet_Utils创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED

相关推荐

豆包大模型-APP分析和SDK接入调研

豆包大模型-APP分析和SDK接入调研

目录 一、基本信息 二、豆包 APP 产品主页图 产品关键功能列表 功能分析 三、豆包 网页 Web 平台 产品关键功能列表 功能分析 四、火山引擎 SDK 接入 4.1 火山方舟大模型平台 4.2 语音技术 4.3 火山引擎后台 五、小结 六、其他 一、基本信息 目标产品 豆包 APP、…

📅 2026/10/25 23:10:41
Win11Debloat:Windows 11 一键瘦身指南

Win11Debloat:Windows 11 一键瘦身指南

Win11Debloat:Windows 11 一键瘦身指南 【免费下载链接】Win11Debloat A simple, lightweight PowerShell script that allows you to remove pre-installed apps, disable telemetry, as well as perform various other changes to declutter and customize your W…

📅 2026/10/25 23:10:40
kube-sidecar-injector揭秘:JSON Patch如何动态注入Sidecar容器——Kubernetes准入机制深度实战

kube-sidecar-injector揭秘:JSON Patch如何动态注入Sidecar容器——Kubernetes准入机制深度实战

kube-sidecar-injector揭秘:JSON Patch如何动态注入Sidecar容器——Kubernetes准入机制深度实战 【免费下载链接】kube-sidecar-injector A Kubernetes mutating webhook server that implements sidecar injection 项目地址: https://gitcode.com/gh_mirrors/ku/…

📅 2026/10/13 13:57:30
MORE NEWS

更多资讯

📰

OpenCV美颜算法实战:人脸关键点+形变+肤色校正全流程

简介:本资源是一套基于OpenCV实现人脸美颜效果的完整学习与开发套件,面向图像处理初学者、计算机视觉开发者及AI应用实践者,聚焦美白、扩眼、瘦脸等核心美颜算法的原理讲解与工程落地。压缩包共85个文件,涵盖15份PDF教学讲义&…

📰

AI-For-Beginners中文版notebook实战:环境配置与可复现

简介:这份微软 AI-For-Beginners 中文版课程包面向零基础到入门阶段的学习者,围绕为期12周、24课的课程大纲组织内容,覆盖符号人工智能、神经网络与深度学习、计算机视觉、自然语言处理、遗传算法和多智能体系统等主题,帮助读者建…

📰

Transformer算法演进实践:从手写注意力到FlashAttention与MoE

Transformer架构入门之前,我想先聊一个很多人纠结的问题:明明有那么多现成库,一行model BertModel.from_pretrained(...)就能跑起来,为什么还要手写一遍?我的答案是:读十篇论文不如亲手动笔实现一次前向传…

📰

随机森林温度预测模型优化:从特征工程到时序验证与残差建模

1. 温度预测为什么值得用随机森林,它到底卡在哪儿做气象相关的数据活儿,温度预测是最容易上手、也最容易翻车的一类任务。说它容易,是因为温度数据本身连续、噪声相对可控、历史数据积累得厚;说它容易翻车,是因为很多人…

📰

小米职级体系解析:M/P序列与真实晋升路径

我无法基于该标题生成符合要求的博文内容。原因如下:标题“31岁罗福莉,晋升小米最高职级22级”属于未经核实的网络传言类信息,目前(截至2024年中)无任何权威信源(小米官网、官方公众号、财报、可信媒体报道…

📰

贪吃蛇AI源码实战:BFS寻路与安全策略解析

简介:这份资源是一套用 C/C 编写的贪吃蛇游戏人工智能实现,面向对 AI 算法、路径搜索与游戏策略感兴趣的开发者与学习者,帮助理解如何让蛇在自动寻路中尽可能多地吃到食物,直至填满整张地图。压缩包共 57 个文件,以 34…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬