当前位置: 首页 > news >正文

Diffusion as Shader数据集制作指南:使用Blender创建合成训练数据

Diffusion as Shader数据集制作指南:使用Blender创建合成训练数据

【免费下载链接】DiffusionAsShader[SIGGRAPH 2025] Diffusion as Shader: 3D-aware Video Diffusion for Versatile Video Generation Control项目地址: https://gitcode.com/gh_mirrors/di/DiffusionAsShader

Diffusion as Shader是一个基于3D感知视频扩散技术的开源项目,能够实现多样化的视频生成控制。本文将详细介绍如何使用Blender创建合成训练数据,帮助你快速上手数据集制作流程。

为什么需要合成训练数据?

合成训练数据在计算机视觉和深度学习领域扮演着重要角色。通过Blender等工具创建的合成数据具有以下优势:

  • 成本低:无需昂贵的摄影设备和场地
  • 可控性高:可以精确控制场景、光照、物体姿态等参数
  • 数据丰富:可快速生成大量多样化的样本
  • 标注精准:自动生成精确的3D坐标、深度信息等标注

Diffusion as Shader项目特别需要高质量的合成视频数据来训练其3D感知视频扩散模型,以实现如相机控制、物体操纵和运动转移等高级功能。

图:Diffusion as Shader项目支持的多种视频生成控制效果,包括3D追踪、运动转移、相机控制和物体操纵等

准备工作

安装必要工具

  1. 安装Blender:推荐使用特定版本blender-4.3.2-linux-x64,可从Blender官网下载
  2. 克隆项目仓库
    git clone https://gitcode.com/gh_mirrors/di/DiffusionAsShader
  3. 安装依赖
    cd DiffusionAsShader pip install -r requirements.txt

收集资源素材

由于版权限制,项目无法提供训练数据合成所需的场景、模型和背景素材,你需要自行收集:

  • 角色模型和动画:可从mixamo获取免费的3D角色和动画
  • 环境背景:可从polyhaven下载高质量的天空盒和HDRI环境贴图
  • 其他3D资产:可从各种3D资源网站获取场景道具等

配置Blender工作环境

创建工作空间

按照以下结构创建合成工作空间:

synthesis_workspace ├── avatar.blend # 从项目scripts目录复制 ├── render_with_random_bg.py # 从项目scripts目录复制 ├── blender-4.3.2-linux-x64 # Blender程序目录 └── raw # 存放原始素材 ├── skybox # 天空盒图片 ├── character1 # 角色1相关文件 │ ├── character1.fbx # 角色模型 │ └── motion # 角色动画 └── character2 # 其他角色...

复制项目文件

将项目中的Blender相关文件复制到工作空间:

# 假设当前在项目根目录 mkdir -p synthesis_workspace cp scripts/avatar.blend synthesis_workspace/ cp scripts/render_with_random_bg.py synthesis_workspace/

使用Blender脚本生成合成数据

Blender脚本解析

项目提供的scripts/blender.py脚本实现了以下核心功能:

  1. 计算逆深度范围:通过get_scene_inverse_depth_range函数计算场景中所有顶点的逆深度范围
  2. 设置顶点颜色:通过set_vertex_colors_for_object函数为物体设置顶点颜色,编码屏幕空间坐标和深度信息
  3. 批量处理物体:通过process_all_objects函数处理场景中的所有网格物体

该脚本会为每个网格物体创建特殊的材质,将顶点颜色信息编码为发射颜色,以便后续渲染和深度信息提取。

组织素材文件

