princeton-vl / infinigen

Infinite Photorealistic Worlds using Procedural Generation
https://infinigen.org
BSD 3-Clause "New" or "Revised" License
5.14k stars 430 forks source link

How to efficiently generate a large number of videos? #211

Open bbbbubble opened 2 months ago

bbbbubble commented 2 months ago

Describe the bug

Hi, @araistrick Thanks for this excellent work! I want to inquire about the speed of video generation with InfiniGen. Under default settings (24fps, 192 frames), which means generating an 8-second video, even with GPU enabled for cuda_terrian and rendering, my machine took 3 days. Because I plan to generate a large number of videos with InfiniGen, this speed is unacceptable. Therefore, may i ask:

  1. Why is generating a scene and rendering an image so slow? Can you provide an estimate of the typical time it takes to generate an infinigen video?
  2. Are there any ways to improve speed while maintaining acceptable video quality? For example, adjusting certain rendering parameters?
  3. In fact, to generate a large number of videos, I can use lots of V100 (32GB) or A100 (80GB) GPUs. Are there any recommended commands for running on GPUs with such large memory? Which has higher operational efficiency, single-machine single-card or single-machine multi-card?
  4. For example, from my limited testing, I seem to have discovered the following patterns, but I'm not sure if they're correct. (1)Setting num_scenes to a value other than 1 seems easily causes crashes? (2)When running on a single machine with a single GPU card,compared to local_64GB, setting it to local_256GB slows down the speed of individual tasks? (3)I have no idea how to set warmup_sec. (4)If LocalScheduleHandler.jobs_per_gpu are set according to VRAM/20GB, it is also easy to encounter GPU out of memorycrashes, is that due to shortrender failures, which then trigger backuprender?

Reproduce

This is command I use: python -m infinigen.datagen.manage_jobs --num_scenes 200 --pipeline_configs monocular_video cuda_terrain local_256GB --warmup_sec 6000 --configs video high_quality_terrain --output_folder outputs/my_videos

Platform

araistrick commented 2 months ago

Hello!

3 days is definitely not expected. Are you sure that rendering is using your GPU? Typically I observe ~1hr to generate the scene and 3-5min of GPU rendering per frame, so more like 10hrs latency for a high quality video. If a noticable amount of render noise is acceptable then you can reduce this to 40sec /frame or about 3hr total. We find these costs acceptable for ray-traced cgi given one can run many many videos at once in paralell, going any faster will probably require switching to unreal or another realtime renderer (which we are working on better support for).

With 3-day renders though I would recommend checking that the GPU is enabled and that nvidia-smi shows you are getting good GPU utilization. I will also release a branch ASAP that may increase your GPU utilization if it is currently low, we've done some optimizing.

There are certainly ways to improve speed. First of all, make sure to disable stereo if you dont need stereo video - rendering for two cameras doubles the render cost. Also turn off the ground truth or use blender ground truth if either of these are acceptable for your usecase. Besides these the easiest step is to decrease the number of raytracing samples; you can do this either by increasing render_image.adaptive_threshold = 0.005 to 0.01 or even 0.05 in base.gin depending on how much render noise is acceptable to you. 0.01 is generally fine for outdoor scenes but will look noisy underwater. 0.05 is much faster (as low as 40sec/frame) but noticably noisy in shadows. You can also look in the ConfiguringInfinigen docs to decrese image resolution or mesh resolution if this would be acceptable

The system works best when running one job per GPU, but each job takes ~20GB VRAM (i.e. fits a 3090/4090 or L40 well - this is what we use). Rendering jobs do not usually need the full 32GB or 80GB of a large deep learning GPU. In theory you can split one such GPU into two 40GB GPUs, which is what LocalScheduleHandler.jobs_per_gpu=2 attempts to do, but the current implementation of that feature just assigns two jobs to each gpu, it doesnt limit each to take half the VRAM etc, so the jobs can end up overflowing and both dying.

RE your parameter questions, apologies that there is not yet better docs for these. Here are answers to the ones you mentioned:

Sorry for the delay in replying, and for the issues that have come up here. Im very keen to help get it running smoothly for you. Im going to release some optimizations ive been working on as a beta branch shortly and I will followup here when that happens. In may-june I also plan to do a great deal more optimization and simplification of the main rendering system.

bbbbubble commented 2 months ago

@araistrick Thank you very much for your detailed explanation. I've just started generating more videos, and if I discover anything further, I'll also share it here. Additionally, I have two more questions: ^v^

  1. Is there currently a way to obtain more metadata information related to the videos? For example, can we retrieve information such as the scene category, the objects (creatures, plants, ...) within the scene (even down to each frame), the parameter values for each object's degrees of freedom, etc., using the seed? I've noticed that some information is recorded in the corse/fine/logs folder, but it seems to be incorrect or incomplete?

  2. I'm interested in creating a video where the camera orbits around a particular center, capturing a 360-degree view. I've attempted to modify some parameters, but without success. Could you explain the significance of these parameters, or perhaps provide a simple function for achieving this? Thank you!


@gin.configurable
class AnimPolicyRandomWalkLookaround:

    def __init__(
        self, 
        speed=('uniform', 1, 2.5), 
        yaw_range=(-20, 20), 
        step_range=(10, 15),
        rot_vars=(5, 0, 5),  # 默认(5, 0, 5)
        motion_dir_zoff=('clip_gaussian', 0, 90, 0, 180)
    ):

        self.speed = random_general(speed)

        self.yaw_range = yaw_range
        self.step_range = step_range
        self.rot_vars = rot_vars

        self.motion_dir_euler = None
        self.motion_dir_zoff = motion_dir_zoff

    def __call__(self, obj, frame_curr, bvh, retry_pct):

        if self.motion_dir_euler is None:
            self.motion_dir_euler = copy(obj.rotation_euler)

            self.motion_dir_euler[2] += np.deg2rad(random_general(self.motion_dir_zoff))

        orig_motion_dir_euler = copy(self.motion_dir_euler)
        def sampler():
            self.motion_dir_euler = copy(orig_motion_dir_euler)
            self.motion_dir_euler[2] += np.deg2rad(U(*self.yaw_range))
            step = U(*self.step_range)
            off = Euler(self.motion_dir_euler, 'XYZ').to_matrix() @ Vector((0, 0, -step))
            off.z = 0

            return off

        pos = walk_same_altitude(obj.location, sampler, bvh)

        time = np.linalg.norm(pos - obj.location) / self.speed
        rot = np.array(obj.rotation_euler) + np.deg2rad(N(0, self.rot_vars, 3))   # 默认:0
        # rot = np.array(obj.rotation_euler) + np.deg2rad(np.array([0,0,-90]))

        return Vector(pos), Vector(rot), time, 'BEZIER'
araistrick commented 2 months ago

Per-frame object names and locations are available in our Objects.json output, see the GroundTruthAnnotations.md documentation for more details. Scene category (desert forest etc) isn't saved anywhere but can be parsed from the coarse logs.

For creating a circular arrangement of cameras I would recommend ignoring the animation policy code, as this is more intended to make a continuous trajectory of camera poses. You can comment out the existing camera code in generate_nature.py then just manually arrange the cameras by setting 'cam_rigs[i].location = (x,y,z)' and similarly for 'cam_rigs[I].rotation_euler'. I may be able to publish code for this in the next week or so but I am not sure the exact timeline.

bbbbubble commented 2 months ago

Per-frame object names and locations are available in our Objects.json output, see the GroundTruthAnnotations.md documentation for more details. Scene category (desert forest etc) isn't saved anywhere but can be parsed from the coarse logs.

For creating a circular arrangement of cameras I would recommend ignoring the animation policy code, as this is more intended to make a continuous trajectory of camera poses. You can comment out the existing camera code in generate_nature.py then just manually arrange the cameras by setting 'cam_rigs[i].location = (x,y,z)' and similarly for 'cam_rigs[I].rotation_euler'. I may be able to publish code for this in the next week or so but I am not sure the exact timeline.

