发布时间:2026/8/18 15:39:10
从视频到训练数据:HMMR中OpenPose轨迹提取与帧裁剪预处理全流程指南 从视频到训练数据HMMR中OpenPose轨迹提取与帧裁剪预处理全流程指南【免费下载链接】human_dynamicsProject for paper Learning 3D Human Dynamics from Video项目地址: https://gitcode.com/gh_mirrors/hu/human_dynamics想要训练 HMMRHuman Mesh Recovery from Video视频三维人体动态学习模型这样从视频中学习三维人体动态的模型最关键的准备工作就是把一段段原始视频变成模型能直接读懂的训练数据。这条流水线的核心就是OpenPose轨迹提取与帧裁剪预处理两大环节。本文将以 HMMR 官方代码库为例用通俗易懂的方式带你完整走一遍视频 → 关键点轨迹 → 裁剪帧 → TFRecord 训练数据的转换过程即使你刚接触三维人体重建也能照着一步步跑通。HMMR 为什么要从视频里抠训练数据HMMR 的核心思路是输入一段连续的视频帧输出每一帧对应的人体三维网格姿态包括当前、过去和未来时刻。它不需要昂贵的动捕设备而是靠大规模在野视频in-the-wild video自学。但原始视频无法直接进网络必须先做两件事找到视频里的人并跟踪他们的二维骨骼关键点这就是 OpenPose 轨迹提取把人裁剪成统一尺寸的干净图像供卷积网络提取特征这就是帧裁剪预处理。这两步分别对应仓库根目录的 extract_tracks.py 和 src/datasets/video_in_the_wild_to_tfrecords.py下面逐一拆解。第一步OpenPose轨迹提取的三大执行阶段在 HMMR 中轨迹提取实际是 AlphaPose PoseFlow 的组合AlphaPose 做单帧检测、PoseFlow 做跨帧跟踪extract_tracks.py只是把它们串起来的封装脚本整个过程分三段执行阶段一ffmpeg 抽帧把视频拆成图片序列PoseFlow 要求输入是逐帧图片所以先调用 ffmpeg 把 mp4 拆成 PNG 帧ffmpeg -i 视频.mp4 -start_number 0 输出目录/frame%08d.png对应源码中的dump_frames函数。注意抽出的帧名按 8 位数字编号后续轨迹和裁剪都要靠这个帧序对齐。阶段二AlphaPose 逐帧检测人体关键点接着在帧目录上运行 AlphaPose 的单帧检测模式--sp关闭多进程以避免报错对每一帧输出 25 个关键点含脚趾、脚踝等 COCO 扩展关节的坐标与置信度结果汇总为一个alphapose-results.json。这一步得到的是每帧独立的检测人物 ID 还不连续。阶段三PoseFlow 关联跟踪生成连续轨迹最后用 PoseFlow 的tracker-general.py把逐帧检测结果串成多人的连续轨迹输出alphapose-results-forvis-tracked.json。每个被跟踪的人物拥有一个稳定的idx编号即使某几帧检测不到也会以空值占位保证轨迹长度与帧数一致。完整调用链见compute_tracks函数它把中间产物统一放在--track_dir下目录结构为视频名/video_frames与视频名/AlphaPose_output既方便断点续跑已生成的文件会自动跳过也方便你排查问题。第二步轨迹清洗——把脏数据挡在训练门外拿到原始轨迹后并不能直接使用。video_in_the_wild_to_tfrecords.py里的clean_video函数会做四道质检不合格的视频直接丢弃可见点数过滤统计每帧可见关键点数中值滤波后低于 4 个点MIN_VIS_PTS的片段直接截断开头空白裁剪如果视频前几帧检测不到人MIN_VIS_START_PTS阈值自动把无检测的开头切掉最短长度限制清洗后不足 40 帧MIN_NUM_FRAMES的轨迹整体丢弃只有脸和肩剔除如果超过 40% 的帧只有上半身关键点可见说明镜头只拍到了人脸特写这类样本对学习全身动态毫无帮助直接跳过。此外超过 500 帧的长轨迹会被截断到MAX_FRAME_LENGTH避免单条样本过长拖慢训练。清洗逻辑集中在 video_in_the_wild_to_tfrecords.py。第三步帧裁剪预处理——从全图到 224x224 的标准输入这是整个流程中最讲究的部分目标是让每一帧都以人为中心、尺度统一地送入网络具体分四步1. 计算平滑边界框参数直接由关键点算出的包围盒往往抖动剧烈。HMMR 用 src/util/smooth_bbox.py 的get_smooth_bbox_params生成稳定的人体框先按可见关键点的最小外接矩形求出中心与缩放尺度让人高归一化到约 150 像素再对缺失帧做线性插值最后依次经过中值滤波 高斯滤波双重平滑得到一条时间上连续稳定的边界框轨迹。2. 按边界框缩放与补边每一帧按照平滑后的scale等比缩放并在四周用边缘像素补 300 像素的边保证人始终位于画面中央且有足够的裁切余量。3. 裁出 300x300 中心区域以平滑中心点为原点裁出 300x300 的局部图像同时把关键点坐标同步平移保证标注与图像始终对齐。这一尺寸留足了空间方便下一步数据增强时做平移和缩放扰动。4. 数据增强与最终缩放训练时离线生成阶段会再经过 src/util/tube_augmentation.py 的 Tube 级增强整段视频随机水平翻转并施加有界随机游走的平移抖动单帧最大 20 像素、帧间增量受限与尺度抖动模拟相机抖动增强模型鲁棒性。最终统一缩放到 224x224像素归一化到 [-1, 1]作为 ResNet 特征提取器的标准输入。如果你想要更平滑的训练轨迹可以在生成 TFRecord 时加上--delta_trans_max 0 --delta_scale_max 0让抖动只作用于整条轨迹而非每一帧见 prepare_datasets.sh 末尾的说明。第四步打包成 TFRecord 训练数据预处理完成后每一帧的图像JPEG 编码、14 个公共关节坐标、可见性标记、中心点、缩放因子、裁剪起点以及预计算的 2048 维 HMR 图像特征phi都会被写入 TFRecord 文件。官方数据集如 InstaVariety的字段说明见 doc/datasets.md训练集每 50 条轨迹一个分片并可设置num_copy让每条视频复制多份以扩充样本。一键运行完整命令串起来整个流水线可用仓库根目录的 prepare_datasets.sh 串联。假设你已下载好视频帧与轨迹 JSON按以下顺序执行即可# 1. 生成训练集 TFRecord python -m src.datasets.video_in_the_wild_to_tfrecords \ --data_directory ${INSTA_TRACKS_DIR} \ --output_directory ${OUT_DIR}/insta_variety \ --num_copy ${INSTA_NUM_COPIES} \ --pretrained_model_path ${HMR_MODEL} \ --image_directory ${INSTA_FRAMES_DIR} \ --video_list ${INSTA_VIDEO_LIST} --split train # 2. 生成测试集 TFRecord python -m src.datasets.video_in_the_wild_to_tfrecords \ --data_directory ${INSTA_TRACKS_DIR} \ --output_directory ${OUT_DIR}/insta_variety \ --num_copy 1 \ --pretrained_model_path ${HMR_MODEL} \ --image_directory ${INSTA_FRAMES_DIR} \ --video_list ${INSTA_VIDEO_LIST} --split test生成的 TFRecord 可以直接用 src/datasets/visualize_train_tfrecords.py 可视化检查确认裁剪结果和关键点标注是否正确。总结一条视频数据的洗白流水线回顾全程HMMR 的数据预处理可以浓缩成一条清晰的流水线ffmpeg 抽帧 → AlphaPose 逐帧检测 → PoseFlow 跨帧跟踪 → 轨迹质检清洗 → 平滑边界框 → 缩放补边 → 300x300 裁剪 → Tube 数据增强 → 224x224 标准化 → 写入 TFRecord每一步都在解决一个具体问题抽帧解决格式问题、跟踪解决人是谁的问题、清洗解决数据质量问题、裁剪解决输入标准化问题。理解了这条 OpenPose轨迹提取与帧裁剪预处理流水线你就掌握了 HMMR 乃至同类从视频学习三维人体动态方法的数据基石。之后无论是训练自己的模型还是跑通 demo_video.py 的推理演示都会轻松很多。【免费下载链接】human_dynamicsProject for paper Learning 3D Human Dynamics from Video项目地址: https://gitcode.com/gh_mirrors/hu/human_dynamics创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

