DensePose COCO 2019 数据格式全解:JSON 标注结构与 IUV 稠密人体表面映射
计算机视觉深度学习【免费下载链接】DensePoseA real-time approach for mapping all human pixels of 2D RGB images to a 3D surface-based model of the body项目地址https://gitcode.com/gh_mirrors/de/DensePose点击查看免费下载导读本文以 DensePose 官方 COCO 2019 挑战赛标注文档 data_format.md 为核心骨架逐字段剖析 DensePose 数据集的 JSON 标注格式并结合仓库内真实的数据加载、评估与结果打包源码进行印证。读完本文你将能够读懂任意一条 DensePose 标注包括 14 个语义部件掩码、24 个表面 patch 索引、UV 参数坐标理解它与 COCO 通用标注的关系并掌握从数据下载、结果编码到 GPS 评估的完整数据链路。一、标注文件总体结构DensePose 的标注以 JSON 格式存储所有图像、实例标注与类别定义都挂在同一个顶层对象下。官方推荐直接使用 COCO API即 cocodataset/cocoapi 提供的 Python/Matlab 工具包来读写与操作这些标注。其顶层结构如下{ images : [image], annotations : [annotation], categories : [category] }三个顶层数组各司其职images数据集内每张图像的元信息列表annotations图像上每个人体实例的稠密姿态标注列表也是 DensePose 数据格式的核心所在categories类别定义表同时携带关键点名称与骨架连接信息。这一结构与标准 COCO 数据集完全兼容区别仅在于annotation中额外出现了一组dp_*字段用于承载稠密人体表面标注。二、image 字段详解image对象描述单张图像的基本属性image { coco_url : str, date_captured : datetime, file_name : str, flickr_url : str, id : int, width : int, height : int, license : int }其中id是全局唯一的图像标识annotation通过image_id与之关联width/height为图像原始像素尺寸是后续 bbox 坐标归一化与评估阶段将掩码还原到整图的前提file_name指向实际图像文件。三、annotation 字段详解annotation是标注的核心对象一条标注对应一个人体实例annotation { area: float, bbox: [x, y, width, height], category_id: int, dp_I: [float], dp_U: [float], dp_V: [float], dp_masks: [dp_mask], dp_x: [float], dp_y: [float], id: int, image_id: int, iscrowd: 0 or 1, keypoints: [float], segmentation: RLE or [polygon] }3.1 通用字段bbox包围盒坐标为[x, y, width, height]。文档明确约定坐标从图像左上角起算且以 0 为起始索引。这一约定在结果格式中同样适用见后文。segmentation分割标注其格式由iscrowd决定iscrowd0表示单个目标使用多边形polygon列表。注意单个目标可能需要多个多边形例如人体被遮挡时分割成多个不连通区域iscrowd1表示目标集合如人群使用 RLE 游程编码keypointsCOCO 标准的 17 点人体关键点标注以[x, y, v, ...]三元组平铺排列v为可见性标志0 不可见 / 1 可见但被遮挡 / 2 可见。DensePose 同时提供稀疏关键点与稠密表面标注二者互为补充。area实例面积评估阶段按面积区间small / medium / large划分统计 AP。iscrowd人群/背景聚合标注标志评估时会将其从有效真值中剔除或特殊处理。3.2 dp_mask 子对象dp_masks数组中的每个元素都是一个标准的 RLE 掩码对象dp_mask { counts: str, size: [int, int] }即 COCO 标准的{counts: ..., size: [h, w]}压缩形式可用 COCO API 的maskUtils直接解码。四、category 字段详解categories中记录了类别 ID 与类别名/父类名的映射并额外携带两个用于关键点任务的字段category { id : int, name : str, supercategory : str, keypoints: [str], skeleton: [edge] }keypoints长度为k的关键点名称数组与annotation.keypoints的三元组顺序一一对应skeleton关键点连线edge对列表用于可视化时绘制骨架。在 DensePose 数据集中category_id通常指向person类。五、DensePose 专属 dp_* 字段详解这是 data_format.md 的灵魂所在。一条稠密姿态标注由“标注掩码”与“标注点”两部分组成。5.1 标注掩码dp_masks 与 14 个语义部件dp_masks包含14 张 256×256 的 RLE 编码稠密掩码分别对应人体 14 个语义部件掩码序号语义部件英文语义部件中文1Torso躯干2Right Hand右手3Left Hand左手4Left Foot左脚5Right Foot右脚6Upper Leg Right右大腿7Upper Leg Left左大腿8Lower Leg Right右小腿9Lower Leg Left左小腿10Upper Arm Left左上臂11Upper Arm Right右上臂12Lower Arm Left左前臂13Lower Arm Right右前臂14Head头部这 14 个部件的编号顺序在仓库中有直接的源码印证在 densepose_methods.py 中定义的SemanticMaskSymmetries [0, 1, 3, 2, 5, 4, 7, 6, 9, 8, 11, 10, 13, 12, 14]其下标 1–14 恰好对应上表对称变换将右手(2)与左手(3)、左脚(4)与右脚(5)、右大腿(6)与左大腿(7)等镜像配对与文档中的部件编号完全一致。评估阶段会将这些 256×256 的部件掩码解码后按 bbox 尺寸缩放回原图位置用于计算前景掩码交并比详见 densepose_cocoeval.py 中的GetDensePoseMask与computeDPIoU。5.2 标注点dp_x / dp_y 空间坐标dp_x、dp_y采集点在图像上的空间坐标坐标经过缩放使得包围盒尺寸归一化为 256×256。也就是说标注点不是原始像素坐标而是 bbox 内归一化后的相对位置这与 COCO 关键点的原始像素坐标约定不同。评估器在computeOgps中会做逆向换算dp_x * bbox_w / 255、dp_y * bbox_h / 255将点映射回原图见 densepose_cocoeval.py因此训练/推理时需注意这一缩放约定。5.3 标注点dp_I 与 24 个表面 patchdp_I表面 patch 索引指明该点位于24 个表面 patch 中的哪一个。24 个 patch 与上述 14 个语义部件的对应关系如下部分部件被拆分为 2 个 patchdp_I对应部件1, 2Torso躯干3Right Hand右手4Left Hand左手5Left Foot左脚6Right Foot右脚7, 9Upper Leg Right右大腿8, 10Upper Leg Left左大腿11, 13Lower Leg Right右小腿12, 14Lower Leg Left左小腿15, 17Upper Arm Left左上臂16, 18Upper Arm Right右上臂19, 21Lower Arm Left左前臂20, 22Lower Arm Right右前臂23, 24Head头部此 24 分区的编号同样在源码中有印证densepose_methods.py 中的Index_Symmetry_List [1,2,4,3,6,5,8,7,10,9,12,11,14,13,16,15,18,17,20,19,22,21,24,23]将 patch1↔2、3↔4、5↔6…… 两两镜像对应与上表的分区结构完全一致。5.4 标注点dp_U / dp_V 与 UV 参数化dp_U、dp_V点在 UV 空间中的坐标。每个表面 patch 拥有独立的 2D 参数化因此同一个 UV 坐标在不同 patch 上代表不同的表面位置必须与dp_I组合起来才能唯一定位人体表面上的一个点。这也是 DensePose 预测输出“IUV 三通道图”的由来I 通道编码 patch 索引U、V 通道编码参数坐标。UV 坐标的语义在 densepose_methods.py 中得到进一步阐明IUV2FBC通过重心坐标barycentric coordinates将 UV 点映射到 SMPL 网格的三角形面片与重心权重FBC2PointOnSurface再据此在任意顶点位置上插值出 3D 表面点。这说明 UV 参数化本质上建立在 SMPL 网格之上是 2D 图像像素与 3D 人体表面之间对应关系的桥梁。六、数据加载侧的源码印证DensePose 模型训练时如何消费这些dp_*字段在 body_uv_rcnn.py 的数据装载代码中可以看到直接引用Ilabel segm_utils.GetDensePoseMask(roidb[dp_masks][fg_polys_ind]) GT_I np.array(roidb[dp_I][fg_polys_ind]) GT_U np.array(roidb[dp_U][fg_polys_ind]) GT_V np.array(roidb[dp_V][fg_polys_ind]) GT_x np.array(roidb[dp_x][fg_polys_ind]) GT_y np.array(roidb[dp_y][fg_polys_ind])即从dp_masks解码出部件级掩码作为稠密分割监督从dp_I / dp_U / dp_V构造 IUV 稠密回归监督从dp_x / dp_y构造采样点监督。可见文档中定义的每一个字段都直接参与模型训练目标。七、数据下载与配套资源仓库的 DensePoseData 目录提供了官方数据获取脚本get_DensePose_COCO.sh下载 COCO DensePose 标注 JSON包括densepose_coco_2014_train.json、densepose_coco_2014_valminusminival.json、densepose_coco_2014_minival.json与densepose_coco_2014_test.jsonget_densepose_uv.sh下载densepose_uv_data.tar.gz内含UV_Processed.mat等网格/UV 参数化数据供 densepose_methods.py 的IUV2FBC等变换使用get_eval_data.sh下载评估数据densepose_eval_data.tar.gz内含SMPL_subdiv.mat、Pdist_matrix.mat、SMPL_SUBDIV_TRANSFORM.mat供评估器计算测地距离。八、结果格式uv_shape / uv_data 与标注格式的呼应提交结果格式与标注格式一一对应详见 results_format.md。其中稠密预测部分不使用dp_*逐点字段而是用两个字段承载整张 IUV 图uv_shapeuv_data数组的形状应为(3, height, width)height与width必须与 bbox 尺寸一致uv_dataPNG 压缩后的三通道数据分别编码 patch 索引I与 U、V 坐标且U、V 坐标被缩放到 0–255 的 uint8 范围。仓库提供了从模型输出的 pkl 结果转换为该提交格式的官方脚本 encode_results_for_competition.py它对每个结果的uv数组执行np.moveaxis变成 HWC 布局后用 PIL 以optimizeTrue最高压缩率保存为 PNG再经 Base64 编码写入uv_data并记录uv_shape最终json.dump输出可提交的 JSON 文件。文档还建议将 bbox 坐标四舍五入到像素的十分之一以减小 JSON 体积——这在 encode_results_for_competition.py 的整个压缩链路中都是降低提交文件大小的实用技巧。九、评估侧如何消费这些字段评估代码 densepose_cocoeval.py 完整展示了 dp_* 字段的消费方式解码_decodeUvData将提交结果中的 Base64 PNGuv_data解码回(3, H, W)数组匹配computeOgps利用真值的dp_x / dp_y将标注点映射到预测 bbox 内读取dt[uv][0, px, py]I、dt[uv][1, px, py]/255与dt[uv][2, px, py]/255U、V映射到网格findAllClosestVerts在每个 patch 的 UV 参数空间内为 GT 与预测点寻找最邻近网格顶点基于SMPL_subdiv.mat的 27,554 顶点子采样网格计算相似度getDistances查表Pdist_matrix.mat获取顶点间测地距离再按 8 个粗粒度部件Mean_Distances [0, 0.351, 0.107, 0.126, 0.237, 0.173, 0.142, 0.128, 0.150]逐点归一化得到Geodesic Point SimilarityGPS进一步与前景掩码 IoU 几何平均得到GPSm详见 evaluation.md。评估器对iouTypeuv的设定iouThrs从 0.5 到 0.95 步长 0.05、maxDets[20]、medium/large 面积区间等可在 densepose_cocoeval.py 的Params.setUvParams中直接查看。需要特别留意的是2019 挑战赛引入按部件归一化后其 AP 数值与论文中使用固定 K0.255 的报告值不再可比。十、结语从 JSON 顶层结构到dp_masks的 14 部件掩码再到dp_I的 24 patch 分区与dp_U/dp_V的部件内 UV 参数化DensePose 的数据格式在完整继承 COCO 通用标注体系的同时用一组自洽的dp_*字段完成了“2D 像素 ↔ 3D 人体表面”的稠密对应关系编码。理解这套格式是训练、推理、结果打包与提交评估四个环节之间数据打通的前提也是读懂仓库中 body_uv_rcnn.py、densepose_methods.py 与 densepose_cocoeval.py 三处关键代码的共同基础。赞分享计算机视觉深度学习【免费下载链接】DensePoseA real-time approach for mapping all human pixels of 2D RGB images to a 3D surface-based model of the body项目地址https://gitcode.com/gh_mirrors/de/DensePose点击查看免费下载相关推荐DensePose 数据格式全解COCO DensePose 标注 JSON 结构、14 部件掩码与 24 表面补丁 IUV 编码DensePose 数据格式全解COCO DensePose 标注 JSON 结构、14 部件掩码与 24 表面补丁 IUV 编码 本篇技术指南以 Dense计算机视觉深度学习DensePose COCO 2019 结果格式详解从 JSON 字段规范到 PNG 压缩编码实战DensePose COCO 2019 结果格式详解从 JSON 字段规范到 PNG 压缩编码实战 本文围绕 DensePose 仓库 challenge/2计算机视觉深度学习DensePose COCO数据集深度解析标注格式与可视化技术详解DensePose COCO数据集深度解析标注格式与可视化技术详解 你是否在处理人体姿态估计数据时遇到过2D图像与3D模型对应关系不明确的问题是否对如何高计算机视觉深度学习创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