Thank you! I will try that. I ran 66 experiments yesterday, all under the setting of single machine single GPU. However, today I noticed that 55 of them crashed, while the remaining ones are still running. Since I want to generate videos with different scenes and weather conditions, these are the tasks i've submited:

scene_types = ["arctic", "canyon", "cave", "cliff", "coast", "coral_reef", "desert", "forest", "kelp_forest", "mountain", "plain"]
weathers = ["rain_particles", "snow_particles", "leaf_particles", "dust_particles", "clouds", "wind"]
for scene_type in scene_types:
    for weather in weathers:
        os.system(f"(This part is where I invoke the remote image and gpu machine)
                    'cd /root/infinigen \
                    && python -m infinigen.datagen.manage_jobs --num_scenes 1 \
                        --pipeline_configs monocular_video cuda_terrain local_64GB \
                        --configs {scene_type}.gin video high_quality_terrain \
                        --pipeline_overrides iterate_scene_tasks.frame_range=[1,480] \
                        -p compose_scene.{weather}_chance=1.0 \
                        --output_folder outputs/my_videos'")

I found it difficult to achieve because various errors keep occurring. I observed the following errors in the experiments that crashed (If you need the specific command corresponding to any error, I can also provide it.).

No.1 occured 4 times coarse.err :

/root/miniconda3/lib/python3.10/site-packages/numpy/core/getlimits.py:549: UserWarning: The value of the smallest subnormal for <class 'numpy.float64'> type is zero.
  setattr(self, word, getattr(machar, word).flat[0])
/root/miniconda3/lib/python3.10/site-packages/numpy/core/getlimits.py:89: UserWarning: The value of the smallest subnormal for <class 'numpy.float64'> type is zero.
  return self._float_to_str(self.smallest_subnormal)
/root/miniconda3/lib/python3.10/site-packages/numpy/core/getlimits.py:549: UserWarning: The value of the smallest subnormal for <class 'numpy.float32'> type is zero.
  setattr(self, word, getattr(machar, word).flat[0])
/root/miniconda3/lib/python3.10/site-packages/numpy/core/getlimits.py:89: UserWarning: The value of the smallest subnormal for <class 'numpy.float32'> type is zero.
  return self._float_to_str(self.smallest_subnormal)
[23:23:32.543] [root] [WARNING] | SMB_AUTH envvar is not set, smb_client upload will not work. Ignore this message if not using upload
[23:23:32.575] [infinigen.core.init] [INFO] | Converted seed='2f477313' to scene_seed=793211667, parsed as hexadecimal
[23:23:32.610] [infinigen.core.execute_tasks] [INFO] | infinigen version 1.2.3
[23:23:32.610] [infinigen.core.execute_tasks] [INFO] | CUDA_VISIBLE_DEVICES=
[23:23:32.611] [infinigen.times] [INFO] | [MAIN TOTAL]
[23:23:32.611] [infinigen.core.execute_tasks] [INFO] | Processing frames 1 through 480 inclusive
[23:23:32.631] [infinigen.times] [INFO] | [terrain]
[23:23:32.631] [infinigen.times] [INFO] | [Create terrain]
[23:23:32.631] [infinigen.terrain.core] [INFO] | Terrain using only on the fly on_the_fly_asset_folder=PosixPath('/root/infinigen/outputs/my_videos/2f477313/coarse/assets')
[23:23:32.632] [infinigen.times] [INFO] | [Create terrain] failed with <class 'AssertionError'>
[23:23:32.632] [infinigen.times] [INFO] | [terrain] failed with <class 'AssertionError'>
[23:23:32.632] [infinigen.times] [INFO] | [MAIN TOTAL] failed with <class 'AssertionError'>
Traceback (most recent call last):
  File "/root/miniconda3/lib/python3.10/runpy.py", line 196, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File "/root/miniconda3/lib/python3.10/runpy.py", line 86, in _run_code
    exec(code, run_globals)
  File "/root/infinigen/infinigen_examples/generate_nature.py", line 438, in <module>
    main(args)
  File "/root/infinigen/infinigen_examples/generate_nature.py", line 409, in main
    execute_tasks.main(
  File "/root/infinigen/infinigen/core/execute_tasks.py", line 418, in main
    execute_tasks(
  File "/root/miniconda3/lib/python3.10/site-packages/gin/config.py", line 1605, in gin_wrapper
    utils.augment_exception_message_and_reraise(e, err_str)
  File "/root/miniconda3/lib/python3.10/site-packages/gin/utils.py", line 41, in augment_exception_message_and_reraise
    raise proxy.with_traceback(exception.__traceback__) from None
  File "/root/miniconda3/lib/python3.10/site-packages/gin/config.py", line 1582, in gin_wrapper
    return fn(*new_args, **new_kwargs)
  File "/root/infinigen/infinigen/core/execute_tasks.py", line 328, in execute_tasks
    compose_scene_func(output_folder, scene_seed)
  File "/root/miniconda3/lib/python3.10/site-packages/gin/config.py", line 1605, in gin_wrapper
    utils.augment_exception_message_and_reraise(e, err_str)
  File "/root/miniconda3/lib/python3.10/site-packages/gin/utils.py", line 41, in augment_exception_message_and_reraise
    raise proxy.with_traceback(exception.__traceback__) from None
  File "/root/miniconda3/lib/python3.10/site-packages/gin/config.py", line 1582, in gin_wrapper
    return fn(*new_args, **new_kwargs)
  File "/root/infinigen/infinigen_examples/generate_nature.py", line 79, in compose_scene
    terrain, terrain_mesh = p.run_stage('terrain', add_coarse_terrain, use_chance=False, default=(None, None))
  File "/root/infinigen/infinigen/core/util/pipeline.py", line 76, in run_stage
    ret = fn(*args, **kwargs)
  File "/root/infinigen/infinigen_examples/generate_nature.py", line 75, in add_coarse_terrain
    terrain = Terrain(scene_seed, surface.registry, task='coarse', on_the_fly_asset_folder=output_folder/"assets")
  File "/root/miniconda3/lib/python3.10/site-packages/gin/config.py", line 1605, in gin_wrapper
    utils.augment_exception_message_and_reraise(e, err_str)
  File "/root/miniconda3/lib/python3.10/site-packages/gin/utils.py", line 41, in augment_exception_message_and_reraise
    raise proxy.with_traceback(exception.__traceback__) from None
  File "/root/miniconda3/lib/python3.10/site-packages/gin/config.py", line 1582, in gin_wrapper
    return fn(*new_args, **new_kwargs)
  File "/root/infinigen/infinigen/terrain/core.py", line 120, in __init__
    self.elements, scene_infos = scene(seed, Path(on_the_fly_asset_folder), asset_path, device)
  File "/root/miniconda3/lib/python3.10/site-packages/gin/config.py", line 1605, in gin_wrapper
    utils.augment_exception_message_and_reraise(e, err_str)
  File "/root/miniconda3/lib/python3.10/site-packages/gin/utils.py", line 41, in augment_exception_message_and_reraise
    raise proxy.with_traceback(exception.__traceback__) from None
  File "/root/miniconda3/lib/python3.10/site-packages/gin/config.py", line 1582, in gin_wrapper
    return fn(*new_args, **new_kwargs)
  File "/root/infinigen/infinigen/terrain/scene.py", line 59, in scene
    assert(last_ground_element is not None)
AssertionError: 
  In call to configurable 'scene' (<function scene at 0x7fe3acb5d240>)
  In call to configurable 'Terrain' (<class 'infinigen.terrain.core.Terrain'>)
  In call to configurable 'compose_scene' (<function compose_scene at 0x7fe417ab1090>)
  In call to configurable 'execute_tasks' (<function execute_tasks at 0x7fe3a363d1b0>)

No. 2 occured 3 times coarse.err

/root/miniconda3/lib/python3.10/site-packages/numpy/core/getlimits.py:549: UserWarning: The value of the smallest subnormal for <class 'numpy.float64'> type is zero.
  setattr(self, word, getattr(machar, word).flat[0])
/root/miniconda3/lib/python3.10/site-packages/numpy/core/getlimits.py:89: UserWarning: The value of the smallest subnormal for <class 'numpy.float64'> type is zero.
  return self._float_to_str(self.smallest_subnormal)
/root/miniconda3/lib/python3.10/site-packages/numpy/core/getlimits.py:549: UserWarning: The value of the smallest subnormal for <class 'numpy.float32'> type is zero.
  setattr(self, word, getattr(machar, word).flat[0])
/root/miniconda3/lib/python3.10/site-packages/numpy/core/getlimits.py:89: UserWarning: The value of the smallest subnormal for <class 'numpy.float32'> type is zero.
  return self._float_to_str(self.smallest_subnormal)
[23:08:37.782] [root] [WARNING] | SMB_AUTH envvar is not set, smb_client upload will not work. Ignore this message if not using upload
[23:08:37.814] [infinigen.core.init] [INFO] | Converted seed='27ae7d06' to scene_seed=665746694, parsed as hexadecimal
[23:08:37.853] [infinigen.core.execute_tasks] [INFO] | infinigen version 1.2.3
[23:08:37.853] [infinigen.core.execute_tasks] [INFO] | CUDA_VISIBLE_DEVICES=
[23:08:37.853] [infinigen.times] [INFO] | [MAIN TOTAL]
[23:08:37.853] [infinigen.core.execute_tasks] [INFO] | Processing frames 1 through 480 inclusive
[23:08:37.867] [infinigen.times] [INFO] | [terrain]
[23:08:37.867] [infinigen.times] [INFO] | [Create terrain]
[23:08:37.867] [infinigen.terrain.core] [INFO] | Terrain using only on the fly on_the_fly_asset_folder=PosixPath('/root/infinigen/outputs/my_videos/27ae7d06/coarse/assets')
/root/miniconda3/lib/python3.10/site-packages/landlab/graph/graph.py:412: FutureWarning: The return type of `Dataset.dims` will be changed to return a set of dimension names in future, in order to be more consistent with `DataArray.dims`. To access a mapping from dimension names to lengths, please use `Dataset.sizes`.. The issue is probably coming from utils.py:1112
  return self.ds.dims["node"]
/root/miniconda3/lib/python3.10/site-packages/landlab/graph/graph.py:535: FutureWarning: The return type of `Dataset.dims` will be changed to return a set of dimension names in future, in order to be more consistent with `DataArray.dims`. To access a mapping from dimension names to lengths, please use `Dataset.sizes`.. The issue is probably coming from utils.py:1112
  return self.ds.dims["link"]
/root/miniconda3/lib/python3.10/site-packages/landlab/graph/graph.py:984: FutureWarning: The return type of `Dataset.dims` will be changed to return a set of dimension names in future, in order to be more consistent with `DataArray.dims`. To access a mapping from dimension names to lengths, please use `Dataset.sizes`.. The issue is probably coming from utils.py:1112
  return self.ds.dims["patch"]
[23:27:33.367] [infinigen.terrain.core] [INFO] | Terrain elements: ['ground', 'landtiles', 'voronoi_rocks', 'atmosphere']
[23:27:33.367] [infinigen.times] [INFO] | [Create terrain] finished in 0:18:55.499677
[23:27:33.367] [infinigen.times] [INFO] | [meshing OpaqueTerrain]
[23:27:52.687] [infinigen.times] [INFO] | [meshing OpaqueTerrain] finished in 0:00:19.319537
[23:27:52.688] [infinigen.times] [INFO] | [meshing atmosphere]
[23:27:54.326] [infinigen.times] [INFO] | [meshing atmosphere] finished in 0:00:01.638117
[23:27:54.900] [infinigen.terrain.core] [INFO] | attribute='ground_collection' will use material infinigen.assets.materials.sand
[23:27:54.900] [infinigen.terrain.core] [INFO] | attribute='mountain_collection' will use material infinigen.assets.materials.sandstone
[23:27:54.900] [infinigen.terrain.core] [INFO] | attribute='eroded' will use material infinigen.assets.materials.dirt
[23:27:54.900] [infinigen.terrain.core] [INFO] | attribute='atmosphere' will use material infinigen.assets.materials.atmosphere_light_haze
[23:27:55.108] [infinigen.times] [INFO] | [meshing OpaqueTerrain]
[23:33:08.134] [infinigen.times] [INFO] | [meshing OpaqueTerrain] finished in 0:05:13.025885
[23:33:08.439] [infinigen.times] [INFO] | [terrain] finished in 0:24:30.571874
[23:33:08.456] [infinigen.times] [INFO] | [season]
[23:33:08.456] [infinigen.times] [INFO] | [season] finished in 0:00:00.000483
[23:33:08.457] [infinigen.times] [INFO] | [forest_params]
[23:33:08.457] [infinigen.times] [INFO] | [forest_params] finished in 0:00:00.000242
[23:33:08.461] [infinigen.times] [INFO] | [cactus]
[23:33:08.570] [infinigen.core.placement.placement] [INFO] | Placing 215 placeholders for CactusFactory(3620204085)

  0%|          | 0/215 [00:00<?, ?it/s]
 24%|██▍       | 52/215 [00:00<00:00, 507.73it/s]
 48%|████▊     | 103/215 [00:00<00:00, 303.99it/s]
 64%|██████▍   | 138/215 [00:00<00:00, 228.18it/s]
 77%|███████▋  | 165/215 [00:00<00:00, 182.72it/s]
 87%|████████▋ | 186/215 [00:00<00:00, 157.70it/s]
 95%|█████████▍| 204/215 [00:01<00:00, 139.83it/s]
100%|██████████| 215/215 [00:01<00:00, 172.09it/s]
[23:33:10.141] [infinigen.core.placement.placement] [INFO] | Placing 12 placeholders for CactusFactory(800315807)

  0%|          | 0/12 [00:00<?, ?it/s]
 75%|███████▌  | 9/12 [00:00<00:00, 87.94it/s]
100%|██████████| 12/12 [00:00<00:00, 87.23it/s]
[23:33:10.292] [infinigen.times] [INFO] | [cactus] finished in 0:00:01.831243
[23:33:10.293] [infinigen.times] [INFO] | [camera_preprocess]
[23:33:10.316] [infinigen.times] [INFO] | [Building placeholders KDTree]
[23:33:10.316] [infinigen.core.placement.camera] [INFO] | Building placeholder kd for 227 objects
[23:33:10.319] [infinigen.times] [INFO] | [Building placeholders KDTree] finished in 0:00:00.002821
[23:33:10.319] [infinigen.times] [INFO] | [Building terrain BVHTree]
[23:33:10.345] [infinigen.times] [INFO] | [Building terrain BVHTree] failed with <class 'KeyError'>
[23:33:10.345] [infinigen.times] [INFO] | [camera_preprocess] failed with <class 'KeyError'>
[23:33:10.345] [infinigen.times] [INFO] | [MAIN TOTAL] failed with <class 'KeyError'>
Traceback (most recent call last):
  File "/root/miniconda3/lib/python3.10/runpy.py", line 196, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File "/root/miniconda3/lib/python3.10/runpy.py", line 86, in _run_code
    exec(code, run_globals)
  File "/root/infinigen/infinigen_examples/generate_nature.py", line 438, in <module>
    main(args)
  File "/root/infinigen/infinigen_examples/generate_nature.py", line 409, in main
    execute_tasks.main(
  File "/root/infinigen/infinigen/core/execute_tasks.py", line 418, in main
    execute_tasks(
  File "/root/miniconda3/lib/python3.10/site-packages/gin/config.py", line 1605, in gin_wrapper
    utils.augment_exception_message_and_reraise(e, err_str)
  File "/root/miniconda3/lib/python3.10/site-packages/gin/utils.py", line 41, in augment_exception_message_and_reraise
    raise proxy.with_traceback(exception.__traceback__) from None
  File "/root/miniconda3/lib/python3.10/site-packages/gin/config.py", line 1582, in gin_wrapper
    return fn(*new_args, **new_kwargs)
  File "/root/infinigen/infinigen/core/execute_tasks.py", line 328, in execute_tasks
    compose_scene_func(output_folder, scene_seed)
  File "/root/miniconda3/lib/python3.10/site-packages/gin/config.py", line 1605, in gin_wrapper
    utils.augment_exception_message_and_reraise(e, err_str)
  File "/root/miniconda3/lib/python3.10/site-packages/gin/utils.py", line 41, in augment_exception_message_and_reraise
    raise proxy.with_traceback(exception.__traceback__) from None
  File "/root/miniconda3/lib/python3.10/site-packages/gin/config.py", line 1582, in gin_wrapper
    return fn(*new_args, **new_kwargs)
  File "/root/infinigen/infinigen_examples/generate_nature.py", line 173, in compose_scene
    camera_rigs, scene_preprocessed = p.run_stage('camera_preprocess', camera_preprocess, use_chance=False)
  File "/root/infinigen/infinigen/core/util/pipeline.py", line 76, in run_stage
    ret = fn(*args, **kwargs)
  File "/root/infinigen/infinigen_examples/generate_nature.py", line 171, in camera_preprocess
    scene_preprocessed = cam_util.camera_selection_preprocessing(terrain, terrain_mesh)   
  File "/root/miniconda3/lib/python3.10/site-packages/gin/config.py", line 1605, in gin_wrapper
    utils.augment_exception_message_and_reraise(e, err_str)
  File "/root/miniconda3/lib/python3.10/site-packages/gin/utils.py", line 41, in augment_exception_message_and_reraise
    raise proxy.with_traceback(exception.__traceback__) from None
  File "/root/miniconda3/lib/python3.10/site-packages/gin/config.py", line 1582, in gin_wrapper
    return fn(*new_args, **new_kwargs)
  File "/root/infinigen/infinigen/core/placement/camera.py", line 442, in camera_selection_preprocessing
    terrain_bvh, terrain_tags_answers, vertexwise_min_dist = terrain.build_terrain_bvh_and_attrs(terrain_tags_ratio.keys())
  File "/root/miniconda3/lib/python3.10/site-packages/gin/config.py", line 1605, in gin_wrapper
    utils.augment_exception_message_and_reraise(e, err_str)
  File "/root/miniconda3/lib/python3.10/site-packages/gin/utils.py", line 41, in augment_exception_message_and_reraise
    raise proxy.with_traceback(exception.__traceback__) from None
  File "/root/miniconda3/lib/python3.10/site-packages/gin/config.py", line 1582, in gin_wrapper
    return fn(*new_args, **new_kwargs)
  File "/root/infinigen/infinigen/terrain/core.py", line 364, in build_terrain_bvh_and_attrs
    far_ocean = self.under_water and self.surfaces[Materials.LiquidCollection].info["is_ocean"]
KeyError: 'liquid_collection'
  In call to configurable 'build_terrain_bvh_and_attrs' (<function Terrain.build_terrain_bvh_and_attrs at 0x7f6b2efbfbe0>)
  In call to configurable 'camera_selection_preprocessing' (<function camera_selection_preprocessing at 0x7f6b382ebd90>)
  In call to configurable 'compose_scene' (<function compose_scene at 0x7f6ba3061090>)
  In call to configurable 'execute_tasks' (<function execute_tasks at 0x7f6b2ec311b0>)

No. 3 occured 9 times coarse.err

/root/miniconda3/lib/python3.10/site-packages/numpy/core/getlimits.py:549: UserWarning: The value of the smallest subnormal for <class 'numpy.float64'> type is zero.
  setattr(self, word, getattr(machar, word).flat[0])
/root/miniconda3/lib/python3.10/site-packages/numpy/core/getlimits.py:89: UserWarning: The value of the smallest subnormal for <class 'numpy.float64'> type is zero.
  return self._float_to_str(self.smallest_subnormal)
/root/miniconda3/lib/python3.10/site-packages/numpy/core/getlimits.py:549: UserWarning: The value of the smallest subnormal for <class 'numpy.float32'> type is zero.
  setattr(self, word, getattr(machar, word).flat[0])
/root/miniconda3/lib/python3.10/site-packages/numpy/core/getlimits.py:89: UserWarning: The value of the smallest subnormal for <class 'numpy.float32'> type is zero.
  return self._float_to_str(self.smallest_subnormal)
[23:08:09.174] [root] [WARNING] | SMB_AUTH envvar is not set, smb_client upload will not work. Ignore this message if not using upload
[23:08:09.217] [infinigen.core.init] [INFO] | Converted seed='29beb3eb' to scene_seed=700363755, parsed as hexadecimal
[23:08:09.265] [infinigen.core.execute_tasks] [INFO] | infinigen version 1.2.3
[23:08:09.265] [infinigen.core.execute_tasks] [INFO] | CUDA_VISIBLE_DEVICES=
[23:08:09.266] [infinigen.times] [INFO] | [MAIN TOTAL]
[23:08:09.266] [infinigen.core.execute_tasks] [INFO] | Processing frames 1 through 480 inclusive
[23:08:09.286] [infinigen.times] [INFO] | [terrain]
[23:08:09.286] [infinigen.times] [INFO] | [Create terrain]
[23:08:09.286] [infinigen.terrain.core] [INFO] | Terrain using only on the fly on_the_fly_asset_folder=PosixPath('/root/infinigen/outputs/my_videos/29beb3eb/coarse/assets')
[23:28:22.197] [infinigen.terrain.core] [INFO] | Terrain elements: ['ground', 'voronoi_rocks', 'atmosphere']
[23:28:22.197] [infinigen.times] [INFO] | [Create terrain] finished in 0:20:12.911399
[23:28:22.198] [infinigen.times] [INFO] | [meshing OpaqueTerrain]
[23:28:41.640] [infinigen.times] [INFO] | [meshing OpaqueTerrain] finished in 0:00:19.441453
[23:28:41.640] [infinigen.times] [INFO] | [meshing atmosphere]
[23:28:44.116] [infinigen.times] [INFO] | [meshing atmosphere] finished in 0:00:02.475127
[23:28:44.948] [infinigen.terrain.core] [INFO] | attribute='ground_collection' will use material infinigen.assets.materials.mud
[23:28:44.948] [infinigen.terrain.core] [INFO] | attribute='mountain_collection' will use material infinigen.assets.materials.mountain
[23:28:44.949] [infinigen.terrain.core] [INFO] | attribute='atmosphere' will use material infinigen.assets.materials.atmosphere_light_haze
[23:28:45.790] [infinigen.times] [INFO] | [meshing OpaqueTerrain]
[23:30:26.174] [infinigen.times] [INFO] | [meshing OpaqueTerrain] finished in 0:01:40.384051
[23:30:26.373] [infinigen.times] [INFO] | [terrain] finished in 0:22:17.087186
[23:30:26.386] [infinigen.times] [INFO] | [fancy_clouds]
[23:30:26.438] [infinigen.times] [INFO] | [fancy_clouds] finished in 0:00:00.052613
[23:30:26.439] [infinigen.times] [INFO] | [season]
[23:30:26.440] [infinigen.times] [INFO] | [season] finished in 0:00:00.000396
[23:30:26.440] [infinigen.times] [INFO] | [forest_params]
[23:30:26.440] [infinigen.times] [INFO] | [forest_params] finished in 0:00:00.000240
[23:30:26.441] [infinigen.times] [INFO] | [trees]
[23:30:26.444] [infinigen.core.placement.factory] [INFO] | Generating collection of 5 assets from LeafFactoryBroadleaf(2182536)

  0%|          | 0/5 [00:00<?, ?it/s]
 20%|██        | 1/5 [00:04<00:17,  4.36s/it]
 40%|████      | 2/5 [00:08<00:13,  4.40s/it]
 60%|██████    | 3/5 [00:13<00:08,  4.45s/it]
 80%|████████  | 4/5 [00:17<00:04,  4.44s/it]
100%|██████████| 5/5 [00:22<00:00,  4.43s/it]
100%|██████████| 5/5 [00:22<00:00,  4.42s/it]
[23:31:22.762] [infinigen.core.placement.factory] [INFO] | Generating collection of 5 assets from FruitFactoryCoconutgreen(2182536)

  0%|          | 0/5 [00:00<?, ?it/s]
 20%|██        | 1/5 [00:00<00:03,  1.16it/s]
 40%|████      | 2/5 [00:01<00:02,  1.09it/s]
 60%|██████    | 3/5 [00:02<00:01,  1.09it/s]
 80%|████████  | 4/5 [00:03<00:00,  1.10it/s]
100%|██████████| 5/5 [00:04<00:00,  1.11it/s]
100%|██████████| 5/5 [00:04<00:00,  1.10it/s]
[23:31:27.816] [infinigen.core.placement.placement] [INFO] | Placing 5 placeholders for TreeFactory(2182536)

  0%|          | 0/5 [00:00<?, ?it/s]
 40%|████      | 2/5 [00:00<00:00, 18.04it/s]
 80%|████████  | 4/5 [00:00<00:00, 17.77it/s]
100%|██████████| 5/5 [00:00<00:00, 17.75it/s]
[23:31:28.100] [infinigen.core.placement.factory] [INFO] | Generating collection of 5 assets from LeafFactoryGinko(3339272)

  0%|          | 0/5 [00:00<?, ?it/s]
 20%|██        | 1/5 [00:01<00:05,  1.26s/it]
 40%|████      | 2/5 [00:02<00:03,  1.22s/it]
 60%|██████    | 3/5 [00:03<00:02,  1.20s/it]
 80%|████████  | 4/5 [00:04<00:01,  1.19s/it]
100%|██████████| 5/5 [00:06<00:00,  1.21s/it]
100%|██████████| 5/5 [00:06<00:00,  1.21s/it]
[23:31:41.092] [root] [WARNING] | apply_modifers on obj.name='Tree.009' m.name='add_tree_children' raised Error: Evaluated geometry from modifier does not contain a mesh
, ignoring and returning empty mesh for pre-3.5 compatibility reasons
[23:31:41.164] [infinigen.times] [INFO] | [trees] failed with <class 'AssertionError'>
[23:31:41.165] [infinigen.times] [INFO] | [MAIN TOTAL] failed with <class 'AssertionError'>
Traceback (most recent call last):
  File "/root/miniconda3/lib/python3.10/runpy.py", line 196, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File "/root/miniconda3/lib/python3.10/runpy.py", line 86, in _run_code
    exec(code, run_globals)
  File "/root/infinigen/infinigen_examples/generate_nature.py", line 438, in <module>
    main(args)
  File "/root/infinigen/infinigen_examples/generate_nature.py", line 409, in main
    execute_tasks.main(
  File "/root/infinigen/infinigen/core/execute_tasks.py", line 418, in main
    execute_tasks(
  File "/root/miniconda3/lib/python3.10/site-packages/gin/config.py", line 1605, in gin_wrapper
    utils.augment_exception_message_and_reraise(e, err_str)
  File "/root/miniconda3/lib/python3.10/site-packages/gin/utils.py", line 41, in augment_exception_message_and_reraise
    raise proxy.with_traceback(exception.__traceback__) from None
  File "/root/miniconda3/lib/python3.10/site-packages/gin/config.py", line 1582, in gin_wrapper
    return fn(*new_args, **new_kwargs)
  File "/root/infinigen/infinigen/core/execute_tasks.py", line 328, in execute_tasks
    compose_scene_func(output_folder, scene_seed)
  File "/root/miniconda3/lib/python3.10/site-packages/gin/config.py", line 1605, in gin_wrapper
    utils.augment_exception_message_and_reraise(e, err_str)
  File "/root/miniconda3/lib/python3.10/site-packages/gin/utils.py", line 41, in augment_exception_message_and_reraise
    raise proxy.with_traceback(exception.__traceback__) from None
  File "/root/miniconda3/lib/python3.10/site-packages/gin/config.py", line 1582, in gin_wrapper
    return fn(*new_args, **new_kwargs)
  File "/root/infinigen/infinigen_examples/generate_nature.py", line 113, in compose_scene
    p.run_stage('trees', add_trees, terrain_mesh)
  File "/root/infinigen/infinigen/core/util/pipeline.py", line 76, in run_stage
    ret = fn(*args, **kwargs)
  File "/root/infinigen/infinigen_examples/generate_nature.py", line 109, in add_trees
    fac = trees.TreeFactory(np.random.randint(1e7), coarse=True)
  File "/root/miniconda3/lib/python3.10/site-packages/gin/config.py", line 1605, in gin_wrapper
    utils.augment_exception_message_and_reraise(e, err_str)
  File "/root/miniconda3/lib/python3.10/site-packages/gin/utils.py", line 41, in augment_exception_message_and_reraise
    raise proxy.with_traceback(exception.__traceback__) from None
  File "/root/miniconda3/lib/python3.10/site-packages/gin/config.py", line 1582, in gin_wrapper
    return fn(*new_args, **new_kwargs)
  File "/root/infinigen/infinigen/assets/trees/generate.py", line 383, in __init__
    twig_col = make_twig_collection(seed, twig_params, leaf_params, trunk_surface, self.n_leaf, self.n_twig, leaf_type, season=season) 
  File "/root/infinigen/infinigen/assets/trees/generate.py", line 307, in make_twig_collection
    col = make_asset_collection(twig_factory, n_twig, verbose=False, distance=twig_valid_dist)
  File "/root/infinigen/infinigen/core/placement/factory.py", line 154, in make_asset_collection
    obj = spawn_fns[fn_idx](i=i, **kwargs)
  File "/root/infinigen/infinigen/core/placement/factory.py", line 114, in spawn_asset
    obj = self.create_asset(i=i, placeholder=placeholder, **params)
  File "/root/infinigen/infinigen/assets/trees/generate.py", line 170, in create_asset
    assert len(skin_obj.children) == 0
AssertionError: 
  In call to configurable 'TreeFactory' (<class 'infinigen.assets.trees.generate.TreeFactory'>)
  In call to configurable 'compose_scene' (<function compose_scene at 0x7fe6d3829090>)
  In call to configurable 'execute_tasks' (<function execute_tasks at 0x7fe65f58d1b0>)

No.4 occured 5 times

Searching for camera viewpoints:   0%|          | 0/20 [09:47<?, ?it/s]
[23:48:03.368] [infinigen.times] [INFO] | [pose_cameras] failed with <class 'ValueError'>
[23:48:03.369] [infinigen.times] [INFO] | [MAIN TOTAL] failed with <class 'ValueError'>
Traceback (most recent call last):
  File "/root/miniconda3/lib/python3.10/runpy.py", line 196, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File "/root/miniconda3/lib/python3.10/runpy.py", line 86, in _run_code
    exec(code, run_globals)
  File "/root/infinigen/infinigen_examples/generate_nature.py", line 438, in <module>
    main(args)
  File "/root/infinigen/infinigen_examples/generate_nature.py", line 409, in main
    execute_tasks.main(
  File "/root/infinigen/infinigen/core/execute_tasks.py", line 418, in main
    execute_tasks(
  File "/root/miniconda3/lib/python3.10/site-packages/gin/config.py", line 1605, in gin_wrapper
    utils.augment_exception_message_and_reraise(e, err_str)
  File "/root/miniconda3/lib/python3.10/site-packages/gin/utils.py", line 41, in augment_exception_message_and_reraise
    raise proxy.with_traceback(exception.__traceback__) from None
  File "/root/miniconda3/lib/python3.10/site-packages/gin/config.py", line 1582, in gin_wrapper
    return fn(*new_args, **new_kwargs)
  File "/root/infinigen/infinigen/core/execute_tasks.py", line 328, in execute_tasks
    compose_scene_func(output_folder, scene_seed)
  File "/root/miniconda3/lib/python3.10/site-packages/gin/config.py", line 1605, in gin_wrapper
    utils.augment_exception_message_and_reraise(e, err_str)
  File "/root/miniconda3/lib/python3.10/site-packages/gin/utils.py", line 41, in augment_exception_message_and_reraise
    raise proxy.with_traceback(exception.__traceback__) from None
  File "/root/miniconda3/lib/python3.10/site-packages/gin/config.py", line 1582, in gin_wrapper
    return fn(*new_args, **new_kwargs)
  File "/root/infinigen/infinigen_examples/generate_nature.py", line 176, in compose_scene
    p.run_stage(
  File "/root/infinigen/infinigen/core/util/pipeline.py", line 76, in run_stage
    ret = fn(*args, **kwargs)
  File "/root/infinigen/infinigen_examples/generate_nature.py", line 178, in <lambda>
    lambda: cam_util.configure_cameras(camera_rigs, bbox, scene_preprocessed), 
  File "/root/miniconda3/lib/python3.10/site-packages/gin/config.py", line 1605, in gin_wrapper
    utils.augment_exception_message_and_reraise(e, err_str)
  File "/root/miniconda3/lib/python3.10/site-packages/gin/utils.py", line 41, in augment_exception_message_and_reraise
    raise proxy.with_traceback(exception.__traceback__) from None
  File "/root/miniconda3/lib/python3.10/site-packages/gin/config.py", line 1582, in gin_wrapper
    return fn(*new_args, **new_kwargs)
  File "/root/infinigen/infinigen/core/placement/camera.py", line 462, in configure_cameras
    base_views = compute_base_views(
  File "/root/miniconda3/lib/python3.10/site-packages/gin/config.py", line 1605, in gin_wrapper
    utils.augment_exception_message_and_reraise(e, err_str)
  File "/root/miniconda3/lib/python3.10/site-packages/gin/utils.py", line 41, in augment_exception_message_and_reraise
    raise proxy.with_traceback(exception.__traceback__) from None
  File "/root/miniconda3/lib/python3.10/site-packages/gin/config.py", line 1582, in gin_wrapper
    return fn(*new_args, **new_kwargs)
  File "/root/infinigen/infinigen/core/placement/camera.py", line 413, in compute_base_views
    raise ValueError(f'Could not find {n_views} camera views')
ValueError: Could not find 1 camera views
  In call to configurable 'compute_base_views' (<function compute_base_views at 0x7faf2e43a170>)
  In call to configurable 'configure_cameras' (<function configure_cameras at 0x7faf2e43b640>)
  In call to configurable 'compose_scene' (<function compose_scene at 0x7faf991c1090>)
  In call to configurable 'execute_tasks' (<function execute_tasks at 0x7faf24d751b0>)

No.5 occured 11 times

[23:53:47.387] [infinigen.core.placement.animation_policy] [INFO] | Failed attempt=9 out of max_full_retries=10 for obj.name='CameraRigs/0'
[23:53:47.387] [infinigen.times] [INFO] | [animate_cameras] failed with <class 'ValueError'>
[23:53:47.387] [infinigen.times] [INFO] | [MAIN TOTAL] failed with <class 'ValueError'>
Traceback (most recent call last):
  File "/root/miniconda3/lib/python3.10/runpy.py", line 196, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File "/root/miniconda3/lib/python3.10/runpy.py", line 86, in _run_code
    exec(code, run_globals)
  File "/root/infinigen/infinigen_examples/generate_nature.py", line 438, in <module>
    main(args)
  File "/root/infinigen/infinigen_examples/generate_nature.py", line 409, in main
    execute_tasks.main(
  File "/root/infinigen/infinigen/core/execute_tasks.py", line 418, in main
    execute_tasks(
  File "/root/miniconda3/lib/python3.10/site-packages/gin/config.py", line 1605, in gin_wrapper
    utils.augment_exception_message_and_reraise(e, err_str)
  File "/root/miniconda3/lib/python3.10/site-packages/gin/utils.py", line 41, in augment_exception_message_and_reraise
    raise proxy.with_traceback(exception.__traceback__) from None
  File "/root/miniconda3/lib/python3.10/site-packages/gin/config.py", line 1582, in gin_wrapper
    return fn(*new_args, **new_kwargs)
  File "/root/infinigen/infinigen/core/execute_tasks.py", line 328, in execute_tasks
    compose_scene_func(output_folder, scene_seed)
  File "/root/miniconda3/lib/python3.10/site-packages/gin/config.py", line 1605, in gin_wrapper
    utils.augment_exception_message_and_reraise(e, err_str)
  File "/root/miniconda3/lib/python3.10/site-packages/gin/utils.py", line 41, in augment_exception_message_and_reraise
    raise proxy.with_traceback(exception.__traceback__) from None
  File "/root/miniconda3/lib/python3.10/site-packages/gin/config.py", line 1582, in gin_wrapper
    return fn(*new_args, **new_kwargs)
  File "/root/infinigen/infinigen_examples/generate_nature.py", line 213, in compose_scene
    p.run_stage('animate_cameras', lambda: cam_util.animate_cameras(
  File "/root/infinigen/infinigen/core/util/pipeline.py", line 76, in run_stage
    ret = fn(*args, **kwargs)
  File "/root/infinigen/infinigen_examples/generate_nature.py", line 213, in <lambda>
    p.run_stage('animate_cameras', lambda: cam_util.animate_cameras(
  File "/root/miniconda3/lib/python3.10/site-packages/gin/config.py", line 1605, in gin_wrapper
    utils.augment_exception_message_and_reraise(e, err_str)
  File "/root/miniconda3/lib/python3.10/site-packages/gin/utils.py", line 41, in augment_exception_message_and_reraise
    raise proxy.with_traceback(exception.__traceback__) from None
  File "/root/miniconda3/lib/python3.10/site-packages/gin/config.py", line 1582, in gin_wrapper
    return fn(*new_args, **new_kwargs)
  File "/root/infinigen/infinigen/core/placement/camera.py", line 515, in animate_cameras
    animation_policy.animate_trajectory(
  File "/root/miniconda3/lib/python3.10/site-packages/gin/config.py", line 1605, in gin_wrapper
    utils.augment_exception_message_and_reraise(e, err_str)
  File "/root/miniconda3/lib/python3.10/site-packages/gin/utils.py", line 41, in augment_exception_message_and_reraise
    raise proxy.with_traceback(exception.__traceback__) from None
  File "/root/miniconda3/lib/python3.10/site-packages/gin/config.py", line 1582, in gin_wrapper
    return fn(*new_args, **new_kwargs)
  File "/root/infinigen/infinigen/core/placement/animation_policy.py", line 470, in animate_trajectory
    raise ValueError(err)
ValueError: Animation for obj.name='CameraRigs/0' failed with max_full_retries=10 and max_step_tries=25, quitting
  In call to configurable 'animate_trajectory' (<function animate_trajectory at 0x7f20555ce0e0>)
  In call to configurable 'animate_cameras' (<function animate_cameras at 0x7f20555e3490>)
  In call to configurable 'compose_scene' (<function compose_scene at 0x7f20c03b5090>)
  In call to configurable 'execute_tasks' (<function execute_tasks at 0x7f204bf251b0>)

No. 6 occured once

Traceback (most recent call last):
  File "/root/miniconda3/lib/python3.10/runpy.py", line 196, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File "/root/miniconda3/lib/python3.10/runpy.py", line 86, in _run_code
    exec(code, run_globals)
  File "/root/infinigen/infinigen_examples/generate_nature.py", line 438, in <module>
    main(args)
  File "/root/infinigen/infinigen_examples/generate_nature.py", line 409, in main
    execute_tasks.main(
  File "/root/infinigen/infinigen/core/execute_tasks.py", line 418, in main
    execute_tasks(
  File "/root/miniconda3/lib/python3.10/site-packages/gin/config.py", line 1605, in gin_wrapper
    utils.augment_exception_message_and_reraise(e, err_str)
  File "/root/miniconda3/lib/python3.10/site-packages/gin/utils.py", line 41, in augment_exception_message_and_reraise
    raise proxy.with_traceback(exception.__traceback__) from None
  File "/root/miniconda3/lib/python3.10/site-packages/gin/config.py", line 1582, in gin_wrapper
    return fn(*new_args, **new_kwargs)
  File "/root/infinigen/infinigen/core/execute_tasks.py", line 328, in execute_tasks
    compose_scene_func(output_folder, scene_seed)
  File "/root/miniconda3/lib/python3.10/site-packages/gin/config.py", line 1605, in gin_wrapper
    utils.augment_exception_message_and_reraise(e, err_str)
  File "/root/miniconda3/lib/python3.10/site-packages/gin/utils.py", line 41, in augment_exception_message_and_reraise
    raise proxy.with_traceback(exception.__traceback__) from None
  File "/root/miniconda3/lib/python3.10/site-packages/gin/config.py", line 1582, in gin_wrapper
    return fn(*new_args, **new_kwargs)
  File "/root/infinigen/infinigen_examples/generate_nature.py", line 173, in compose_scene
    camera_rigs, scene_preprocessed = p.run_stage('camera_preprocess', camera_preprocess, use_chance=False)
  File "/root/infinigen/infinigen/core/util/pipeline.py", line 76, in run_stage
    ret = fn(*args, **kwargs)
  File "/root/infinigen/infinigen_examples/generate_nature.py", line 171, in camera_preprocess
    scene_preprocessed = cam_util.camera_selection_preprocessing(terrain, terrain_mesh)   
  File "/root/miniconda3/lib/python3.10/site-packages/gin/config.py", line 1605, in gin_wrapper
    utils.augment_exception_message_and_reraise(e, err_str)
  File "/root/miniconda3/lib/python3.10/site-packages/gin/utils.py", line 41, in augment_exception_message_and_reraise
    raise proxy.with_traceback(exception.__traceback__) from None
  File "/root/miniconda3/lib/python3.10/site-packages/gin/config.py", line 1582, in gin_wrapper
    return fn(*new_args, **new_kwargs)
  File "/root/infinigen/infinigen/core/placement/camera.py", line 442, in camera_selection_preprocessing
    terrain_bvh, terrain_tags_answers, vertexwise_min_dist = terrain.build_terrain_bvh_and_attrs(terrain_tags_ratio.keys())
  File "/root/miniconda3/lib/python3.10/site-packages/gin/config.py", line 1605, in gin_wrapper
    utils.augment_exception_message_and_reraise(e, err_str)
  File "/root/miniconda3/lib/python3.10/site-packages/gin/utils.py", line 41, in augment_exception_message_and_reraise
    raise proxy.with_traceback(exception.__traceback__) from None
  File "/root/miniconda3/lib/python3.10/site-packages/gin/config.py", line 1582, in gin_wrapper
    return fn(*new_args, **new_kwargs)
  File "/root/infinigen/infinigen/terrain/core.py", line 364, in build_terrain_bvh_and_attrs
    far_ocean = self.under_water and self.surfaces[Materials.LiquidCollection].info["is_ocean"]
AttributeError: module 'infinigen.assets.materials.lava' has no attribute 'info'
  In call to configurable 'build_terrain_bvh_and_attrs' (<function Terrain.build_terrain_bvh_and_attrs at 0x7f98430d3be0>)
  In call to configurable 'camera_selection_preprocessing' (<function camera_selection_preprocessing at 0x7f984c18fd90>)
  In call to configurable 'compose_scene' (<function compose_scene at 0x7f98b6f41090>)
  In call to configurable 'execute_tasks' (<function execute_tasks at 0x7f9842ab51b0>)

No.7 occured 4 times fineterrain.err

python: ocmesher/source/core.cpp:880: void finalize_extra_verts(sdfT*, sdfT*, T*, sdfT*, sdfT*, T*): Assertion `w != 0' failed.

No.8 occured 5 times

[00:34:32.770] [infinigen.times] [INFO] | [flying_creatures] failed with <class 'ValueError'>
[00:34:32.771] [infinigen.times] [INFO] | [MAIN TOTAL] failed with <class 'ValueError'>
Traceback (most recent call last):
  File "/root/miniconda3/lib/python3.10/runpy.py", line 196, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File "/root/miniconda3/lib/python3.10/runpy.py", line 86, in _run_code
    exec(code, run_globals)
  File "/root/infinigen/infinigen_examples/generate_nature.py", line 438, in <module>
    main(args)
  File "/root/infinigen/infinigen_examples/generate_nature.py", line 409, in main
    execute_tasks.main(
  File "/root/infinigen/infinigen/core/execute_tasks.py", line 418, in main
    execute_tasks(
  File "/root/miniconda3/lib/python3.10/site-packages/gin/config.py", line 1605, in gin_wrapper
    utils.augment_exception_message_and_reraise(e, err_str)
  File "/root/miniconda3/lib/python3.10/site-packages/gin/utils.py", line 41, in augment_exception_message_and_reraise
    raise proxy.with_traceback(exception.__traceback__) from None
  File "/root/miniconda3/lib/python3.10/site-packages/gin/config.py", line 1582, in gin_wrapper
    return fn(*new_args, **new_kwargs)
  File "/root/infinigen/infinigen/core/execute_tasks.py", line 328, in execute_tasks
    compose_scene_func(output_folder, scene_seed)
  File "/root/miniconda3/lib/python3.10/site-packages/gin/config.py", line 1605, in gin_wrapper
    utils.augment_exception_message_and_reraise(e, err_str)
  File "/root/miniconda3/lib/python3.10/site-packages/gin/utils.py", line 41, in augment_exception_message_and_reraise
    raise proxy.with_traceback(exception.__traceback__) from None
  File "/root/miniconda3/lib/python3.10/site-packages/gin/config.py", line 1582, in gin_wrapper
    return fn(*new_args, **new_kwargs)
  File "/root/infinigen/infinigen_examples/generate_nature.py", line 211, in compose_scene
    pois += p.run_stage('flying_creatures', flying_creatures, default=[])
  File "/root/infinigen/infinigen/core/util/pipeline.py", line 76, in run_stage
    ret = fn(*args, **kwargs)
  File "/root/infinigen/infinigen_examples/generate_nature.py", line 209, in flying_creatures
    col = placement.scatter_placeholders_mesh(terrain_center, fac, num_placeholders=n, overall_density=1, altitude=0.2)
  File "/root/infinigen/infinigen/core/placement/placement.py", line 99, in scatter_placeholders_mesh
    return scatter_placeholders(locations, factory)
  File "/root/infinigen/infinigen/core/placement/placement.py", line 106, in scatter_placeholders
    obj = factory.spawn_placeholder(i, loc, mathutils.Euler((0, 0, rot_z)))
  File "/root/infinigen/infinigen/core/placement/factory.py", line 72, in spawn_placeholder
    obj = self.create_placeholder(i=i, loc=loc, rot=rot)
  File "/root/infinigen/infinigen/assets/creatures/bird.py", line 308, in create_placeholder
    curve = animation_policy.policy_create_bezier_path(p, self.bvh, self.policy, retry_rotation=True, max_full_retries=30, fatal=True)
  File "/root/infinigen/infinigen/core/placement/animation_policy.py", line 483, in policy_create_bezier_path
    animate_trajectory(temp, bvh, policy_func, **kwargs)
  File "/root/miniconda3/lib/python3.10/site-packages/gin/config.py", line 1605, in gin_wrapper
    utils.augment_exception_message_and_reraise(e, err_str)
  File "/root/miniconda3/lib/python3.10/site-packages/gin/utils.py", line 41, in augment_exception_message_and_reraise
    raise proxy.with_traceback(exception.__traceback__) from None
  File "/root/miniconda3/lib/python3.10/site-packages/gin/config.py", line 1582, in gin_wrapper
    return fn(*new_args, **new_kwargs)
  File "/root/infinigen/infinigen/core/placement/animation_policy.py", line 470, in animate_trajectory
    raise ValueError(err)
ValueError: Animation for obj.name='policy_create_bezier_path.temp' failed with max_full_retries=30 and max_step_tries=25, quitting
  In call to configurable 'animate_trajectory' (<function animate_trajectory at 0x7fea970d20e0>)
  In call to configurable 'compose_scene' (<function compose_scene at 0x7feb01e49090>)
  In call to configurable 'execute_tasks' (<function execute_tasks at 0x7fea8da0d1b0>)

No. 9 occured 3 times

apply_modifers on obj.name='Icosphere.001' m.name='geo_tentacles' raised Error: Evaluated geometry from modifier does not contain a mesh
[00:38:03.535] [infinigen.times] [INFO] | [populate_clouds] failed with <class 'AssertionError'>
[00:38:03.535] [infinigen.times] [INFO] | [MAIN TOTAL] failed with <class 'AssertionError'>
Traceback (most recent call last):
  File "/root/miniconda3/lib/python3.10/runpy.py", line 196, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File "/root/miniconda3/lib/python3.10/runpy.py", line 86, in _run_code
    exec(code, run_globals)
  File "/root/infinigen/infinigen_examples/generate_nature.py", line 438, in <module>
    main(args)
  File "/root/infinigen/infinigen_examples/generate_nature.py", line 409, in main
    execute_tasks.main(
  File "/root/infinigen/infinigen/core/execute_tasks.py", line 418, in main
    execute_tasks(
  File "/root/miniconda3/lib/python3.10/site-packages/gin/config.py", line 1605, in gin_wrapper
    utils.augment_exception_message_and_reraise(e, err_str)
  File "/root/miniconda3/lib/python3.10/site-packages/gin/utils.py", line 41, in augment_exception_message_and_reraise
    raise proxy.with_traceback(exception.__traceback__) from None
  File "/root/miniconda3/lib/python3.10/site-packages/gin/config.py", line 1582, in gin_wrapper
    return fn(*new_args, **new_kwargs)
  File "/root/infinigen/infinigen/core/execute_tasks.py", line 337, in execute_tasks
    populate_scene(output_folder, scene_seed)
  File "/root/miniconda3/lib/python3.10/site-packages/gin/config.py", line 1605, in gin_wrapper
    utils.augment_exception_message_and_reraise(e, err_str)
  File "/root/miniconda3/lib/python3.10/site-packages/gin/utils.py", line 41, in augment_exception_message_and_reraise
    raise proxy.with_traceback(exception.__traceback__) from None
  File "/root/miniconda3/lib/python3.10/site-packages/gin/config.py", line 1582, in gin_wrapper
    return fn(*new_args, **new_kwargs)
  File "/root/infinigen/infinigen/core/execute_tasks.py", line 118, in populate_scene
    p.run_stage('populate_clouds', use_chance=False,
  File "/root/infinigen/infinigen/core/util/pipeline.py", line 76, in run_stage
    ret = fn(*args, **kwargs)
  File "/root/infinigen/infinigen/core/execute_tasks.py", line 119, in <lambda>
    fn=lambda: placement.populate_all(weather.CloudFactory, camera, dist_cull=None, vis_cull=None))
  File "/root/miniconda3/lib/python3.10/site-packages/gin/config.py", line 1605, in gin_wrapper
    utils.augment_exception_message_and_reraise(e, err_str)
  File "/root/miniconda3/lib/python3.10/site-packages/gin/utils.py", line 41, in augment_exception_message_and_reraise
    raise proxy.with_traceback(exception.__traceback__) from None
  File "/root/miniconda3/lib/python3.10/site-packages/gin/config.py", line 1582, in gin_wrapper
    return fn(*new_args, **new_kwargs)
  File "/root/infinigen/infinigen/core/placement/placement.py", line 234, in populate_all
    new_assets, pholders = populate_collection(
  File "/root/infinigen/infinigen/core/placement/placement.py", line 156, in populate_collection
    dists, vis_dists = camera_util.min_dists_from_cam_trajectory(points, camera)
  File "/root/infinigen/infinigen/core/util/camera.py", line 152, in min_dists_from_cam_trajectory
    assert len(points.shape) == 2 and points.shape[-1] == 3
AssertionError: 
  In call to configurable 'populate_all' (<function populate_all at 0x7f3a09c21ea0>)
  In call to configurable 'populate_scene' (<function populate_scene at 0x7f39ffbd77f0>)
  In call to configurable 'execute_tasks' (<function execute_tasks at 0x7f39ff7691b0>)

No.10 occured 4 times

Error: Failed to build OptiX acceleration structure
Error: System is out of GPU memory

No. 11 occured 7 times crash_summaries.txt

04/07 03:01AM outputs/my_videos/90e103/logs/shortrender_0_0_0001_0.err reason='Could not summarize cause, check outputs/my_videos/90e103/logs/shortrender_0_0_0001_0.err' node=None fatal=False

shortrender_0_0_0001_0.err it shows no error but stuck here:

[02:25:35.906] [infinigen.times] [INFO] | [get_camera] finished in 0:00:00.000106
[02:25:35.906] [infinigen.times] [INFO] | [Actual rendering]

No.12 occured twice Two video generation tasks completed all the steps successfully, but every frame of the generated images is entirely black.

bbbbubble commented 2 months ago

@araistrick Could you please check the error mentioned above? This is quite urgent for my current work. Thank you!

araistrick commented 2 months ago

Hello, apologies for the delay, we are looking into this now. @mazeyu will look at the terrain related issues.

For the camera-related crashes, have you made any changes to camera selection or animation? Can you provide (or just describe in detail) what parts of the code have been changed? Typically we do expect some crashes when the system cant find a good camera trajectory, but these are usually <5% of scenes.

bbbbubble commented 2 months ago

Hello, apologies for the delay, we are looking into this now. @mazeyu will look at the terrain related issues.

For the camera-related crashes, have you made any changes to camera selection or animation? Can you provide (or just describe in detail) what parts of the code have been changed? Typically we do expect some crashes when the system cant find a good camera trajectory, but these are usually <5% of scenes.

@araistrick @mazeyu Thank you!

I made few changes to the source code, except for removing the second camera setting in infinigen_examples/configs/base.gin, which means that changing

camera.spawn_camera_rigs.n_camera_rigs = 1
camera.spawn_camera_rigs.camera_rig_config = [
    {'loc': (0, 0, 0), 'rot_euler': (0, 0, 0)},
    {'loc': (0.075, 0, 0), 'rot_euler': (0, 0, 0)}
]

to

camera.spawn_camera_rigs.n_camera_rigs = 1
camera.spawn_camera_rigs.camera_rig_config = [
    {'loc': (0, 0, 0), 'rot_euler': (0, 0, 0)}
]

no other changes.

However, I suspect that the reason for so many crashes is that I set the number of rendered images to 480 instead of the original 192. Have you tried running the experiment with a higher number of images to see if it still runs well?

araistrick commented 2 months ago

The increased crashrate is almost certainly due to the 480-frame videos. The system runtime and crashrate is proportional to the total amount of scene content seen by the camera in the full video, so if you want a long video but can accept slow camera movement then I recommend slowing down the camera.

Also FYI I have released a prerelease v1.3 (the next version) as branch rc_1.3.2 which is generally more efficient for video rendering, if you intend to render lots of videos you should use this.

bbbbubble commented 1 month ago

Per-frame object names and locations are available in our Objects.json output, see the GroundTruthAnnotations.md documentation for more details. Scene category (desert forest etc) isn't saved anywhere but can be parsed from the coarse logs.

For creating a circular arrangement of cameras I would recommend ignoring the animation policy code, as this is more intended to make a continuous trajectory of camera poses. You can comment out the existing camera code in generate_nature.py then just manually arrange the cameras by setting 'cam_rigs[i].location = (x,y,z)' and similarly for 'cam_rigs[I].rotation_euler'. I may be able to publish code for this in the next week or so but I am not sure the exact timeline.

@araistrick Has there been any progress on this issue? I have tried to increase n_camera_rigs and set each camera_rig[i]. Also, to prevent the camera parameters from being changed to other values, I have set camera_policy to be stationary. However, I am not achieving the expected results. There is an unexplained crash, and it seems that excessive camera rotation angles can also cause an overly large scene volume, leading to issues like 'cuda out of memory'. Do you have time to take a look at this issue? Thank you!

mazeyu commented 2 weeks ago

Hi, For now, to avoid out-of-memory due to scene volumes, you can add export.spherical = True in -p argument and iterate_scene_tasks.view_block_size=8(or something) in --pipeline_overrides. It creates multiple terrain meshes instead of a single mesh, though it causes a little flickering.