2026/8/18 16:54:27

代码评审看性能数据,先确认测试测到了什么

代码评审看性能数据,先确认测试测到了什么 1. 代码评审中的性能测试数据误区 性能数据可以帮助代码评审,但它依赖测试对象、环境和统计方式。 例如在一次 Merge Request(MR)评审中,提交说明展示了匹配算法从 $\math…

2026/8/18 16:54:27

构建工具升级,先把插件兼容性列成清单

构建工具升级,先把插件兼容性列成清单 从 Vite 4 升级到 Vite 6 前,应先阅读目标版本的迁移指南和依赖的兼容说明。构建工具、Rollup、Node.js、插件及样式预处理器的版本组合都会影响结果;不能仅通过修改 package.json 判断升级风险。 1. V…

2026/8/18 16:54:27

组件协作,别让隐式副作用跨过边界

组件协作,别让隐式副作用跨过边界 多个团队共享 Vue Composable 时,状态如何导出、谁能修改、怎样追踪变更,都应写成接口契约。直接解构 reactive 对象会得到普通值;需要保留响应性时,应使用 toRefs,或保持…

2026/8/18 16:54:27

MicroReader离线阅读指南:4周离线缓存帮你节省90%流量的秘密

MicroReader离线阅读指南:4周离线缓存帮你节省90%流量的秘密 【免费下载链接】MicroReader 一个小而美的阅读客户端 项目地址: https://gitcode.com/gh_mirrors/mi/MicroReader MicroReader(微阅)是一款小巧精致的安卓离线阅读客户端&…