注意:两款轻量级大模型同价开打,实际调用暗藏五倍差价

注意:两款轻量级大模型同价开打,实际调用暗藏五倍差价

注意:两款轻量级大模型同价开打,实际调用暗藏五倍差价 科技圈里两家最针锋相对的死对头,很少在任何事情上达成一致。但在2026年10月7日,一张刚刚贴出来的价目表让整个行业揉了揉眼睛:Anthropic正式发布了旗下最小、最轻…

2026/10/10 20:57:44 阅读更多 →
同一套顶尖模型做攻防测试,普通人全被拦下而特定机构却能畅通无阻

同一套顶尖模型做攻防测试,普通人全被拦下而特定机构却能畅通无阻

同一套顶尖模型做攻防测试,普通人全被拦下而特定机构却能畅通无阻 平时跟朋友聊起最新的人工智能,大家关心的往往是它能不能写周报、能不能画图、做出来的动画逼不逼真。但如果你把同一套顶尖模型拉到网络安全的世界里,事情会瞬间变得极其诡异…

2026/10/10 20:57:38 阅读更多 →
合约内代码复用:GenLayer Project Boilerplate中内部方法组织的3个原则

合约内代码复用:GenLayer Project Boilerplate中内部方法组织的3个原则

合约内代码复用:GenLayer Project Boilerplate中内部方法组织的3个原则 【免费下载链接】genlayer-project-boilerplate 项目地址: https://gitcode.com/GitHub_Trending/gen/genlayer-project-boilerplate 如果你正在学习 GenLayer 智能合约开发&#xff0…

