isaac-sim / IsaacLab

Unified framework for robot learning built on NVIDIA Isaac Sim
https://isaac-sim.github.io/IsaacLab
Other
2.29k stars 940 forks source link

[Bug Report] Increasing the number of parallel environments results in severe degradation in TiledCamera rendering quality #1031

Open trevormcinroe opened 2 months ago

trevormcinroe commented 2 months ago

I am using the latest version (4.2.0) on a Ubuntu server while rendering headless.

Here is the quality of images rendered from one camera while only using a single environment: one_environment

Here is the quality of images rendered from one camera while using 32 parallel environments: 32_environments

glvov-bdai commented 2 months ago

Hi can you please share the script /conditions to recreate these results?

glvov-bdai commented 2 months ago

In my preliminary tests I did not see any degradation with 32 or 64 envs in parallel. However, I only tried low resolution and static frames. If you provide system information (how did you install, GPU, ubuntu version, etc) and a way for us to recreate your experiment I'd be happy to look into this further! (see bottom for my recreation steps)

32 envs

output

64 envs output

I tried these with the manager based cartpole envs. You can recreate my results from my fork and the binary install with

git clone https://github.com/glvov-bdai/IsaacLab.git sanity_check
cd sanity_check && git checkout write_tiled_rendering
# COPY OVER SIM_LINK TO _isaac_sim # For example: ln -s /home/nvidia/.local/share/ov/pkg/isaac-sim-4.2.0 _isaac_sim
./isaaclab.sh -p source/standalone/workflows/rl_games/train.py --task Isaac-Cartpole-RGB-Camera-v0 --num_envs 32 --enable_cameras

Numbered images will be saved to parent directory

glvov-bdai commented 2 months ago

I did notice that the grid lines do seem to shift step to step frames

trevormcinroe commented 2 months ago

@glvov-bdai I can provide some minimal code tomorrow, but try with a more visually-complex model like Franka, and place the camera closer to the object. Perhaps that will show the issue?

StoneT2000 commented 2 months ago

I noticed that some environments (i guess the ones that spawn too far away?) dont show the floor anymore. My understanding is Isaac Lab essentially has one shared scene meaning objects can fly into the parallel views of others if they move there and technically there is only one floor. Is there a way to make the floor bigger so that all parallel cameras have a floor shown? I am also curious if this may cause changes in rendering performance if some parallel envs are / are not rendering the floor

glvov-bdai commented 2 months ago

@stonet2000 We are aware of the default ground plane not being visible beyond a certain contained size. This is due to the ground plane being a finite USD that is not scaled. If you'd like, you could add more ground planes as assets, and just spawn them further away. Alternatively, you could use a larger USD asset for the ground plane, just having it span the desired sizes.

Although the default ground plane may not be visible beyond certain sizes, it should still present for collisions.

In terms of rendering performance, you can try my benchmark tool https://github.com/isaac-sim/IsaacLab/pull/976 with the different configurations I suggested and find empirically what works best.

If you run into any problems with the ground plane stuff I'd recommend opening an issue specifically for that for better visibility - doesn't seem like it's related to the rendering issues

rthaker01 commented 1 month ago

Hi @trevormcinroe - Would you please share the repro steps?

kellyguo11 commented 1 month ago

The rendering quality difference could be coming from the denoiser in the renderer. One thing you could try is adding this to the code to change the denoiser mode to see if it'll help:

import omni.replicator.core as rep
rep.settings.set_render_rtx_realtime(antialiasing="DLAA")
trevormcinroe commented 1 month ago

@rthaker01 @glvov-bdai apologies for the delay. ICLR deadline and all... I've been working with @elle-miller on some projects using IsaacLab.

We've both been opening bug reports, and we'll get back to you soon on this one with more information.

elle-miller commented 1 month ago

Hi @glvov-bdai @kellyguo11!

I have created a minimal working example repo based on most recent Isaac Lab + skrl version here: https://github.com/elle-miller/camera_testing/tree/main

Running the below commands will create image folders that save the raw tiled camera output for 100 steps. I have uploaded several folders with different num_envs

python scripts/train.py --task ImageCartpole --headless --enable_cameras --num_envs 4
python scripts/train.py --task ImageCartpole --headless --enable_cameras --num_envs 128

The effects have been more noticeable in more complex environments e.g. franka lift, but I think you can still see the degradation with cartpole.

1 env

128px_92 128px_98 128px_52

1024 envs

128px_61 128px_24 128px_2

It appears that @kellyguo11's suggestion fixes this problem:

without denoiser 128px_80

with denoiser 128px_80

I will double check this fix with more complex environments. But it appears that the denoiser should be the default setting.

ArneKlages4444 commented 1 month ago

Hi, I tested the denoiser fix in a visually more complex environment. It seems that the denoiser helps a lot but does not solve the problem completely, see the following images (112x112 pixel). Especially when it comes to lighting, the degeneration effect is still very visible.

2 envs: env_2 1024 envs with denoiser: env_1024_denois 1024 envs: env_1024

2 envs: black_env_2 1024 envs with denoiser: black_env_1024_denois 1024 envs: black_env_1024

System:

elle-miller commented 1 month ago

@glvov-bdai OK, while the denoiser helps, the fix still does not make images in a good state for training (84px images, 1024 envs). The strange trailing effect of the cart still persists. Has anyone else experienced this?

Without denoiser: without_denoiser

With denoiser: with_densoiser

glvov-bdai commented 1 month ago

Hi @elle-miller @ArneKlages4444 @trevormcinroe

Thank you for investigating this issue and providing replications steps.

@kellyguo11 @mpgussert @Dhoeller19 still looks like the issue is persisting on isaac sim side?

Can we please add this to functionality to fix in the next isaac release?