ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

CVAT 中 Pascal VOC 格式的导入与导出:XML 标注数据集的完整落地指南

2026/9/14 18:47:08 拓冰建站 浏览量
CVAT 中 Pascal VOC 格式的导入与导出:XML 标注数据集的完整落地指南 CVAT 中 Pascal VOC 格式的导入与导出XML 标注数据集的完整落地指南【免费下载链接】cvatComputer Vision Annotation Tool (CVAT) is a leading platform for building high-quality visual datasets for vision AI. It offers open-source, cloud, and enterprise products, as well as labeling services, for image, video, and 3D annotation with AI-assisted labeling, quality assurance, team collaboration, analytics, and developer APIs.项目地址: https://gitcode.com/GitHub_Trending/cvat/cvatPascal VOCVisual Object Classes是目标检测与分类领域最经典的早期基准格式之一其基于 XML 的标注结构被广泛应用于计算机视觉数据集。本文基于 CVAT 官方文档 format-voc.md 展开结合仓库中 pascal_voc.py 的导入/导出实现系统讲解 CVAT 中 PASCAL VOC 1.1 格式的导出规则、导入匹配机制与完整操作步骤帮助你把 VOC 数据集与 CVAT 任务无缝对接。格式背景为什么是 XML ZIPPascal VOC 为对象类别识别提供了一套标准化的图像数据集规范标注文件为每张图像对应一个.xml文件图片按JPEGImages/目录组织配合ImageSets/下的子集清单如default.txt、train.txt划分训练/验证集合。由于该 XML 结构在目标分类与检测任务中被长期沿用将标注数据转换为 VOC 格式可以方便地与大量既有工具链、训练框架对接。在 CVAT 中该格式对应的导入/导出器注册信息为名称PASCAL VOC、文件扩展名ZIP、版本1.1即界面中显示的PASCAL VOC 1.1。这一注册由 pascal_voc.py 中的exporter/importer装饰器完成exporter(namePASCAL VOC, extZIP, version1.1) def _export(dst_file, temp_dir, instance_data, save_imagesFalse): ... importer(namePASCAL VOC, extZIP, version1.1) def _import(src_file, temp_dir, instance_data, load_data_callbackNone, **kwargs): ...导出Export支持范围与输出结构支持的标注类型与属性导出图像标注时Pascal VOC 格式的支持范围如下支持的标注Bounding Boxes检测框Tags图像级分类标签Polygons多边形分割Masks掩膜分割Ellipses椭圆以掩膜形式导出即先转换为 mask属性Attributesoccluded既作为 UI 选项也作为独立属性truncated与difficult必须在标签上定义为checkbox类型任意自定义属性会写入 XML 文件的attributes段Tracks轨迹不支持。VOC 是静态图像标注格式轨迹类标注无法导出。导出的 ZIP 包结构导出结果是一个.zip压缩包内部结构固定如下taskname.zip/ ├── JPEGImages/ │ ├── image_name1.jpg │ ├── image_name2.jpg │ └── image_nameN.jpg ├── Annotations/ │ ├── image_name1.xml │ ├── image_name2.xml │ └── image_nameN.xml ├── ImageSets/ │ └── Main/ │ └── default.txt └── labelmap.txt # labelmap.txt # label : color_rgb : body parts : actions background::: aeroplane::: bicycle::: bird:::其中labelmap.txt是 CVAT 的标签映射文件字段依次为label : color_rgb : body parts : actions未设置的字段以空值保留如aeroplane:::用于还原标签与颜色的对应关系。源码层面的导出流程从 pascal_voc.py 的_export实现可以看到完整的导出调用链通过GetCVATDataExtractor定义于 bindings.py从数据库抽取 CVAT 标注数据为 Datumaro 数据集执行dataset.transform(EllipsesToMasks)——这正是椭圆以掩膜形式导出的实现transformations.py 中的EllipsesToMasks使用cv2.ellipse在空白图上绘制椭圆再经mask_utils.encode编码为 RLE 掩膜调用dataset.export(temp_dir, voc, save_mediasave_images, label_mapsource)按 Datumaro 的 voc 后端生成JPEGImages/、Annotations/、ImageSets/Main/default.txt与labelmap.txt其中label_mapsource保证标签映射保留任务中的原始标签名最后由make_zip_archive将整个目录打包为下载的.zip文件。导入ImportZIP 结构与帧名匹配规则可接受的压缩包结构导入时上传的.zip文件支持以下两种结构与导出完全一致的标准结构含JPEGImages/、Annotations/、ImageSets/Main/、labelmap.txt扁平结构——压缩包内直接是若干.xml标注文件taskname.zip/ ├── image_name1.xml ├── image_name2.xml └── image_nameN.xml导入时还涉及属性支持action 类属性action attributes仅在导入阶段支持且必须定义为checkbox类型。帧名与标注文件名的匹配规则CVAT 需要把 XML 标注关联到任务的对应帧上匹配依据是标注文件中的filename标签例如filename2008_004457.jpg/filename。共有两种匹配方式完整匹配帧名与 XML 中filename完全一致。适用于任务由图片或图片压缩包创建的场景按帧号匹配文件名形如number.jpg或frame_000000.jpg。适用于任务由视频创建的场景此时帧名由帧序号生成。源码层面的导入流程pascal_voc.py 的_import实现补充了文档未展开的几个关键细节labelmap 缺省生成若压缩包里缺少labelmap.txt代码会从任务自身的标签元数据生成一份每行标签名:::确保标签映射可用扁平布局自动规整若包内没有Annotations/目录代码会递归收集所有*.xml文件自动创建ImageSets/Main/train.txt写入各标注文件的基础名并把 XML 文件统一移入Annotations/目录——这正是文档中扁平结构也可导入的底层实现数据集校验与导入规整后先调用detect_dataset(temp_dir, format_namevoc, ...)做格式探测再由Dataset.import_from(temp_dir, voc, envdm_env)完成解析掩膜回转随后执行MaskToPolygonTransformation.convert_dataset(dataset, **kwargs)其conv_mask_to_poly参数默认为True即导入时把 mask 转换为多边形见 transformations.py 中该类实现。实战从 Pascal VOC 数据集创建 CVAT 任务以下流程与官方文档保持一致适用于从标准 Pascal VOC 数据集如 VOC 2012向 CVAT 导入已有标注下载数据集从 PASCAL VOC 官方网站获取 VOC 数据集包含Annotations/、JPEGImages/、ImageSets/等目录创建带 20 个类别标签的 CVAT 任务标签列表为aeroplane bicycle bird boat bottle bus car cat chair cow diningtable dog horse motorbike person pottedplant sheep sofa train tvmonitor如果希望在标注中启用difficult/truncated标志可以为每个标签追加 checkbox 属性~checkboxdifficult:false ~checkboxtruncated:false任务创建时选择感兴趣的目标图像文件可参考 创建标注任务 指南中的 Create annotation task 部分。打包标注文件将对应的 XML 标注文件压缩为 zip可以是完整标准结构也可以只是扁平的*.xml集合上传标注点击Upload annotation按钮格式选择PASCAL VOC 1.1选择上一步生成的 zip 文件。导入过程可能需要一些时间。验证依据与延伸阅读格式实现的入口文件pascal_voc.py导出/导入函数、labelmap 生成、扁平布局处理椭圆转掩膜等类型转换transformations.pyEllipsesToMasks、MaskToPolygonTransformation后端 REST API 层面的导出/导入回归测试在 test_rest_api_formats.py 中对PASCAL VOC 1.1等格式做了遍历验证可据此确认该格式在接口层的可用性与版本命名格式注册与名称映射registry.py完整文档原文format-voc.md。小结CVAT 的 Pascal VOC 支持围绕静态图像标注 XML 描述这一核心设计导出端将 CVAT 标注含以 mask 形式落地的椭圆按 VOC 目录规范打包为 ZIP并通过labelmap.txt保留标签映射导入端兼容标准与扁平两种包结构依靠filename标签的完整匹配或帧号匹配将标注落回任务帧。理解了 pascal_voc.py 中的调用链后再执行建任务 → 配标签 → 打包 XML → 上传的四步流程VOC 数据集与 CVAT 之间的双向数据流转就完全可控了。【免费下载链接】cvatComputer Vision Annotation Tool (CVAT) is a leading platform for building high-quality visual datasets for vision AI. It offers open-source, cloud, and enterprise products, as well as labeling services, for image, video, and 3D annotation with AI-assisted labeling, quality assurance, team collaboration, analytics, and developer APIs.项目地址: https://gitcode.com/GitHub_Trending/cvat/cvat创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考