project-monai's picture
Upload cxr_image_synthesis_latent_diffusion_model version 1.0.1
f7ea149 verified
{
"imports": [
"$import torch",
"$from datetime import datetime",
"$from pathlib import Path",
"$from transformers import CLIPTextModel",
"$from transformers import CLIPTokenizer"
],
"bundle_root": ".",
"dataset_dir": "",
"dataset": "",
"evaluator": "",
"inferer": "",
"load_old": 1,
"model_dir": "$@bundle_root + '/models'",
"output_dir": "$@bundle_root + '/output'",
"create_output_dir": "$Path(@output_dir).mkdir(exist_ok=True)",
"prompt": "Big right-sided pleural effusion",
"prompt_list": "$['', @prompt]",
"guidance_scale": 7.0,
"device": "$torch.device('cuda:0' if torch.cuda.is_available() else 'cpu')",
"tokenizer": "$CLIPTokenizer.from_pretrained(\"stabilityai/stable-diffusion-2-1-base\", subfolder=\"tokenizer\")",
"text_encoder": "$CLIPTextModel.from_pretrained(\"stabilityai/stable-diffusion-2-1-base\", subfolder=\"text_encoder\")",
"tokenized_prompt": "$@tokenizer(@prompt_list, padding=\"max_length\", max_length=@tokenizer.model_max_length, truncation=True,return_tensors=\"pt\")",
"prompt_embeds": "$@text_encoder(@tokenized_prompt.input_ids.squeeze(1))[0].to(@device)",
"out_file": "$datetime.now().strftime('sample_%H%M%S_%d%m%Y')",
"autoencoder_def": {
"_target_": "monai.networks.nets.AutoencoderKL",
"spatial_dims": 2,
"in_channels": 1,
"out_channels": 1,
"latent_channels": 3,
"channels": [
64,
128,
128,
128
],
"num_res_blocks": 2,
"norm_num_groups": 32,
"norm_eps": 1e-06,
"attention_levels": [
false,
false,
false,
false
],
"with_encoder_nonlocal_attn": false,
"with_decoder_nonlocal_attn": false
},
"network_def": "@diffusion_def",
"load_autoencoder_path": "$@model_dir + '/autoencoder.pt'",
"load_autoencoder_func": "$@autoencoder_def.load_old_state_dict if bool(@load_old) else @autoencoder_def.load_state_dict",
"load_autoencoder": "$@load_autoencoder_func(torch.load(@load_autoencoder_path))",
"autoencoder": "$@autoencoder_def.to(@device)",
"diffusion_def": {
"_target_": "monai.networks.nets.DiffusionModelUNet",
"spatial_dims": 2,
"in_channels": 3,
"out_channels": 3,
"channels": [
256,
512,
768
],
"num_res_blocks": 2,
"attention_levels": [
false,
true,
true
],
"norm_num_groups": 32,
"norm_eps": 1e-06,
"resblock_updown": false,
"num_head_channels": [
0,
512,
768
],
"with_conditioning": true,
"transformer_num_layers": 1,
"cross_attention_dim": 1024
},
"load_diffusion_path": "$@model_dir + '/model.pt'",
"load_diffusion_func": "$@diffusion_def.load_old_state_dict if bool(@load_old) else @diffusion_def.load_state_dict",
"load_diffusion": "$@load_diffusion_func(torch.load(@load_diffusion_path))",
"diffusion": "$@diffusion_def.to(@device)",
"scheduler": {
"_target_": "monai.networks.schedulers.DDIMScheduler",
"_requires_": [
"@load_diffusion",
"@load_autoencoder"
],
"beta_start": 0.0015,
"beta_end": 0.0205,
"num_train_timesteps": 1000,
"schedule": "scaled_linear_beta",
"prediction_type": "v_prediction",
"clip_sample": false
},
"noise": "$torch.randn((1, 3, 64, 64)).to(@device)",
"set_timesteps": "$@scheduler.set_timesteps(num_inference_steps=50)",
"sampler": {
"_target_": "scripts.sampler.Sampler",
"_requires_": "@set_timesteps"
},
"sample": "$@sampler.sampling_fn(@noise, @autoencoder, @diffusion, @scheduler, @prompt_embeds)",
"saver": {
"_target_": "scripts.saver.JPGSaver",
"_requires_": "@create_output_dir",
"output_dir": "@output_dir"
},
"run": "$@saver.save(@sample, @out_file)",
"save": "$torch.save(@sample, @output_dir + '/' + @out_file + '.pt')"
}