2026/10/10 20:57:30 阅读更多 →

最新新闻

Rust Web框架实测:Salvo与axum对比,24小时快速开发CRUD接口

Rust Web框架实测:Salvo与axum对比,24小时快速开发CRUD接口

如果你最近在 Rust 里挑 Web 框架,应该会经历一段很具体的纠结期:axum 文档最全、生态最大,actix-web 性能名声在外,Rocket 的宏写法接近魔法。我原来一直偏向 axum,直到上周接了个小需求,要三天内把一个内…

2026/10/10 20:57:40 阅读更多 →
Secure Boot状态不一致:固件启用但Linux显示禁用的原理与诊断

Secure Boot状态不一致:固件启用但Linux显示禁用的原理与诊断

1. 现象本身不是Bug,而是两套独立状态系统的自然结果你刚进BIOS/UEFI设置界面,一眼就看到Secure Boot选项旁边清清楚楚标着「已启用」——绿色对勾、高亮文字、甚至还有个锁形图标。你松了口气,重启进Linux系统,随手敲下mokutil -…

2026/10/10 20:57:40 阅读更多 →
学习型索引:用轻量神经网络替代B-Tree的原理与实践

学习型索引:用轻量神经网络替代B-Tree的原理与实践

1. 项目概述:当索引本身开始“学习”数据分布你有没有遇到过这样的场景:数据库查一个范围查询,明明只想要100条记录,B-Tree却要从根节点一路遍历到叶子页,反复做磁盘随机IO,最后发现90%的页读进来只是用来跳…

