| { |
| "imports": [ |
| "$import torch", |
| "$from pathlib import Path", |
| "$import scripts" |
| ], |
| "bundle_root": ".", |
| "model_dir": "$@bundle_root + '/models'", |
| "output_dir": "$@bundle_root + '/output'", |
| "create_output_dir": "$Path(@output_dir).mkdir(exist_ok=True)", |
| "device": "$torch.device('cuda:0' if torch.cuda.is_available() else 'cpu')", |
| "trained_autoencoder_path": "$@model_dir + '/autoencoder.pt'", |
| "trained_diffusion_path": "$@model_dir + '/diffusion_unet.pt'", |
| "trained_controlnet_path": "$@model_dir + '/controlnet.pt'", |
| "trained_mask_generation_autoencoder_path": "$@model_dir + '/mask_generation_autoencoder.pt'", |
| "trained_mask_generation_diffusion_path": "$@model_dir + '/mask_generation_diffusion_unet.pt'", |
| "all_mask_files_base_dir": "$@bundle_root + '/datasets/all_masks_flexible_size_and_spacing_3000'", |
| "all_mask_files_json": "$@bundle_root + '/configs/candidate_masks_flexible_size_and_spacing_3000.json'", |
| "all_anatomy_size_condtions_json": "$@bundle_root + '/configs/all_anatomy_size_condtions.json'", |
| "label_dict_json": "$@bundle_root + '/configs/label_dict.json'", |
| "label_dict_remap_json": "$@bundle_root + '/configs/label_dict_124_to_132.json'", |
| "real_img_median_statistics_file": "$@bundle_root + '/configs/image_median_statistics.json'", |
| "num_output_samples": 1, |
| "body_region": [], |
| "anatomy_list": [ |
| "liver" |
| ], |
| "modality": "ct", |
| "controllable_anatomy_size": [], |
| "num_inference_steps": 30, |
| "mask_generation_num_inference_steps": 1000, |
| "random_seed": null, |
| "spatial_dims": 3, |
| "image_channels": 1, |
| "latent_channels": 4, |
| "output_size_xy": 512, |
| "output_size_z": 512, |
| "output_size": [ |
| "@output_size_xy", |
| "@output_size_xy", |
| "@output_size_z" |
| ], |
| "image_output_ext": ".nii.gz", |
| "label_output_ext": ".nii.gz", |
| "spacing_xy": 1.0, |
| "spacing_z": 1.0, |
| "spacing": [ |
| "@spacing_xy", |
| "@spacing_xy", |
| "@spacing_z" |
| ], |
| "latent_shape": [ |
| "@latent_channels", |
| "$@output_size[0]//4", |
| "$@output_size[1]//4", |
| "$@output_size[2]//4" |
| ], |
| "mask_generation_latent_shape": [ |
| 4, |
| 64, |
| 64, |
| 64 |
| ], |
| "autoencoder_sliding_window_infer_size": [ |
| 80, |
| 80, |
| 80 |
| ], |
| "autoencoder_sliding_window_infer_overlap": 0.4, |
| "autoencoder_def": { |
| "_target_": "monai.apps.generation.maisi.networks.autoencoderkl_maisi.AutoencoderKlMaisi", |
| "spatial_dims": "@spatial_dims", |
| "in_channels": "@image_channels", |
| "out_channels": "@image_channels", |
| "latent_channels": "@latent_channels", |
| "num_channels": [ |
| 64, |
| 128, |
| 256 |
| ], |
| "num_res_blocks": [ |
| 2, |
| 2, |
| 2 |
| ], |
| "norm_num_groups": 32, |
| "norm_eps": 1e-06, |
| "attention_levels": [ |
| false, |
| false, |
| false |
| ], |
| "with_encoder_nonlocal_attn": false, |
| "with_decoder_nonlocal_attn": false, |
| "use_checkpointing": false, |
| "use_convtranspose": false, |
| "norm_float16": true, |
| "num_splits": 2, |
| "dim_split": 1 |
| }, |
| "diffusion_unet_def": { |
| "_target_": "monai.apps.generation.maisi.networks.diffusion_model_unet_maisi.DiffusionModelUNetMaisi", |
| "spatial_dims": "@spatial_dims", |
| "in_channels": "@latent_channels", |
| "out_channels": "@latent_channels", |
| "num_channels": [ |
| 64, |
| 128, |
| 256, |
| 512 |
| ], |
| "attention_levels": [ |
| false, |
| false, |
| true, |
| true |
| ], |
| "num_head_channels": [ |
| 0, |
| 0, |
| 32, |
| 32 |
| ], |
| "num_res_blocks": 2, |
| "use_flash_attention": true, |
| "include_top_region_index_input": false, |
| "include_bottom_region_index_input": false, |
| "include_spacing_input": true, |
| "num_class_embeds": 128, |
| "resblock_updown": true, |
| "include_fc": true |
| }, |
| "controlnet_def": { |
| "_target_": "monai.apps.generation.maisi.networks.controlnet_maisi.ControlNetMaisi", |
| "spatial_dims": "@spatial_dims", |
| "in_channels": "@latent_channels", |
| "num_channels": [ |
| 64, |
| 128, |
| 256, |
| 512 |
| ], |
| "attention_levels": [ |
| false, |
| false, |
| true, |
| true |
| ], |
| "num_head_channels": [ |
| 0, |
| 0, |
| 32, |
| 32 |
| ], |
| "num_res_blocks": 2, |
| "use_flash_attention": true, |
| "conditioning_embedding_in_channels": 8, |
| "conditioning_embedding_num_channels": [ |
| 8, |
| 32, |
| 64 |
| ], |
| "num_class_embeds": 128, |
| "resblock_updown": true, |
| "include_fc": true |
| }, |
| "mask_generation_autoencoder_def": { |
| "_target_": "monai.apps.generation.maisi.networks.autoencoderkl_maisi.AutoencoderKlMaisi", |
| "spatial_dims": "@spatial_dims", |
| "in_channels": 8, |
| "out_channels": 125, |
| "latent_channels": "@latent_channels", |
| "num_channels": [ |
| 32, |
| 64, |
| 128 |
| ], |
| "num_res_blocks": [ |
| 1, |
| 2, |
| 2 |
| ], |
| "norm_num_groups": 32, |
| "norm_eps": 1e-06, |
| "attention_levels": [ |
| false, |
| false, |
| false |
| ], |
| "with_encoder_nonlocal_attn": false, |
| "with_decoder_nonlocal_attn": false, |
| "use_flash_attention": false, |
| "use_checkpointing": true, |
| "use_convtranspose": true, |
| "norm_float16": true, |
| "num_splits": 8, |
| "dim_split": 1 |
| }, |
| "mask_generation_diffusion_def": { |
| "_target_": "monai.networks.nets.diffusion_model_unet.DiffusionModelUNet", |
| "spatial_dims": "@spatial_dims", |
| "in_channels": "@latent_channels", |
| "out_channels": "@latent_channels", |
| "channels": [ |
| 64, |
| 128, |
| 256, |
| 512 |
| ], |
| "attention_levels": [ |
| false, |
| false, |
| true, |
| true |
| ], |
| "num_head_channels": [ |
| 0, |
| 0, |
| 32, |
| 32 |
| ], |
| "num_res_blocks": 2, |
| "use_flash_attention": true, |
| "with_conditioning": true, |
| "upcast_attention": true, |
| "cross_attention_dim": 10 |
| }, |
| "autoencoder": "$@autoencoder_def.to(@device)", |
| "checkpoint_autoencoder": "$torch.load(@trained_autoencoder_path, weights_only=True)", |
| "load_autoencoder": "$@autoencoder.load_state_dict(@checkpoint_autoencoder)", |
| "diffusion_unet": "$@diffusion_unet_def.to(@device)", |
| "checkpoint_diffusion_unet": "$torch.load(@trained_diffusion_path, weights_only=False)", |
| "load_diffusion": "$@diffusion_unet.load_state_dict(@checkpoint_diffusion_unet['unet_state_dict'])", |
| "controlnet": "$@controlnet_def.to(@device)", |
| "copy_controlnet_state": "$monai.networks.utils.copy_model_state(@controlnet, @diffusion_unet.state_dict())", |
| "checkpoint_controlnet": "$torch.load(@trained_controlnet_path, weights_only=False)", |
| "load_controlnet": "$@controlnet.load_state_dict(@checkpoint_controlnet['controlnet_state_dict'], strict=True)", |
| "scale_factor": "$@checkpoint_diffusion_unet['scale_factor'].to(@device)", |
| "mask_generation_autoencoder": "$@mask_generation_autoencoder_def.to(@device)", |
| "checkpoint_mask_generation_autoencoder": "$torch.load(@trained_mask_generation_autoencoder_path, weights_only=True)", |
| "load_mask_generation_autoencoder": "$@mask_generation_autoencoder.load_state_dict(@checkpoint_mask_generation_autoencoder, strict=True)", |
| "mask_generation_diffusion_unet": "$@mask_generation_diffusion_def.to(@device)", |
| "checkpoint_mask_generation_diffusion_unet": "$torch.load(@trained_mask_generation_diffusion_path, weights_only=True)", |
| "load_mask_generation_diffusion": "$@mask_generation_diffusion_unet.load_state_dict(@checkpoint_mask_generation_diffusion_unet['unet_state_dict'], strict=True)", |
| "mask_generation_scale_factor": "$@checkpoint_mask_generation_diffusion_unet['scale_factor']", |
| "noise_scheduler": { |
| "_target_": "scripts.rectified_flow.RFlowScheduler", |
| "num_train_timesteps": 1000, |
| "use_discrete_timesteps": false, |
| "use_timestep_transform": true, |
| "sample_method": "uniform" |
| }, |
| "mask_generation_noise_scheduler": { |
| "_target_": "monai.networks.schedulers.ddpm.DDPMScheduler", |
| "num_train_timesteps": 1000, |
| "beta_start": 0.0015, |
| "beta_end": 0.0195, |
| "schedule": "scaled_linear_beta", |
| "clip_sample": false |
| }, |
| "check_input": "$scripts.sample.check_input(@body_region,@anatomy_list,@label_dict_json,@output_size,@spacing,@controllable_anatomy_size)", |
| "ldm_sampler": { |
| "_target_": "scripts.sample.LDMSampler", |
| "_requires_": [ |
| "@create_output_dir", |
| "@load_diffusion", |
| "@load_autoencoder", |
| "@copy_controlnet_state", |
| "@load_controlnet", |
| "@load_mask_generation_autoencoder", |
| "@load_mask_generation_diffusion", |
| "@check_input" |
| ], |
| "body_region": "@body_region", |
| "anatomy_list": "@anatomy_list", |
| "modality": "@modality", |
| "all_mask_files_json": "@all_mask_files_json", |
| "all_anatomy_size_condtions_json": "@all_anatomy_size_condtions_json", |
| "all_mask_files_base_dir": "@all_mask_files_base_dir", |
| "label_dict_json": "@label_dict_json", |
| "label_dict_remap_json": "@label_dict_remap_json", |
| "autoencoder": "@autoencoder", |
| "diffusion_unet": "@diffusion_unet", |
| "controlnet": "@controlnet", |
| "scale_factor": "@scale_factor", |
| "noise_scheduler": "@noise_scheduler", |
| "mask_generation_autoencoder": "@mask_generation_autoencoder", |
| "mask_generation_diffusion_unet": "@mask_generation_diffusion_unet", |
| "mask_generation_scale_factor": "@mask_generation_scale_factor", |
| "mask_generation_noise_scheduler": "@mask_generation_noise_scheduler", |
| "controllable_anatomy_size": "@controllable_anatomy_size", |
| "image_output_ext": "@image_output_ext", |
| "label_output_ext": "@label_output_ext", |
| "real_img_median_statistics": "@real_img_median_statistics_file", |
| "device": "@device", |
| "latent_shape": "@latent_shape", |
| "mask_generation_latent_shape": "@mask_generation_latent_shape", |
| "output_size": "@output_size", |
| "spacing": "@spacing", |
| "output_dir": "@output_dir", |
| "num_inference_steps": "@num_inference_steps", |
| "mask_generation_num_inference_steps": "@mask_generation_num_inference_steps", |
| "random_seed": "@random_seed", |
| "autoencoder_sliding_window_infer_size": "@autoencoder_sliding_window_infer_size", |
| "autoencoder_sliding_window_infer_overlap": "@autoencoder_sliding_window_infer_overlap" |
| }, |
| "run": [ |
| "$monai.utils.set_determinism(seed=@random_seed)", |
| "$@ldm_sampler.sample_multiple_images(@num_output_samples)" |
| ], |
| "evaluator": null |
| } |
|
|