
void-model训练数据生产HUMOTOBlender反事实视频与物理模拟全流程【免费下载链接】void-model项目地址: https://gitcode.com/gh_mirrors/vo/void-modelVOIDVideo Object and Interaction Deletion是一个能从视频中连物体带交互一起删除的 AI 模型。它的训练数据完全由代码自动生产用HUMOTO 人-物交互数据集 Blender 物理模拟批量渲染有人/无人成对的反事实视频再用Kubric渲染纯物体碰撞场景。本文带你走一遍这条void-model 训练数据生产全流程——从数据集准备、角色换装、物理配置到四值 Quad-Mask 生成与训练接入新手也能照着做出一批可训练的数据。为什么训练数据这么难造要训练一个删掉物体、还要删掉它引发的连锁反应的模型靠人工剪辑视频根本行不通你需要成千上万对同一场景、有物体/无物体、且物理行为严格对应的视频。人眼可以接受杯子掉下来但人消失后杯子以完全合理的物理方式落地——这种成对数据靠拍摄是不可能的。VOID 的解法很聪明不拍视频直接渲染出来。整条数据生产管道有两大来源最终输出统一格式来源场景类型反事实手法HUMOTO Blender人-物交互删除角色后物体靠刚体物理自然掉落Kubric纯物体碰撞删除部分物体后剩余物体运动轨迹改变官方完整文档见 data_generation/README.md。获取项目代码将仓库克隆到本地即可开始git clone https://gitcode.com/gh_mirrors/vo/void-model cd void-model pip install -r requirements.txtHUMOTO 数据集需先向作者申请访问权限Kubric 管道则无需额外数据集资源会自动从云端拉取。一、HUMOTO Blender人-物交互反事实视频这条管道让一个虚拟角色拿着、碰着物体把角色删掉后物体因失去支撑而掉落从而天然形成有人/无人的成对训练样本。1.1 前置准备清单准备项说明HUMOTO 数据集申请权限后下载到data_generation/humoto_release/Blender安装 3.x / 4.x渲染脚本以blender --background --python ...方式运行角色模型从 Mixamo 下载 Remy、SophieFBX放到data_generation/human_model/PBR 贴图可选缺失时物体以纯色兜底仍可用骨骼结构定义见 data_generation/human_model/。1.2 第一步把动作换装到角色身上HUMOTO 的动作与目标角色骨架并不一致需要四步转换清除缩放 → 迁移角色骨架 → 提取姿态数据 → 复制元数据。一条命令即可批量完成cd data_generation bash convert_split_remy_sophie.sh该脚本会把前半段动作分配给 Remy、后半段分配给 Sophie产出humoto_characters_converted/{remy,sophie}/序列/下的.yaml / .fbx / .pkl。需要更细控制时可用 Python 版 convert_all_scenarios_for_characters.py。1.3 第二步配置哪些物体会掉下来物理行为由 physics_config.json 逐序列定义家具桌子、墙面标记为静态手持物杯子、盘子标记为动态删除角色后才会掉落。生成模板generate_physics_config.py生成预览帧 用 Streamlit 界面可视化审核generate_review_frames.py 与 physics_review_ui.pypython generate_review_frames.py --data_dir ./humoto_characters_converted streamlit run physics_review_ui.py1.4 第三步一键渲染成对视频核心渲染器 render_paired_videos_blender_quadmask.py 会为每个序列渲染三遍完整场景 / 删除角色 / 剪影并合成四值掩码blender --background --python render_paired_videos_blender_quadmask.py -- \ -d ./humoto_release/humoto_0805 \ -o ./output \ -s 序列名 \ -m ./humoto_release/humoto_objects_0805 \ --use_characters --enable_physics --add_walls \ --target_frames 60 --fps 12常用开关--camera_variant v1~v9换镜头轨迹、--resolution_x/y设分辨率默认 1600×900、--seed固定随机种子。底层工具函数位于 blender_utils.py贴图映射见 object_texture_mapping.py。二、四值 Quad-Mask告诉模型哪里该变模型需要知道画面中每个像素属于哪一类于是用一张四值掩码视频Quad-Mask来编码语义像素值含义0黑人物曾在此处下方无变化纯删除63深灰人物在此处且下方物体移动了重叠区127灰物体移动 / 场景改变人物之外255白无变化保留若已有三值掩码需要补全可用 convert_trimask_to_quadmask.py 转换或用 convert_masks_to_grid_hybrid.py 转成网格对齐掩码。三、Kubric 管道纯物体碰撞反事实视频这条管道不涉及人物而是让 3~7 个物体相互碰撞、并把其中几个射向目标物体删除后剩余物体的物理轨迹随之改变。它无需额外数据集资源自动从云端拉取。它对每个场景跑三遍渲染来自动推导掩码Pass输出作用Argb_full.mp4全部物体在场完整物理Crgb_removed_objects_invisible.mp4被删物体隐藏但物理影响仍在Brgb_altered_physics.mp4被删物体彻底消失重新模拟物理掩码由三遍对比得到A 的分割定位被删像素黑/0、C 与 B 的差值定位物理变化灰/127、两者交叠深灰/63。一键运行cd data_generation pip install kubric pybullet imageio imageio-ffmpeg python kubric_variable_objects.py --num_pairs 200 --resolution 384快速验证可加--fast更少帧、更低采样。核心逻辑见 kubric_variable_objects.py。四、训练数据格式与接入训练两条管道输出统一格式训练脚本即可直接读取training_data/ └── 序列名/ ├── rgb_full.mp4 # 输入视频有物体 ├── rgb_removed.mp4 # 目标视频物体删除、物理已应用 ├── mask.mp4 # 四值掩码0/63/127/255 └── metadata.json # 场景信息、贴图、角色、镜头变体把生成好的数据目录登记进 datasets/void_train_data.json即可开始训练。训练分两阶段阶段脚本作用Pass 1train_void.sh从头训练基础修复模型Pass 2train_void_warped_noise.sh用扭曲噪声细化提升长视频时序一致性bash scripts/cogvideox_fun/train_void.sh # Pass 2 前先把 Pass 1 的 checkpoint 传入 TRANSFORMER_PATHpath/to/pass1_checkpoint.safetensors \ bash scripts/cogvideox_fun/train_void_warped_noise.sh官方训练在8× A100 80GB上、以 DeepSpeed ZeRO-2 进行可按需调整。五、结语VOID 最值得学习的一点是用可复现的 3D 渲染 物理模拟替代不可得的人工拍摄批量、精确地生成成对反事实训练数据。HUMOTOBlender 负责真实的人-物交互Kubric 补足纯物体碰撞二者殊途同归地输出统一的四值掩码格式再分两阶段训练。理解了这条void-model 训练数据生产管道你也能举一反三为自己的视频生成任务搭一套可控、可扩展的数据工厂。【免费下载链接】void-model项目地址: https://gitcode.com/gh_mirrors/vo/void-model创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考