2026/10/10 20:57:40 阅读更多 →
Python实现配电网经济性与可靠性双目标协同优化规划

Python实现配电网经济性与可靠性双目标协同优化规划

搞配电网规划的朋友,应该都体会过经济性和可靠性"打架"的感觉。传统工作流里,这两个维度往往是串行处理:先按年费用最小去定线路和容量,再用N-1准则或可靠性导则去校核,不够就加设备、加大截面,来…

2026/10/10 20:57:40 阅读更多 →
机器学习课程设计:Python垃圾分类系统源码解析与实战避坑指南

机器学习课程设计:Python垃圾分类系统源码解析与实战避坑指南

简介:这份Python垃圾分类系统课程设计源码包,面向机器学习课程设计学生及垃圾分类入门开发者,提供一套从模型训练到界面演示的完整个人大作业方案。项目基于TensorFlow 2.3,核心包括MobileNet模型训练脚本、窗口端垃圾分类测试程序…

2026/10/10 20:57:40 阅读更多 →
共聚焦显微镜与激光共聚焦有什么区别?选型与实操全解析

共聚焦显微镜与激光共聚焦有什么区别?选型与实操全解析

直接抛一个问题:你实验室里那台写着“共聚焦显微镜”的仪器,和你师弟论文里写的“激光共聚焦显微镜”,到底是不是同一个东西?如果只是名称长了三个字,为什么采购单上价格能差出一倍?很多刚接触显微成像的同…

