资讯动态

Infinigen 命令行接口(CLI)完全指南:infinigen2 生成器编排与 datagen 大规模作业管理

发布时间:2026/9/29 7:42:43 来源:尧图企业网站定制
计算机视觉数据增强媒体生成【免费下载链接】infinigenInfinite Photorealistic Worlds using Procedural Generation项目地址https://gitcode.com/gh_mirrors/in/infinigen点击查看免费下载本篇技术指南系统讲解 Infinigen 项目随包发布的两大命令行入口Infinigen 2.0 的infinigen2生成 CLI 与 Infinigen 1.0 的python -m infinigen.datagen.manage_jobs作业管理器。通过本文你将掌握如何用infinigen2串联多个生成器generator构建并渲染一个场景、如何用--list检索可用生成器以及如何借助manage_jobs在单机或 SLURM 集群上规模化批量生成场景。文中所有参数均以当前仓库源码src/infinigen2/generate.py、src/infinigen/datagen/manage_jobs.py为依据可直接对照使用。一、CLI 入口总览官方文档 docs/source/cli.md 明确了 Infinigen 随包提供的两个命令行入口点入口作用参数来源infinigen2Infinigen 2.0 主生成 CLI把一个或多个生成器构建为场景并渲染或导出结果src/infinigen2/generate.py 中的get_parser()python -m infinigen.datagen.manage_jobsInfinigen 1.0 数据生成作业管理器在单机或 SLURM 集群上编排大规模场景生成src/infinigen/datagen/manage_jobs.py 中的get_parser()入口点如何注册这两个命令并非 shell 别名而是通过pyproject.toml的[project.scripts]段注册的 Python 控制台脚本[project.scripts] infinigen infinigen2.generate:main infinigen2 infinigen2.generate:main可见infinigen与infinigen2指向同一个实现infinigen2.generate:main因此二者等价。安装项目如pip install .或通过 uv 安装后即可直接调用。infinigen2模块的版本号定义在 src/infinigen2/init.py__version__ 2.0.0a1。二、infinigen2生成器驱动的场景构建与渲染 CLIinfinigen2的核心设计是生成器链generator pipeline命令接收一个或多个生成器名称按顺序执行前一个生成器的输出自动作为后一个生成器的输入最终产出渲染图像、导出文件或 Blender 场景。2.1 位置参数generators串联生成器infinigen2 bricks_rand material_sphere render_cycles支持任意长度的生成器序列例如上面的示例依次执行生成随机砖块对象bricks_rand→ 赋予材质球material_sphere→ 用 Cycles 渲染render_cycles。CLI 会自动将输出连接到输入chains generators together by connecting outputs to inputs无需手动指定数据流。生成器名称的解析逻辑在_resolve_generator()src/infinigen2/generate.py先在GENERATORS_MANIFESTsrc/infinigen2/manifest.json中按短名精确匹配若匹配不到再尝试按预设preset名称匹配最后按(Object, objects)、(Scene, scenes)、(Exporter, exporters)、(Material, materials)等回退类别字符串做模糊导入。生成器的类别决定其产物如何被放入共享数据字典见_unpack_by_category()src/infinigen2/generate.pyMaterial/MaterialOverlay写入data[material]Mask同时生成data[mask]与对应的漫反射材质Object把网格追加进data[objects]若带灯光则一并收集Scene合并场景对象、相机、灯光、碰撞体、地面与尺寸Exporter追加进data[exports]由渲染阶段消费Cameras整体替换相机列表。2.2--list检索可用生成器infinigen2 --list # 列出全部生成器 infinigen2 --list Scene # 按类别过滤类别大小写不敏感 infinigen2 --list Scene Exporter--list接受零个或多个CATEGORY参数metavarCATEGORY未传时列出全部。该选项实际会把参数转发给python -m infinigen2.list见 src/infinigen2/list.py转发时固定附加--columns shortnamepython -m infinigen2.list # 更丰富的列表功能 python -m infinigen2.list --categories Scene python -m infinigen2.list --presets # 列出各生成器模块的 *_preset 变体 python -m infinigen2.list -k brick # 按名称子串过滤 python -m infinigen2.list --columns name category # 自定义输出列 python -m infinigen2.list --separator \t --head 20 # 自定义分隔符并截取前 20 行list.py的完整参数包括--categories多值取 manifest 中的合法类别、--presets列出 preset 而非 manifest 条目、-k名称子串过滤、--columns默认[name]、--separator默认空格、--missing_valueserror/drop默认drop、--head/--tail。所有数据来自 src/infinigen2/manifest.json 加载的GENERATORS_MANIFESTDataFrame。2.3 输出与随机种子参数默认值说明--outputoutputs/myresult生成场景与渲染结果的输出目录--seed随机os.urandom(8)可复现生成的随机种子支持任意进制写法int(value, 0)解析如0x1a2b关于种子的两个实现细节src/infinigen2/generate.py未显式给定时种子由int.from_bytes(os.urandom(8), big)生成因此每次运行都不同最终实际使用的种子会以十六进制写入metadata.json的seed字段方便事后复现同一场景。2.4 帧、相机与渲染参数参数默认值说明--frames START END(0, 0)渲染帧区间闭区间起点与终点--exporter_frames START END同--frames仅对 Exporter 类生成器生效的帧区间允许场景/相机覆盖完整范围而 Exporter 只渲染子集-r/--resolution W H(512, 512)输出图像分辨率-s/--samples N256渲染采样数作为max_samples传入渲染管线--focal_length_mm F15.0相机焦距毫米--cameras IDX...[0]要渲染的相机索引如--cameras 0 1可渲染双目立体视角--fps N无沿用 Blender 默认 24覆盖帧率--passes TYPE...IMAGE导出通道类型见下节2.5--passes渲染/导出通道--passes接受一个或多个ExportType枚举值定义在 src/infinigen2/exporters/util/format.pyclass ExportType(enum.Enum)infinigen2 ... --passes IMAGE DEPTH SURFACE_NORMAL常用取值包括IMAGERGB、IMAGE_DENOISED去噪 RGB、IMAGE_HDR、IMAGE_DENOISED_HDR、BLENDER_FILE.blend场景文件、MESH、CAM_IMU_TUM_TRAJ/OBJ_IMU_TUM_TRAJIMU 轨迹TUM 格式以及DEPTH、SURFACE_NORMAL、MATERIAL_INDEX、DIFFUSE_COLOR等地面真值通道。每个通道的默认文件命名与数据类型由MAINRENDER_PASS_DEFAULTS、GT_PASS_DEFAULTS、SCENE_PASS_DEFAULTS三张表约定如IMAGE→%c/%f.png的uint8图像、DEPTH→%c/depth_%f.npy的float32数组运行时通过resolve_pass_argument()把ExportType映射为具体RenderPass。渲染管线内部会为--samples与固定值组合出自适应采样参数min_samples32、samples_adaptive_threshold0.005、film_exposure2.0这些值硬编码在_main()的pipeline_parameters中src/infinigen2/generate.py。2.6 场景导出与中断行为infinigen2 ... --save_blend # 保存到输出目录 scene.blend infinigen2 ... --save_blend out.blend # 保存到指定路径--save_blend为可选值参数nargs?constTrue不带路径时保存到输出目录下的scene.blend带路径时保存到该路径。保存前会为所有对象/材质/节点组/网格设置use_fake_user True并关闭 Subsurf 修改器的视口显示以保证导出内容完整可用。infinigen2 ... --on_interrupt delete # 收到中断信号时删除输出目录 infinigen2 ... --on_interrupt exit # 直接退出 infinigen2 ... --on_interrupt cleanstate # 预留尚未实现 infinigen2 ... --on_interrupt none # 默认忽略中断--on_interrupt控制收到SIGUSR1/SIGTERM信号时的行为由_make_interrupt_handler()src/infinigen2/generate.py实现其中delete会shutil.rmtree输出目录后退出适合 SLURM 重启场景。2.7 调试与追踪--debug、--traceinfinigen2 ... -d # 打开全局 DEBUG 日志 infinigen2 ... -d objects scenes # 仅对名称含 objects/scenes 的日志器输出 DEBUG infinigen2 ... -q # 日志级别降为 WARNING infinigen2 ... --loglevel DEBUG # 显式指定日志级别-d/--debug多值可选、-q/--quiet与--loglevel合法值为logging.getLevelNamesMapping()的键共同控制日志。_DebugFilter过滤器src/infinigen2/generate.py保证给定-d子串时只对infinigen/procfunc前缀日志器中名称匹配子串的模块放行 DEBUG 记录。infinigen2 ... --trace codegen # 生成 codegen.py 到输出目录 infinigen2 ... --trace graph # 生成 graph.json计算图 infinigen2 ... --trace codestats # 打印代码统计 infinigen2 ... --trace codegen graph codestats infinigen2 ... --trace_level GENERATORS # 追踪粒度默认为 GENERATORS--trace可组合codegen、codestats、graph三种模式_execute_trace()src/infinigen2/generate.pycodegen把本次执行的计算图反编译为可读 Python 写入codegen.py并用ast.parse校验语法graph导出graph.jsoncodestats打印各阶段统计。--trace_level的合法值来自TraceLevel枚举用于控制追踪粒度更细粒度会窥探随机控制分支。启用--trace时命令在追踪完成后直接返回不再执行实际渲染。2.8 输出产物与元数据每次infinigen2运行结束后输出目录包含各导出通道的文件图像、npy、网格等文件名遵循 src/infinigen2/exporters/util/format.py 的通道命名约定metadata.json完整记录命令行参数args、十六进制种子seed、硬件信息hardware来自 src/infinigen2/util/hardware_info.py 的get_hardware_info()、各生成器耗时generator_times与导出产物清单exports。这是复现实验、排查性能瓶颈的关键文件可选scene.blend、codegen.py、graph.json视参数而定。整个执行由main()包在skip_teardown_on_exit()上下文中src/infinigen2/generate.py确保退出时干净清理。三、python -m infinigen.datagen.manage_jobs大规模数据生成作业管理器manage_jobs是 Infinigen 1.0 时代的批量场景生成编排器负责在本地机器或 SLURM 集群上编排大规模场景生成其完整参数定义在 src/infinigen/datagen/manage_jobs.py 的get_parser()。3.1 核心参数参数默认值说明-o/--output_folder自动生成outputs/日期_主机名输出根目录在 SLURM 数组任务环境下会追加_SLURM_ARRAY_TASK_ID后缀--num_scenes N1终止前尝试生成的场景数量--meta_seed NNone用于决定每个场景随机种子的元种子除非刻意复现历史运行否则留空--specific_seed S...None若指定所有场景使用同一种子尽量按整数解析默认每个场景随机。注意--specific_seed与--num_scenes 1互斥源码中有assert校验--use_existing关将--output_folder视为中断运行遗留目录尽力从断点续跑--warmup_sec F0错峰启动时长避免各作业同步运行或同时写盘--cleanup MODEnone运行过程中的清理策略all/big_files/none/except_logs/except_crashed--configs[]透传给所有底层场景生成作业的 gin 配置名列表-p/--overrides[]透传给所有底层作业的 gin 覆盖项--pipeline_configs无来自 pipeline 配置目录的 gin 配置名用于配置本次执行--pipeline_overrides[]配置本次执行的 gin 覆盖项--wandb_modedisabledonline/offline/disabledwandb 初始化模式需先自行配置 wandb--overwrite关允许覆盖已存在的输出目录-d/--debugWARNING日志级别设为DEBUGdestloglevel-v/--verboseWARNING日志级别设为INFO--print_stats N1是否周期性打印统计信息非零即打印3.2 配置加载与互斥约束manage_jobs通过infinigen.core.init.apply_gin_configs()加载配置src/infinigen/datagen/manage_jobs.py其中定义了关键的互斥约束mandatory_exclusive_configs [ infinigen/datagen/configs/compute_platform, infinigen/datagen/configs/data_schema, ]也就是说src/infinigen/datagen/configs/compute_platform计算平台本地 / SLURM 等与 src/infinigen/datagen/configs/data_schema数据模式这两组配置必须且只能各选其一通过--pipeline_configs指定例如python -m infinigen.datagen.manage_jobs \ --pipeline_configs infinigen/datagen/configs/compute_platform/slurm.gin \ infinigen/datagen/configs/data_schema/stereo.gin此外__main__入口对参数组合做了防御性校验src/infinigen/datagen/manage_jobs.py若 pipeline 未启用 upload 却设置了--cleanup except_logs/except_crashed/all会直接抛ValueError防止清理后无输出保留的悲剧反之启用 upload 但--cleanup none也会告警因为 upload 本身会做部分清理。3.3 运行行为与产物进入main()src/infinigen/datagen/manage_jobs.py后将完整命令行写入datagen_command.sh便于事后复现用init_db()初始化场景数据库以每个场景的种子为目录名创建子目录未禁用清理时写出write_html_summary生成的 HTML 进度汇总页--wandb_mode非disabled时懒加载 wandb 并wandb.init()project 名默认render之后每轮循环wandb.log统计主循环manage_datagen_jobs()src/infinigen/datagen/manage_jobs.py持续调度计算并发数、根据磁盘占用超过阈值会睡眠等待并可通过 wandb 告警、挑选待启动作业、把每个场景的queue_func投递到本地线程或 SLURM 队列每轮把全场景状态表写成scenes_db.csv并周期性打印统计块print_stats_block含开始/当前时间与各字段计数。因此运行结束后--output_folder下会有scenes_db.csv每个场景的状态记录、datagen_command.sh命令回放、jobs.log文件日志与每个种子子目录中的场景产物。配合--use_existing可以断点续跑配合 SLURM 数组任务与--warmup_sec可以做到大规模错峰调度。四、两个 CLI 的选用建议与关联阅读需要交互式生成单个场景、试验新的生成器组合或调试材质/渲染时优先使用infinigen2它面向生成器链编程模型配合--list、--trace codegen可以快速定位问题需要大规模、可复现、可断点续跑地批量产出训练数据时使用python -m infinigen.datagen.manage_jobs它提供种子管理、SLURM 编排、磁盘保护、wandb 监控与数据清理等一整套工业化能力。进一步阅读生成器清单见 src/infinigen2/manifest.json渲染/导出通道定义见 src/infinigen2/exporters/util/format.py作业管理的完整调度逻辑见 src/infinigen/datagen/manage_jobs.pygin 配置体系见 src/infinigen/datagen/configs。官方文档的 CLI 参考、Infinigen 2.0 说明、Hello World 入门 与 Hello Room 入门 可与本文对照阅读。赞分享计算机视觉数据增强媒体生成【免费下载链接】infinigenInfinite Photorealistic Worlds using Procedural Generation项目地址https://gitcode.com/gh_mirrors/in/infinigen点击查看免费下载相关推荐Flink 命令行接口CLI完全指南作业生命周期管理与 PyFlink 作业提交Flink 命令行接口CLI完全指南作业生命周期管理与 PyFlink 作业提交 Flink 提供了内置的命令行接口Command Line Inter后端大数据流处理批处理Alluxio用户命令行接口(CLI)完全指南Alluxio用户命令行接口 CLI 完全指南 概述 Alluxio作为一个开源的虚拟分布式文件系统提供了丰富的命令行接口 CLI 来管理文件系统。本文将全面存储分布式文件系统缓存大数据Alluxio用户命令行接口(CLI)完全指南Alluxio用户命令行接口 CLI 完全指南 Alluxio作为内存加速的虚拟分布式文件系统提供了丰富的命令行工具来帮助用户进行日常操作和管理。本文将全面介存储分布式文件系统缓存大数据上一篇终极缠论分析工具ChanlunX通达信插件完整使用指南下一篇告别繁琐切换peek.nvim分屏预览与窗口管理最佳实践创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