raw目录下组织你的素材:

  • 将天空盒图片放入raw/skybox目录
  • 为每个角色创建单独的目录(如raw/character1
    • 将角色模型FBX文件直接放在角色目录下
    • 将动画FBX文件放在角色目录下的motion子目录中

执行渲染脚本

使用以下命令执行渲染脚本,生成合成数据集:

# 在synthesis_workspace目录下执行 ./blender-4.3.2-linux-x64/blender -b avatar.blend -P render_with_random_bg.py -- --base_path .

脚本会自动:

  • 加载随机选择的角色模型和动画
  • 应用随机的天空盒背景
  • 渲染带有深度信息的视频序列
  • 生成符合项目要求的数据集结构

数据集格式要求

视频数据规范

生成的视频数据需要满足以下条件:

  • 分辨率:仅支持720 * 480
  • 帧数
    • 使用项目提供的预训练模型时,必须为49帧
    • 训练自定义模型时,帧数应为4 * k + 1(如16, 32, 49, 81等)

数据集文件结构

最终的数据集应组织为以下结构:

dataset ├── prompt.txt # 训练提示文本 ├── videos.txt # 视频文件路径列表 ├── trackings.txt # 跟踪文件路径列表 ├── images.txt # 图像文件路径列表 ├── images # 从视频帧提取的图像 ├── tracking # 跟踪视频 └── videos # 原始视频

生成跟踪文件

使用项目提供的脚本生成跟踪视频:

# 多GPU加速 accelerate launch accelerate_tracking.py --data_root <videos_root> --output_dir <output_dir> # 单GPU运行 python batch_tracking.py --data_root <videos_root> --output_dir <output_dir>

总结

通过本文介绍的方法,你可以使用Blender和项目提供的脚本创建高质量的合成训练数据,用于训练Diffusion as Shader模型。合成数据的优势在于成本低、可控性高,并且可以生成丰富多样的样本。

关键步骤包括:准备工作空间、收集资源素材、配置Blender环境、执行渲染脚本以及整理数据集格式。按照这些步骤操作,你将能够创建符合项目要求的训练数据,为后续的模型训练打下坚实基础。

希望本指南能帮助你顺利制作Diffusion as Shader项目的训练数据集,如有任何问题,可参考项目中的assets/dataset.md文件获取更多详细信息。

【免费下载链接】DiffusionAsShader[SIGGRAPH 2025] Diffusion as Shader: 3D-aware Video Diffusion for Versatile Video Generation Control项目地址: https://gitcode.com/gh_mirrors/di/DiffusionAsShader

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

http://www.jsqmd.com/news/1045228/

相关文章:

  • QGIS插件开发实战:从零到一构建你的第一个工具
  • CTF逆向实战:从EasySo看SO层函数Hook与动态调试
  • AI写作如何真正提升学术表达质量
  • 新疆旅行社排名 - 企业推荐官【官方】
  • 如何5分钟快速上手GenForce:从零开始生成高质量人脸图像
  • 成都家电维修平台推荐:本地用户反馈较好的几家服务商深度实测对比——2026年6月最新发布 - 一步到家
  • Catberry状态管理终极指南:深入理解Store和Flux架构
  • Steamauto终极指南:如何实现游戏道具交易全自动化,24小时无人值守
  • 掌握OpenAI API身份验证:从API密钥到企业级安全架构
  • Python自动化获取QQ空间数据的终极方案
  • 从理论到实践:TSLS两阶段最小二乘法在经济学实证研究中的完整流程解析
  • 新疆正规旅行社推荐(附联系方式与官网) - 企业推荐官【官方】
  • 目标检测进阶:从IoU到CIoU,边框回归损失函数演进全解析与实战对比
  • 2026杭州防水补漏维修团队实测盘点TOP4:杭州业主房屋渗漏修缮靠谱选择 - 宅安选房屋修缮
  • 为什么选择ChatTutor?传统聊天机器人无法比拟的5大核心优势
  • 【毕业设计】基于 B/S 架构的院校县志捐赠借阅信息管理系统设计与实现 基于 Python+Django 的地方县志文献馆藏管理系统(源码+文档+远程调试,全bao定制等)
  • ieBetter.js高级技巧:如何扩展自定义API到旧版IE浏览器
  • 桌面自动化数字员工搭建 OpenClaw 2.7.9 全套落地操作文档(包含安装包)
  • CANN/asc-devkit:asc_gather_datablock函数
  • grunt-concurrent快速入门:5分钟学会并行运行Grunt任务
  • LSPatch:免Root实现Android应用功能扩展的终极方案
  • Hermes WebUI扩展系统架构深度解析:安全可控的自定义功能集成方案
  • CANN/asc-devkit向量大于标量比较函数
  • 团队博客 4:Sprint 2——功能扩展与深化
  • Terrakube自定义工作流:如何集成OPA、Infracost等工具扩展IaC能力
  • 3分钟掌握微信语音转换:Silk v3解码器完整使用指南
  • CANN/Ascend C数据块最小规约函数
  • 2026年宁波GEO获客优化服务商盘点:本土实力阵营解析 - 起跑123
  • Roo Code Memory Bank终极指南:让AI助手记住你的项目上下文
  • VAC进程监控模块完全解析:3种扫描类型与虚拟方法表技术揭秘