2026/10/10 20:56:40 阅读更多 →

日新闻

卫星轨道分类全解析:从LEO到GEO的选型逻辑与工程实践

卫星轨道分类全解析:从LEO到GEO的选型逻辑与工程实践

1. 从“卫星轨道分类”这个标题说起:为什么值得花时间搞懂第一次接触“卫星轨道分类”这个概念,很多人会觉得它离自己很远——不就是天上的星星怎么转吗?但如果你正在做航天任务规划、遥感数据接收、星座设计,甚至只是准备一场航天…

2026/10/10 0:00:39 阅读更多 →
Spring AOP 核心原理与实战:从概念到日志切面落地

Spring AOP 核心原理与实战:从概念到日志切面落地

1. 从一个真实痛点说起:为什么你的代码里到处都是重复逻辑刚入行那会儿,我写过一个用户管理模块,注册、登录、改密码、注销四个接口。每个接口里都塞了几乎一样的日志打印、参数校验、事务开启和提交。当时觉得没什么,能跑就行。直…

2026/10/10 0:00:40 阅读更多 →
Python招聘数据采集与分析可视化:从采集清洗到薪资技能城市可视化全链路

Python招聘数据采集与分析可视化:从采集清洗到薪资技能城市可视化全链路

简介:这是一套面向计算机相关专业学生与项目实战学习者的Python数据采集与分析可视化完整项目,以Boss直聘岗位数据为对象,适合用作毕业设计、课程设计或期末大作业。资源包共38个文件,约246KB,以13个py源码文件为核心&…

2026/10/10 0:00:40 阅读更多 →

周新闻

KT148A语音芯片外挂8002D功放的工程实践指南

KT148A语音芯片外挂8002D功放的工程实践指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 11:14:25 阅读更多 →
LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 1:36:08 阅读更多 →
ARM架构深度解析:从RISC设计理念到交叉编译实战

ARM架构深度解析:从RISC设计理念到交叉编译实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 11:14:58 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 5:23:50 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/9 21:32:20 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 10:38:42 阅读更多 →