from frontend.webui.ui import start_webui import json from argparse import ArgumentParser import constants from backend.controlnet import controlnet_settings_from_dict from backend.models.gen_images import ImageFormat from backend.models.lcmdiffusion_setting import DiffusionTask from backend.upscale.tiled_upscale import generate_upscaled_image from constants import APP_VERSION, DEVICE from frontend.webui.image_variations_ui import generate_image_variations from models.interface_types import InterfaceType from paths import FastStableDiffusionPaths from PIL import Image from state import get_context, get_settings from utils import show_system_info from backend.device import get_device_name parser = ArgumentParser(description=f"FAST SD CPU {constants.APP_VERSION}") parser.add_argument( "-s", "--share", action="store_true", help="Create sharable link(Web UI)", required=False, ) group = parser.add_mutually_exclusive_group(required=False) group.add_argument( "-g", "--gui", action="store_true", help="Start desktop GUI", ) group.add_argument( "-w", "--webui", action="store_true", help="Start Web UI", ) group.add_argument( "-a", "--api", action="store_true", help="Start Web API server", ) group.add_argument( "-r", "--realtime", action="store_true", help="Start realtime inference UI(experimental)", ) group.add_argument( "-v", "--version", action="store_true", help="Version", ) parser.add_argument( "-b", "--benchmark", action="store_true", help="Run inference benchmark on the selected device", ) parser.add_argument( "--lcm_model_id", type=str, help="Model ID or path,Default stabilityai/sd-turbo", default="stabilityai/sd-turbo", ) parser.add_argument( "--openvino_lcm_model_id", type=str, help="OpenVINO Model ID or path,Default rupeshs/sd-turbo-openvino", default="rupeshs/sd-turbo-openvino", ) parser.add_argument( "--prompt", type=str, help="Describe the image you want to generate", default="", ) parser.add_argument( "--negative_prompt", type=str, help="Describe what you want to exclude from the generation", default="", ) parser.add_argument( "--image_height", type=int, help="Height of the image", default=512, ) parser.add_argument( "--image_width", type=int, help="Width of the image", default=512, ) parser.add_argument( "--inference_steps", type=int, help="Number of steps,default : 1", default=1, ) parser.add_argument( "--guidance_scale", type=float, help="Guidance scale,default : 1.0", default=1.0, ) parser.add_argument( "--number_of_images", type=int, help="Number of images to generate ,default : 1", default=1, ) parser.add_argument( "--seed", type=int, help="Seed,default : -1 (disabled) ", default=-1, ) parser.add_argument( "--use_openvino", action="store_true", help="Use OpenVINO model", ) parser.add_argument( "--use_offline_model", action="store_true", help="Use offline model", ) parser.add_argument( "--use_safety_checker", action="store_true", help="Use safety checker", ) parser.add_argument( "--use_lcm_lora", action="store_true", help="Use LCM-LoRA", ) parser.add_argument( "--base_model_id", type=str, help="LCM LoRA base model ID,Default Lykon/dreamshaper-8", default="Lykon/dreamshaper-8", ) parser.add_argument( "--lcm_lora_id", type=str, help="LCM LoRA model ID,Default latent-consistency/lcm-lora-sdv1-5", default="latent-consistency/lcm-lora-sdv1-5", ) parser.add_argument( "-i", "--interactive", action="store_true", help="Interactive CLI mode", ) parser.add_argument( "-t", "--use_tiny_auto_encoder", action="store_true", help="Use tiny auto encoder for SD (TAESD)", ) parser.add_argument( "-f", "--file", type=str, help="Input image for img2img mode", default="", ) parser.add_argument( "--img2img", action="store_true", help="img2img mode; requires input file via -f argument", ) parser.add_argument( "--batch_count", type=int, help="Number of sequential generations", default=1, ) parser.add_argument( "--strength", type=float, help="Denoising strength for img2img and Image variations", default=0.3, ) parser.add_argument( "--sdupscale", action="store_true", help="Tiled SD upscale,works only for the resolution 512x512,(2x upscale)", ) parser.add_argument( "--upscale", action="store_true", help="EDSR SD upscale ", ) parser.add_argument( "--custom_settings", type=str, help="JSON file containing custom generation settings", default=None, ) parser.add_argument( "--usejpeg", action="store_true", help="Images will be saved as JPEG format", ) parser.add_argument( "--noimagesave", action="store_true", help="Disable image saving", ) parser.add_argument( "--lora", type=str, help="LoRA model full path e.g D:\lora_models\CuteCartoon15V-LiberteRedmodModel-Cartoon-CuteCartoonAF.safetensors", default=None, ) parser.add_argument( "--lora_weight", type=float, help="LoRA adapter weight [0 to 1.0]", default=0.5, ) args = parser.parse_args() if args.version: print(APP_VERSION) exit() # parser.print_help() show_system_info() print(f"Using device : {constants.DEVICE}") if args.webui: app_settings = get_settings() else: app_settings = get_settings() print(f"Found {len(app_settings.lcm_models)} LCM models in config/lcm-models.txt") print( f"Found {len(app_settings.stable_diffsuion_models)} stable diffusion models in config/stable-diffusion-models.txt" ) print( f"Found {len(app_settings.lcm_lora_models)} LCM-LoRA models in config/lcm-lora-models.txt" ) print( f"Found {len(app_settings.openvino_lcm_models)} OpenVINO LCM models in config/openvino-lcm-models.txt" ) if args.noimagesave: app_settings.settings.generated_images.save_image = False else: app_settings.settings.generated_images.save_image = True print("Starting web UI mode") start_webui( args.share, )