import argparse def get_arguments() -> argparse.Namespace: parser = argparse.ArgumentParser() # Inputs parser.add_argument( "-p", "--prompt", type=str, help="The prompt for the desired editing", required=True ) parser.add_argument( "-i", "--init_image", type=str, help="The path to the source image input", required=True ) parser.add_argument( "-i2", "--init_image_2", type=str, help="The path to the source image input", required=True ) parser.add_argument("--mask", type=str, help="The path to the mask to edit with", default=None) # Diffusion parser.add_argument( "--skip_timesteps", type=int, help="How many steps to skip during the diffusion.", default=25, ) parser.add_argument( "--local_clip_guided_diffusion", help="Indicator for using local CLIP guided diffusion (for baseline comparison)", action="store_true", dest="local_clip_guided_diffusion", ) parser.add_argument( "--ddim", help="Indicator for using DDIM instead of DDPM", action="store_true", ) # For more details read guided-diffusion/guided_diffusion/respace.py parser.add_argument( "--timestep_respacing", type=str, help="How to respace the intervals of the diffusion process (number between 1 and 1000).", default="100", ) parser.add_argument( "--model_output_size", type=int, help="The resolution of the outputs of the diffusion model", default=256, choices=[256, 512], ) # Augmentations parser.add_argument("--aug_num", type=int, help="The number of augmentation", default=8) # Loss parser.add_argument( "--clip_guidance_lambda", type=float, help="Controls how much the image should look like the prompt", default=1000, ) parser.add_argument( "--range_lambda", type=float, help="Controls how far out of range RGB values are allowed to be", default=50, ) parser.add_argument( "--lpips_sim_lambda", type=float, help="The LPIPS similarity to the input image", default=1000, ) parser.add_argument( "--l2_sim_lambda", type=float, help="The L2 similarity to the input image", default=10000, ) parser.add_argument( "--background_preservation_loss", help="Indicator for using the background preservation loss", action="store_true", ) # Mask parser.add_argument( "--invert_mask", help="Indicator for mask inversion", action="store_true", dest="invert_mask", ) parser.add_argument( "--no_enforce_background", help="Indicator disabling the last background enforcement", action="store_false", dest="enforce_background", ) # Misc parser.add_argument("--seed", type=int, help="The random seed", default=404) parser.add_argument("--gpu_id", type=int, help="The GPU ID", default=0) parser.add_argument("--output_path", type=str, default="output") parser.add_argument( "-o", "--output_file", type=str, help="The filename to save, must be png", default="output.png", ) parser.add_argument("--iterations_num", type=int, help="The number of iterations", default=8) parser.add_argument( "--batch_size", type=int, help="The number number if images to sample each diffusion process", default=4, ) parser.add_argument( "--vid", help="Indicator for saving the video of the diffusion process", action="store_true", dest="save_video", ) parser.add_argument( "--export_assets", help="Indicator for saving raw assets of the prediction", action="store_true", dest="export_assets", ) parser.add_argument( "--image_guide", help="Indicator image or text", action="store_true", dest="image_guide", ) parser.add_argument( "--coarse_to_fine", help="Indicator mask from big to small", action="store_true", dest="coarse_to_fine", ) parser.add_argument( "--classifier_scale", type=float, help="Classifer scale for class guided", default=10., ) parser.add_argument( "--y", type=int, help="Target class for classifier guidence", default=0, ) parser.add_argument( "--class_cond", help="classifer conditioned for diffusion model or not", action="store_true", dest="class_cond", ) parser.add_argument( "--background_complex", type=float, help="BG complex guidance scale", default=0., ) parser.add_argument( "--final_save_root", type=str, help="Final save root", default="validation-generated/generated-with-25-steps-bg/final/", ) parser.add_argument( "--hard", help="hard or smooth", action="store_true", dest="hard", ) parser.add_argument( "--random_position", help="apply random position", action="store_true", dest="random_position", ) parser.add_argument( "--rotate_obj", help="apply random rotate to objects", action="store_true", dest="rotate_obj", ) parser.add_argument( "--angle", type=int, help="angle", default=0, ) args = parser.parse_args() print(args) return args