2026/8/17 10:49:52

工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

第四篇:反射——高频能量撞墙之后会发生什么? —— 你以为信号已经过去了,其实它正在回来打你 老Q的现场笔记 第五季,我们正式进入工业神经系统层。这里不再是单个设备的战斗,而是整个工厂“经脉”层面的秩序之战。从这一篇开始,你将第一次看清:看似简单的信号传播,背…

2026/8/18 6:58:27

工业传感器与变送器详解:序章 从物理世界到工业数据

序章 从物理世界到工业数据 ——重新认识工业传感器与变送器 工业自动化系统正变得日益复杂。今天的工业现场早已不是简单的控制回路,而是由多层技术共同构成的立体体系:PLC、DCS、SCADA、MES、工业互联网、边缘计算与人工智能。控制系统可以执行复杂算法,工业网络可以实现…

2026/8/18 0:02:05

Qwen3.8-27B本地部署实战:17GB内存运行270亿参数大模型

1. 这篇文章真正要解决的问题 你是否曾对动辄需要上百GB显存才能运行的百亿参数大模型望而却步?是否觉得在个人电脑上部署一个功能强大的语言模型是天方夜谭?最近,通义千问团队发布的 Qwen3.8-27B 模型,宣称仅需 17GB 内存即可在本…

2026/8/18 0:02:05

ME3169 36V,8A,180KHz 恒压Buck DC-DC 转换器

概述ME3169 是一款180KHz,PWM 模式恒压Buck DC-DC 转换器,8V 到36V 宽工作电压范围,低纹波,内置低导通电阻功率MOS。ME3169 内置环路补偿电路,可以减少外围元器件数量。内部设计有恒压环路,可以通过外部电阻…

2026/8/17 15:07:41

实测才敢推 AI论文网站 2026最新测评与推荐

2026年真正好用的AI论文网站,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。一、综…

2026/8/17 17:27:06

2026必备!AI论文网站测评:最新推荐与深度对比

2026年真正好用的AI论文网站,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 一、…

2026/8/18 7:12:40

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

一天写完毕业论文在2026年已不再是天方夜谭。2026年最炸裂、实测能大幅提速的AI论文写作工具,覆盖选题构思、文献整理、内容生成、格式排版等核心场景,真正帮你高效搞定论文难题。 一、全流程王者:一站式搞定论文全链路(一天定稿首…