ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Infinigen 相机配置完全指南:从立体匹配、多视角布点到 RRT* 动态视频轨迹

Infinigen 相机配置完全指南:从立体匹配、多视角布点到 RRT* 动态视频轨迹 计算机视觉数据增强媒体生成【免费下载链接】infinigenInfinite Photorealistic Worlds using Procedural Generation项目地址https://gitcode.com/gh_mirrors/in/infinigen点击查看免费下载导读本文是 InfinigenInfinite Photorealistic Worlds using Procedural Generation官方文档 ConfiguringCameras.md 的深度展开系统讲解如何为各种计算机视觉任务配置相机立体匹配Stereo Matching、基于 RRT* 的动态相机视频、随机游走视频、多视角环形布点MVS / NeRF以及完全自定义的相机排列与动画。读完本文你将能够直接使用manage_jobs生成可训练/可评测的数据集并理解相机位姿提议、校验、动画策略背后的源码级原理从而按需调整速度、旋转、天空占比等参数。1. 相机系统基础Rig 结构、提议与校验在进入命令行示例之前先理解 Infinigen 的相机抽象。从 src/infinigen/core/placement/camera.py 可以看到相机以Rig刚体组为单位组织spawn_camera_rigscamera.py为每个 rig 创建一个名为camrig.{i}的空父对象并为每个 rig 按camera_rig_config生成若干子相机命名为camera_{rig}_{subcam}子相机通过loc与rot_euler配置相对位置每个 rig 代表一个视点组例如立体相机 rig 内含左右两个子相机多视角 rig 内含多个朝向目标的子相机单目场景的默认配置见 configs_nature/monocular.gin其中camera.spawn_camera_rigs.camera_rig_config只有一个位于原点、零旋转的子相机。相机位姿的产生遵循提议proposal→ 校验keep/validate两步camera_pose_proposalcamera.py负责采样候选位置支持围绕center_coordinate以随机半径环形采样、按altitude/roll/yaw/pitch分布采样并通过向场景 BVH 射线检测保证视线不被遮挡keep_cam_pose_proposalcamera.py负责拒绝坏位姿离 placeholder 太近、离地形太近、地形覆盖率不在terrain_coverage_range、或某类语义像素占比如 CloseUp、标签占比超出camera_selection_ratio范围的候选都会被丢弃compute_base_viewscamera.py批量搜索并打分排序候选返回最优的n_views个基视图。min_candidates_ratio控制候选池大小默认 20 倍这正是命令中经常出现该参数的原因。2. 立体匹配Stereo Matching2.1 自然场景每场景 1 个立体相机python -m infinigen.datagen.manage_jobs --output_folder outputs/stereo_nature --num_scenes 30 \ --pipeline_config stereo.gin local_256GB.gin cuda_terrain.gin blender_gt.gin --configs high_quality_terrain2.2 室内场景每房间 20 个立体相机python -m infinigen.datagen.manage_jobs --output_folder outputs/stereo_indoors --num_scenes 30 \ --pipeline_configs local_256GB.gin stereo.gin blender_gt.gin indoor_background_configs.gin --configs singleroom \ --pipeline_overrides get_cmd.driver_scriptinfinigen_examples.generate_indoors \ --overrides camera.spawn_camera_rigs.n_camera_rigs20 compute_base_views.min_candidates_ratio2 compose_indoors.terrain_enabledFalse compose_indoors.restrict_single_supported_roomtypeTrue参数速查参数作用示例值--output_folder数据输出目录outputs/stereo_indoors--num_scenes生成场景数30--configs场景内容配置逗号分隔的 gin 文件名singleroom、high_quality_terrain--pipeline_configs渲染/地形/标注管线配置local_256GB.gin stereo.gin blender_gt.gin--pipeline_overrides覆盖管线层 gin 参数get_cmd.driver_script...--overrides覆盖场景层 gin 参数camera.spawn_camera_rigs.n_camera_rigs20关键设计考量官方文档明确建议室内场景建议每房间 20 个相机房间生成与视角无关view-independent可以从很多角度渲染同一房间因此每场景渲染更多帧能显著提高 GPU 利用率自然场景不要盲目加大n_camera_rigs当前相机代码会在自然场景中把相机放置得相距很远导致可见内容几乎不重叠单纯增加 rig 数量收益甚微若想从每个自然场景提取更多立体帧官方推荐改用下面 Random Walk Videos 的低帧率视频方案。3. 基于 RRT* 的动态相机视频Dynamic Camera Videos with RRT*3.1 示例命令自然场景视频动态、有趣的相机运动python -m infinigen.datagen.manage_jobs --output_folder outputs/video_dynamic_nature --num_scenes 30 --configs high_quality_terrain.gin rrt_cam_nature.gin --pipeline_configs local_256GB.gin blender_gt.gin monocular_video --pipeline_overrides manage_datagen_jobs.num_concurrent15 iterate_scene_tasks.cam_block_size24 iterate_scene_tasks.frame_range[1,200] --overrides fine_terrain.mesher_backendOcMesher --warmup_sec 2000 --cleanup big_files --overwrite室内视频动态、有趣的相机运动python -m infinigen.datagen.manage_jobs --output_folder outputs/video_dynamic_indoor --num_scenes 30 \ --configs singleroom.gin rrt_cam_indoors.gin \ --pipeline_configs local_256GB.gin indoor_background_configs.gin monocular_video \ --overrides compute_base_views.min_candidates_ratio2 compose_indoors.terrain_enabledFalse compose_indoors.restrict_single_supported_roomtypeTrue \ --pipeline_overrides get_cmd.driver_scriptinfinigen_examples.generate_indoors iterate_scene_tasks.frame_range[1,200] \ --warmup_sec 2000 --cleanup big_files --overwrite要点解读rrt_cam_indoors.ginconfigs_indoor/rrt_cam_indoors.gin与rrt_cam_nature.ginconfigs_nature/extras/rrt_cam_nature.gin分别用于室内与自然场景两者都将animate_trajectories.animation_mode设为rrt并挂载rrt/validate_cam_pose_rrt作为位姿校验函数iterate_scene_tasks.frame_range[1,200]指定动画的帧范围cam_block_size24控制并行渲染的帧块大小--warmup_sec 2000设置任务预热时间--cleanup big_files清理大文件--overwrite覆盖已有输出。3.2 三个可定制组件源码级原理相机动画策略实现在 src/infinigen/core/util/rrt.py由三个组件协作1RRT类 —— RRT路径规划* 在 rrt.py 中RRT在场景包围盒内用 RRT* 算法为起终点生成避障路径sample_free以 0.1 的偏置向目标采样steer按步长扩展新节点neighborhood/wireup实现邻近节点的最小代价连接与重布线rewire。关键构造参数包括step_range步长、stride_range两个目标点之间的节点跨度、min_node_dist_to_obstacle默认 0.2控制与障碍物的最小间距以及max_iter默认 2000。室内与自然配置差异明显参数rrt_cam_indoors.ginrrt_cam_nature.ginRRT.step_range(1, 2)(4, 8)RRT.stride_range(60, 80)(100, 200)RRT.validate_noderrt/validate_node_indoorsrrt/validate_node_naturerrt/AnimPolicyRRT.speed(uniform, 1, 2)(uniform, 6, 10)rrt/AnimPolicyRRT.rot(normal, 0, [20, 20, 20], 3)(normal, 0, [15, 15, 15], 3)其中validate_node_indoors与validate_node_naturerrt.py分别用是否在房间包围体内 / 是否在物体外的射线奇偶性测试判断节点合法性。自然场景步长更大、速度更快是为了在开阔地形上产生更长距离的运动。2AnimPolicyRRT—— 动画策略AnimPolicyRRTrrt.py持有RRT实例逐帧消耗路径节点reset()生成一条完整路径__call__依次把路径节点作为关键帧位置旋转rot与关键帧间隔时长time从用户指定的分布中采样time 距离 / speed插值方式为 BEZIER。若某个位姿校验失败策略会retry()回退一个节点重试旋转若整条路径无法通过校验PolicyError则触发完整重试用 RRT 重新生成路径。3validate_cam_pose_rrt—— 位姿校验validate_cam_pose_rrtrrt.py按两个条件判断相机位姿是否合法天空像素sky穿过该像素的射线未与任何物体相交近距离像素proximity射线与物体相交且距离小于min_obj_dist未显式设置时取焦距平面距离。任一类型的像素占比超过阈值即判定位姿无效。默认参数为max_sky_percent0.7、max_proxim_percent0.5、min_pixels_check100室内配置放宽为max_sky_percent1、max_proxim_percent0.8、min_obj_dist1.0自然配置为max_sky_percent0.7、max_proxim_percent0.9、min_obj_dist1.0。3.3 调节运动难度想让运动更容易/更难直接修改rrt_cam_indoors.gin/rrt_cam_nature.gin中AnimPolicyRRT.speed或AnimPolicyRRT.rot的分布即可。例如要限制 roll 维度的旋转可设置rrt/AnimPolicyRRT.rot (normal, 0, [0, 15, 15], 3)旋转参数元组的含义是(分布类型, 均值, 各轴标准差列表, 输出维度)即 roll 的标准差为 0不旋转pitch 与 yaw 各自在 ±15 度的正态噪声内变化。4. 随机游走视频Random Walk Videos4.1 示例命令自然场景视频缓慢、平滑的随机游走python -m infinigen.datagen.manage_jobs --output_folder outputs/video_smooth_nature --num_scenes 30 \ --pipeline_config monocular_video.gin local_256GB.gin cuda_terrain.gin blender_gt.gin --configs high_quality_terrain \ --pipeline_overrides iterate_scene_tasks.cam_block_size24自然场景视频快速、嘈杂的随机游走python -m infinigen.datagen.manage_jobs --output_folder outputs/video_smooth_nature --num_scenes 30 \ --pipeline_config monocular_video.gin local_256GB.gin cuda_terrain.gin blender_gt.gin --configs high_quality_terrain noisy_video \ --pipeline_overrides iterate_scene_tasks.cam_block_size24 --overrides configure_render_cycles.adaptive_threshold0.05室内场景视频缓慢移动的相机python -m infinigen.datagen.manage_jobs --output_folder outputs/video_slow_indoor --num_scenes 30 \ --pipeline_configs local_256GB.gin monocular_video.gin blender_gt.gin indoor_background_configs.gin --configs singleroom \ --pipeline_overrides get_cmd.driver_scriptinfinigen_examples.generate_indoors \ --overrides compose_indoors.terrain_enabledFalse compose_indoors.restrict_single_supported_roomtypeTrue AnimPolicyRandomWalkLookaround.speed0.5 AnimPolicyRandomWalkLookaround.step_range0.5 compose_indoors.animate_cameras_enabledTrue快速版在--configs后追加noisy_video见 configs_nature/noisy_video.gin并降低 Cycles 渲染的自适应阈值configure_render_cycles.adaptive_threshold0.05以保留噪点细节。4.2 底层动画策略随机游走由AnimPolicyRandomWalkLookaroundsrc/infinigen/core/placement/animation_policy.py实现。其可配置参数包括speed默认(uniform, 1, 2.5)行走速度step_range默认(clip_gaussian, 3, 5, 0.5, 10)每步移动距离yaw_sampler默认(uniform, -20, 20)偏航角抖动rot_vars默认(5, 0, 5)roll/pitch/yaw 的旋转噪声标准差step_speed_mult、motion_dir_zoff、force_single_keyframe步速倍率、运动方向偏移角、是否强制单关键帧。每次步进都会调用walk_same_altitudeanimation_policy.py先向上抬升采样点再向下射线检测地面通过fall_ratio1.5与step_up_height2限制坡度使相机贴地平滑移动。整条轨迹由animate_trajectoryanimation_policy.py逐段生成关键帧并用validate_keyframe_range做直线可见性校验步级失败会在max_step_tries默认 25内重试整条轨迹失败会在max_full_retries默认 40内重新生成。⚠️官方重要警告随机游走相机生成在室内房间之间几乎不可能找到可行路径因此室内场景下随机游走难以生成长距离或快速移动的视频。官方文档承诺后续将推出基于路径查找的相机轨迹生成器来解决该场景。5. 多视角相机布点Multiview Stereo / NeRF 等许多任务多视角立体、NeRF 等需要相机大致呈圆形排列并相对目标物体在角度、roll、pitch、yaw 上加入少量噪声。下图展示了室内与自然场景中的多视角布点效果5.1 快速测试场景无家具的室内房间 5 个多视角相机python -m infinigen.datagen.manage_jobs --output_folder outputs/mvs_test --num_scenes 1 --configs multiview_stereo.gin fast_solve.gin no_objects.gin --pipeline_configs local_256GB.gin monocular.gin blender_gt.gin cuda_terrain.gin indoor_background_configs.gin --overrides camera.spawn_camera_rigs.n_camera_rigs5 compose_nature.animate_cameras_enabledFalse compose_indoors.restrict_single_supported_roomtypeTrue --pipeline_overrides get_cmd.driver_scriptinfinigen_examples.generate_indoors iterate_scene_tasks.n_camera_rigs55.2 室内数据集30 个多视角相机python -m infinigen.datagen.manage_jobs --output_folder outputs/mvs_indoors --num_scenes 30 --pipeline_configs local_256GB.gin monocular.gin blender_gt.gin indoor_background_configs.gin --configs singleroom.gin multiview_stereo.gin --pipeline_overrides get_cmd.driver_scriptinfinigen_examples.generate_indoors iterate_scene_tasks.n_camera_rigs30 --overrides compose_indoors.restrict_single_supported_roomtypeTrue camera.spawn_camera_rigs.n_camera_rigs305.3 自然场景数据集30 个多视角相机python -m infinigen.datagen.manage_jobs --output_folder outputs/mvs_nature --num_scenes 30 --configs multiview_stereo.gin --pipeline_configs local_256GB.gin monocular.gin blender_gt.gin cuda_terrain.gin --overrides camera.spawn_camera_rigs.n_camera_rigs30 compose_nature.animate_cameras_enabledFalse --pipeline_overrides iterate_scene_tasks.n_camera_rigs305.4 配置背后的源码机制多视角模式由 configs_nature/multiview_stereo.gin 驱动它做了四件事configure_cameras.mvs_setting True开启多视角布点逻辑compose_nature.camera_selection_ranges_ratio {}与compose_nature.camera_selection_tags_ratio {}清空语义占比约束让环形布点不被必须拍到某类物体限制compose_nature.animate_cameras_enabled False关闭相机动画多视角任务是静止拍摄compose_nature.inview_distance 40限定目标在视距 40 以内保证内容重叠。环形噪声来自camera_pose_proposal的center_coordinate分支camera.py相机按随机角度分布在目标周围半径radius的圆上并在 roll、pitch、yaw 上各叠加±5 度的随机噪声noise_range np.deg2rad(5.0)这就是官方文档所说角度、roll、pitch、yaw 相对物体加入少量噪声的实现位置focal_length同样支持随机分布采样。6. 完全自定义相机排列Custom Camera Arrangement相机位姿可以方便地通过 Blender API 直接操纵实现任意想要的布点方式。例如可以替换 generate_nature.py 或 generate_indoors.py 中的pose_cameras步骤改为如下代码for i, rig in enumerate(camera_rigs): rig.location (i, 0, np.random.uniform(0, 10)) rig.rotation_euler np.deg2rad(np.array([90, 0, 180 * i / len(camera_rigs)]))这段代码让第i个 rig 沿 x 轴平移高度在 0~10 随机并绕 z 轴按180 * i / len(camera_rigs)均匀旋转从而形成一圈朝向中心、彼此均分的布点。如果想在视频过程中动画化相机 rig则对每个关键帧插入关键帧keyframefor i, rig in enumerate(camera_rigs): for t in range(bpy.context.scene.frame_start, bpy.context.scene.frame_end 1): rig.location (t, i, 0) rig.keyframe_insert(data_pathlocation, framet) rig.rotation_euler np.deg2rad(np.array((90, 0, np.random.uniform(-10, 10)))) rig.keyframe_insert(data_pathrotation_euler, framet)注意这里直接使用bpy.context.scene.frame_start/frame_end确定动画范围与仓库内部animate_trajectory生成关键帧的方式见 animation_policy.py 的keyframe辅助函数一致对location与rotation_euler两个 data_path 逐帧keyframe_insert。由于这些代码运行在 Infinigen 的 Blender 进程内入口为python -m infinigen.launch_blender驱动的场景生成脚本可以直接访问bpy、np等运行时符号。7. 附录相机相关配置与测试速查入口与调度所有数据集生成命令统一由python -m infinigen.datagen.manage_jobs驱动对应 src/infinigen/datagen/manage_jobs.py--pipeline_configs/--configs分别加载管线层与场景层 gin 配置--overrides/--pipeline_overrides在命令行覆盖对应层参数RRT 动画策略src/infinigen/core/util/rrt.pyRRT、AnimPolicyRRT、validate_cam_pose_rrt、validate_node_nature、validate_node_indoors随机游走与通用动画src/infinigen/core/placement/animation_policy.pyAnimPolicyRandomWalkLookaround、AnimPolicyRandomForwardWalk、AnimPolicyFollowObject、walk_same_altitude、animate_trajectory、validate_keyframe_range轨迹计算与动画模式src/infinigen/core/placement/camera_trajectories.py其中compute_trajectories通过animation_mode支持random_walk、random_walk_forward、follow_poi、rrt四种模式相机位姿提议/校验/布点src/infinigen/core/placement/camera.pyspawn_camera_rigs、camera_pose_proposal、keep_cam_pose_proposal、compute_base_views、configure_cameras相关 gin 配置rrt_cam_indoors.gin、rrt_cam_nature.gin、multiview_stereo.gin、monocular.gin、noisy_video.gin。如需进一步验证相机轨迹输出可结合 GroundTruthAnnotations.md 了解各标注通道深度、法线、分割等的导出方式并结合 ConfiguringInfinigen.md 中的 gin 参数机制理解所有 override 语法。赞分享计算机视觉数据增强媒体生成【免费下载链接】infinigenInfinite Photorealistic Worlds using Procedural Generation项目地址https://gitcode.com/gh_mirrors/in/infinigen点击查看免费下载相关推荐Infinigen相机轨迹规划终极指南智能视角控制的5个关键技巧Infinigen相机轨迹规划终极指南智能视角控制的5个关键技巧 Infinigen作为一款强大的程序化生成工具能够创建无限逼真的3D世界。而相机轨迹规划是计算机视觉数据增强媒体生成告别静态视角Open3D可视化交互与相机轨迹全攻略告别静态视角Open3D可视化交互与相机轨迹全攻略 在3D点云与网格模型的可视化中固定视角往往难以全面观察数据细节。Open3D提供的ViewControl计算机视觉图形学3D渲染科学计算Infinigen相机选择与动画从静态图像到动态视频的完整流程Infinigen相机选择与动画从静态图像到动态视频的完整流程 Infinigen是一个使用程序化生成创建无限逼真世界的强大工具其相机配置系统提供了从简单静计算机视觉数据增强媒体生成上一篇深度解析Metahuman-stream构建实时交互数字人的高性能技术架构下一篇从0到1开发GitHub CLIgh_mirrors/gh/gh项目解析与二次开发创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表