BlenderProc icon indicating copy to clipboard operation
BlenderProc copied to clipboard

amodal segmentation

Open kamdkslansgka opened this issue 8 months ago • 2 comments

Describe the issue

Dear author, thank you for your wonderful work? I don't know if Blenderproc supports amodal segmentation. Even the obscured part needs to have a segmentation mask. If there are any suggestions, I would be extremely grateful

Minimal code example

data = bproc.renderer.render()

# 
image_dir = os.path.join(args.output_dir, "images")
os.makedirs(image_dir, exist_ok=True)
for i, image in enumerate(data["colors"]):
    save_array_as_image(image, "colors", os.path.join(image_dir, f"image_{i}.png"))

# 
instance_dir = os.path.join(args.output_dir, "instance_segmaps")
os.makedirs(instance_dir, exist_ok=True)
for i, mask in enumerate(data["instance_segmaps"]):
    save_array_as_image(mask, "instance_segmaps", os.path.join(instance_dir, f"instance_{i}.png"))

# *
for obj in objs:
    obj.blender_obj.hide_render = False  
    obj.blender_obj.hide_viewport = False

# bproc.renderer.enable_segmentation_output(map_by=["object_name", "instance"], default_values={'object_name': 'default'})
bproc.renderer.enable_segmentation_output(map_by=["object_name", "instance"], default_values={'object_name': 'default'})

Files required to run the code

No response

Expected behavior

I want to obtain a amodal mask

BlenderProc version

2.8

kamdkslansgka avatar Mar 03 '25 02:03 kamdkslansgka

Hey @kamdkslansgka,

yes that is possible using the bop writer. See for example here: https://github.com/DLR-RM/BlenderProc/blob/main/examples/basics/camera_object_pose/main.py#L61 The bop writer will also output masks for each object without occlusions.

cornerfarmer avatar Mar 12 '25 12:03 cornerfarmer