mirror of
https://github.com/invoke-ai/InvokeAI
synced 2024-08-30 20:32:17 +00:00
529 lines
20 KiB
Python
529 lines
20 KiB
Python
from typing import Optional
|
|
|
|
from pydantic import BaseModel
|
|
|
|
from invokeai.backend.model_manager.config import BaseModelType, ModelFormat, ModelType
|
|
|
|
|
|
class StarterModelWithoutDependencies(BaseModel):
|
|
description: str
|
|
source: str
|
|
name: str
|
|
base: BaseModelType
|
|
type: ModelType
|
|
format: Optional[ModelFormat] = None
|
|
is_installed: bool = False
|
|
|
|
|
|
class StarterModel(StarterModelWithoutDependencies):
|
|
# Optional list of model source dependencies that need to be installed before this model can be used
|
|
dependencies: Optional[list[StarterModelWithoutDependencies]] = None
|
|
|
|
|
|
sdxl_fp16_vae_fix = StarterModel(
|
|
name="sdxl-vae-fp16-fix",
|
|
base=BaseModelType.StableDiffusionXL,
|
|
source="madebyollin/sdxl-vae-fp16-fix",
|
|
description="SDXL VAE that works with FP16.",
|
|
type=ModelType.VAE,
|
|
)
|
|
|
|
ip_adapter_sd_image_encoder = StarterModel(
|
|
name="IP Adapter SD1.5 Image Encoder",
|
|
base=BaseModelType.StableDiffusion1,
|
|
source="InvokeAI/ip_adapter_sd_image_encoder",
|
|
description="IP Adapter SD Image Encoder",
|
|
type=ModelType.CLIPVision,
|
|
)
|
|
|
|
ip_adapter_sdxl_image_encoder = StarterModel(
|
|
name="IP Adapter SDXL Image Encoder",
|
|
base=BaseModelType.StableDiffusionXL,
|
|
source="InvokeAI/ip_adapter_sdxl_image_encoder",
|
|
description="IP Adapter SDXL Image Encoder",
|
|
type=ModelType.CLIPVision,
|
|
)
|
|
|
|
cyberrealistic_negative = StarterModel(
|
|
name="CyberRealistic Negative v3",
|
|
base=BaseModelType.StableDiffusion1,
|
|
source="https://huggingface.co/cyberdelia/CyberRealistic_Negative/resolve/main/CyberRealistic_Negative_v3.pt",
|
|
description="Negative embedding specifically for use with CyberRealistic.",
|
|
type=ModelType.TextualInversion,
|
|
)
|
|
|
|
t5_base_encoder = StarterModel(
|
|
name="t5_base_encoder",
|
|
base=BaseModelType.Any,
|
|
source="InvokeAI/t5-v1_1-xxl::bfloat16",
|
|
description="T5-XXL text encoder (used in FLUX pipelines). ~8GB",
|
|
type=ModelType.T5Encoder,
|
|
)
|
|
|
|
t5_8b_quantized_encoder = StarterModel(
|
|
name="t5_bnb_int8_quantized_encoder",
|
|
base=BaseModelType.Any,
|
|
source="InvokeAI/t5-v1_1-xxl::bnb_llm_int8",
|
|
description="T5-XXL text encoder with bitsandbytes LLM.int8() quantization (used in FLUX pipelines). ~5GB",
|
|
type=ModelType.T5Encoder,
|
|
format=ModelFormat.BnbQuantizedLlmInt8b,
|
|
)
|
|
|
|
clip_l_encoder = StarterModel(
|
|
name="clip-vit-large-patch14",
|
|
base=BaseModelType.Any,
|
|
source="InvokeAI/clip-vit-large-patch14-text-encoder::bfloat16",
|
|
description="CLIP-L text encoder (used in FLUX pipelines). ~250MB",
|
|
type=ModelType.CLIPEmbed,
|
|
)
|
|
|
|
flux_vae = StarterModel(
|
|
name="FLUX.1-schnell_ae",
|
|
base=BaseModelType.Flux,
|
|
source="black-forest-labs/FLUX.1-schnell::ae.safetensors",
|
|
description="FLUX VAE compatible with both schnell and dev variants.",
|
|
type=ModelType.VAE,
|
|
)
|
|
|
|
|
|
# List of starter models, displayed on the frontend.
|
|
# The order/sort of this list is not changed by the frontend - set it how you want it here.
|
|
STARTER_MODELS: list[StarterModel] = [
|
|
# region: Main
|
|
StarterModel(
|
|
name="FLUX Schnell (Quantized)",
|
|
base=BaseModelType.Flux,
|
|
source="InvokeAI/flux_schnell::transformer/bnb_nf4/flux1-schnell-bnb_nf4.safetensors",
|
|
description="FLUX schnell transformer quantized to bitsandbytes NF4 format. Total size with dependencies: ~14GB",
|
|
type=ModelType.Main,
|
|
dependencies=[t5_8b_quantized_encoder, flux_vae, clip_l_encoder],
|
|
),
|
|
StarterModel(
|
|
name="FLUX Dev (Quantized)",
|
|
base=BaseModelType.Flux,
|
|
source="InvokeAI/flux_dev::transformer/bnb_nf4/flux1-dev-bnb_nf4.safetensors",
|
|
description="FLUX dev transformer quantized to bitsandbytes NF4 format. Total size with dependencies: ~16GB",
|
|
type=ModelType.Main,
|
|
dependencies=[t5_8b_quantized_encoder, flux_vae, clip_l_encoder],
|
|
),
|
|
StarterModel(
|
|
name="FLUX Schnell",
|
|
base=BaseModelType.Flux,
|
|
source="InvokeAI/flux_schnell::transformer/base/flux1-schnell.safetensors",
|
|
description="FLUX schnell transformer in bfloat16. Total size with dependencies: ~33GB",
|
|
type=ModelType.Main,
|
|
dependencies=[t5_base_encoder, flux_vae, clip_l_encoder],
|
|
),
|
|
StarterModel(
|
|
name="FLUX Dev",
|
|
base=BaseModelType.Flux,
|
|
source="InvokeAI/flux_dev::transformer/base/flux1-dev.safetensors",
|
|
description="FLUX dev transformer in bfloat16. Total size with dependencies: ~34GB",
|
|
type=ModelType.Main,
|
|
dependencies=[t5_base_encoder, flux_vae, clip_l_encoder],
|
|
),
|
|
StarterModel(
|
|
name="CyberRealistic v4.1",
|
|
base=BaseModelType.StableDiffusion1,
|
|
source="https://huggingface.co/cyberdelia/CyberRealistic/resolve/main/CyberRealistic_V4.1_FP16.safetensors",
|
|
description="Photorealistic model. See other variants in HF repo 'cyberdelia/CyberRealistic'.",
|
|
type=ModelType.Main,
|
|
dependencies=[cyberrealistic_negative],
|
|
),
|
|
StarterModel(
|
|
name="ReV Animated",
|
|
base=BaseModelType.StableDiffusion1,
|
|
source="stablediffusionapi/rev-animated",
|
|
description="Fantasy and anime style images.",
|
|
type=ModelType.Main,
|
|
),
|
|
StarterModel(
|
|
name="Dreamshaper 8",
|
|
base=BaseModelType.StableDiffusion1,
|
|
source="Lykon/dreamshaper-8",
|
|
description="Popular versatile model.",
|
|
type=ModelType.Main,
|
|
),
|
|
StarterModel(
|
|
name="Dreamshaper 8 (inpainting)",
|
|
base=BaseModelType.StableDiffusion1,
|
|
source="Lykon/dreamshaper-8-inpainting",
|
|
description="Inpainting version of Dreamshaper 8.",
|
|
type=ModelType.Main,
|
|
),
|
|
StarterModel(
|
|
name="Deliberate v5",
|
|
base=BaseModelType.StableDiffusion1,
|
|
source="https://huggingface.co/XpucT/Deliberate/resolve/main/Deliberate_v5.safetensors",
|
|
description="Popular versatile model",
|
|
type=ModelType.Main,
|
|
),
|
|
StarterModel(
|
|
name="Deliberate v5 (inpainting)",
|
|
base=BaseModelType.StableDiffusion1,
|
|
source="https://huggingface.co/XpucT/Deliberate/resolve/main/Deliberate_v5-inpainting.safetensors",
|
|
description="Inpainting version of Deliberate v5.",
|
|
type=ModelType.Main,
|
|
),
|
|
StarterModel(
|
|
name="Juggernaut XL v9",
|
|
base=BaseModelType.StableDiffusionXL,
|
|
source="RunDiffusion/Juggernaut-XL-v9",
|
|
description="Photograph-focused model.",
|
|
type=ModelType.Main,
|
|
dependencies=[sdxl_fp16_vae_fix],
|
|
),
|
|
StarterModel(
|
|
name="Dreamshaper XL v2 Turbo",
|
|
base=BaseModelType.StableDiffusionXL,
|
|
source="Lykon/dreamshaper-xl-v2-turbo",
|
|
description="For turbo, use CFG Scale 2, 4-8 steps, DPM++ SDE Karras. For non-turbo, use CFG Scale 6, 20-40 steps, DPM++ 2M SDE Karras.",
|
|
type=ModelType.Main,
|
|
dependencies=[sdxl_fp16_vae_fix],
|
|
),
|
|
StarterModel(
|
|
name="SDXL Refiner",
|
|
base=BaseModelType.StableDiffusionXLRefiner,
|
|
source="stabilityai/stable-diffusion-xl-refiner-1.0",
|
|
description="The OG Stable Diffusion XL refiner model.",
|
|
type=ModelType.Main,
|
|
dependencies=[sdxl_fp16_vae_fix],
|
|
),
|
|
# endregion
|
|
# region VAE
|
|
sdxl_fp16_vae_fix,
|
|
flux_vae,
|
|
# endregion
|
|
# region LoRA
|
|
StarterModel(
|
|
name="Alien Style",
|
|
base=BaseModelType.StableDiffusionXL,
|
|
source="https://huggingface.co/RalFinger/alien-style-lora-sdxl/resolve/main/alienzkin-sdxl.safetensors",
|
|
description="Futuristic, intricate alien styles. Trigger with 'alienzkin'.",
|
|
type=ModelType.LoRA,
|
|
),
|
|
StarterModel(
|
|
name="Noodles Style",
|
|
base=BaseModelType.StableDiffusionXL,
|
|
source="https://huggingface.co/RalFinger/noodles-lora-sdxl/resolve/main/noodlez-sdxl.safetensors",
|
|
description="Never-ending, no-holds-barred, noodle nightmare. Trigger with 'noodlez'.",
|
|
type=ModelType.LoRA,
|
|
),
|
|
# endregion
|
|
# region TI
|
|
StarterModel(
|
|
name="EasyNegative",
|
|
base=BaseModelType.StableDiffusion1,
|
|
source="https://huggingface.co/embed/EasyNegative/resolve/main/EasyNegative.safetensors",
|
|
description="A textual inversion to use in the negative prompt to reduce bad anatomy",
|
|
type=ModelType.TextualInversion,
|
|
),
|
|
# endregion
|
|
# region IP Adapter
|
|
StarterModel(
|
|
name="IP Adapter",
|
|
base=BaseModelType.StableDiffusion1,
|
|
source="https://huggingface.co/InvokeAI/ip_adapter_sd15/resolve/main/ip-adapter_sd15.safetensors",
|
|
description="IP-Adapter for SD 1.5 models",
|
|
type=ModelType.IPAdapter,
|
|
dependencies=[ip_adapter_sd_image_encoder],
|
|
),
|
|
StarterModel(
|
|
name="IP Adapter Plus",
|
|
base=BaseModelType.StableDiffusion1,
|
|
source="https://huggingface.co/InvokeAI/ip_adapter_plus_sd15/resolve/main/ip-adapter-plus_sd15.safetensors",
|
|
description="Refined IP-Adapter for SD 1.5 models",
|
|
type=ModelType.IPAdapter,
|
|
dependencies=[ip_adapter_sd_image_encoder],
|
|
),
|
|
StarterModel(
|
|
name="IP Adapter Plus Face",
|
|
base=BaseModelType.StableDiffusion1,
|
|
source="https://huggingface.co/InvokeAI/ip_adapter_plus_face_sd15/resolve/main/ip-adapter-plus-face_sd15.safetensors",
|
|
description="Refined IP-Adapter for SD 1.5 models, adapted for faces",
|
|
type=ModelType.IPAdapter,
|
|
dependencies=[ip_adapter_sd_image_encoder],
|
|
),
|
|
StarterModel(
|
|
name="IP Adapter SDXL",
|
|
base=BaseModelType.StableDiffusionXL,
|
|
source="https://huggingface.co/InvokeAI/ip_adapter_sdxl_vit_h/resolve/main/ip-adapter_sdxl_vit-h.safetensors",
|
|
description="IP-Adapter for SDXL models",
|
|
type=ModelType.IPAdapter,
|
|
dependencies=[ip_adapter_sdxl_image_encoder],
|
|
),
|
|
# endregion
|
|
# region ControlNet
|
|
StarterModel(
|
|
name="QRCode Monster v2 (SD1.5)",
|
|
base=BaseModelType.StableDiffusion1,
|
|
source="monster-labs/control_v1p_sd15_qrcode_monster::v2",
|
|
description="ControlNet model that generates scannable creative QR codes",
|
|
type=ModelType.ControlNet,
|
|
),
|
|
StarterModel(
|
|
name="QRCode Monster (SDXL)",
|
|
base=BaseModelType.StableDiffusionXL,
|
|
source="monster-labs/control_v1p_sdxl_qrcode_monster",
|
|
description="ControlNet model that generates scannable creative QR codes",
|
|
type=ModelType.ControlNet,
|
|
),
|
|
StarterModel(
|
|
name="canny",
|
|
base=BaseModelType.StableDiffusion1,
|
|
source="lllyasviel/control_v11p_sd15_canny",
|
|
description="ControlNet weights trained on sd-1.5 with canny conditioning.",
|
|
type=ModelType.ControlNet,
|
|
),
|
|
StarterModel(
|
|
name="inpaint",
|
|
base=BaseModelType.StableDiffusion1,
|
|
source="lllyasviel/control_v11p_sd15_inpaint",
|
|
description="ControlNet weights trained on sd-1.5 with canny conditioning, inpaint version",
|
|
type=ModelType.ControlNet,
|
|
),
|
|
StarterModel(
|
|
name="mlsd",
|
|
base=BaseModelType.StableDiffusion1,
|
|
source="lllyasviel/control_v11p_sd15_mlsd",
|
|
description="ControlNet weights trained on sd-1.5 with canny conditioning, MLSD version",
|
|
type=ModelType.ControlNet,
|
|
),
|
|
StarterModel(
|
|
name="depth",
|
|
base=BaseModelType.StableDiffusion1,
|
|
source="lllyasviel/control_v11f1p_sd15_depth",
|
|
description="ControlNet weights trained on sd-1.5 with depth conditioning",
|
|
type=ModelType.ControlNet,
|
|
),
|
|
StarterModel(
|
|
name="normal_bae",
|
|
base=BaseModelType.StableDiffusion1,
|
|
source="lllyasviel/control_v11p_sd15_normalbae",
|
|
description="ControlNet weights trained on sd-1.5 with normalbae image conditioning",
|
|
type=ModelType.ControlNet,
|
|
),
|
|
StarterModel(
|
|
name="seg",
|
|
base=BaseModelType.StableDiffusion1,
|
|
source="lllyasviel/control_v11p_sd15_seg",
|
|
description="ControlNet weights trained on sd-1.5 with seg image conditioning",
|
|
type=ModelType.ControlNet,
|
|
),
|
|
StarterModel(
|
|
name="lineart",
|
|
base=BaseModelType.StableDiffusion1,
|
|
source="lllyasviel/control_v11p_sd15_lineart",
|
|
description="ControlNet weights trained on sd-1.5 with lineart image conditioning",
|
|
type=ModelType.ControlNet,
|
|
),
|
|
StarterModel(
|
|
name="lineart_anime",
|
|
base=BaseModelType.StableDiffusion1,
|
|
source="lllyasviel/control_v11p_sd15s2_lineart_anime",
|
|
description="ControlNet weights trained on sd-1.5 with anime image conditioning",
|
|
type=ModelType.ControlNet,
|
|
),
|
|
StarterModel(
|
|
name="openpose",
|
|
base=BaseModelType.StableDiffusion1,
|
|
source="lllyasviel/control_v11p_sd15_openpose",
|
|
description="ControlNet weights trained on sd-1.5 with openpose image conditioning",
|
|
type=ModelType.ControlNet,
|
|
),
|
|
StarterModel(
|
|
name="scribble",
|
|
base=BaseModelType.StableDiffusion1,
|
|
source="lllyasviel/control_v11p_sd15_scribble",
|
|
description="ControlNet weights trained on sd-1.5 with scribble image conditioning",
|
|
type=ModelType.ControlNet,
|
|
),
|
|
StarterModel(
|
|
name="softedge",
|
|
base=BaseModelType.StableDiffusion1,
|
|
source="lllyasviel/control_v11p_sd15_softedge",
|
|
description="ControlNet weights trained on sd-1.5 with soft edge conditioning",
|
|
type=ModelType.ControlNet,
|
|
),
|
|
StarterModel(
|
|
name="shuffle",
|
|
base=BaseModelType.StableDiffusion1,
|
|
source="lllyasviel/control_v11e_sd15_shuffle",
|
|
description="ControlNet weights trained on sd-1.5 with shuffle image conditioning",
|
|
type=ModelType.ControlNet,
|
|
),
|
|
StarterModel(
|
|
name="tile",
|
|
base=BaseModelType.StableDiffusion1,
|
|
source="lllyasviel/control_v11f1e_sd15_tile",
|
|
description="ControlNet weights trained on sd-1.5 with tiled image conditioning",
|
|
type=ModelType.ControlNet,
|
|
),
|
|
StarterModel(
|
|
name="ip2p",
|
|
base=BaseModelType.StableDiffusion1,
|
|
source="lllyasviel/control_v11e_sd15_ip2p",
|
|
description="ControlNet weights trained on sd-1.5 with ip2p conditioning.",
|
|
type=ModelType.ControlNet,
|
|
),
|
|
StarterModel(
|
|
name="canny-sdxl",
|
|
base=BaseModelType.StableDiffusionXL,
|
|
source="xinsir/controlNet-canny-sdxl-1.0",
|
|
description="ControlNet weights trained on sdxl-1.0 with canny conditioning, by Xinsir.",
|
|
type=ModelType.ControlNet,
|
|
),
|
|
StarterModel(
|
|
name="depth-sdxl",
|
|
base=BaseModelType.StableDiffusionXL,
|
|
source="diffusers/controlNet-depth-sdxl-1.0",
|
|
description="ControlNet weights trained on sdxl-1.0 with depth conditioning.",
|
|
type=ModelType.ControlNet,
|
|
),
|
|
StarterModel(
|
|
name="softedge-dexined-sdxl",
|
|
base=BaseModelType.StableDiffusionXL,
|
|
source="SargeZT/controlNet-sd-xl-1.0-softedge-dexined",
|
|
description="ControlNet weights trained on sdxl-1.0 with dexined soft edge preprocessing.",
|
|
type=ModelType.ControlNet,
|
|
),
|
|
StarterModel(
|
|
name="depth-16bit-zoe-sdxl",
|
|
base=BaseModelType.StableDiffusionXL,
|
|
source="SargeZT/controlNet-sd-xl-1.0-depth-16bit-zoe",
|
|
description="ControlNet weights trained on sdxl-1.0 with Zoe's preprocessor (16 bits).",
|
|
type=ModelType.ControlNet,
|
|
),
|
|
StarterModel(
|
|
name="depth-zoe-sdxl",
|
|
base=BaseModelType.StableDiffusionXL,
|
|
source="diffusers/controlNet-zoe-depth-sdxl-1.0",
|
|
description="ControlNet weights trained on sdxl-1.0 with Zoe's preprocessor (32 bits).",
|
|
type=ModelType.ControlNet,
|
|
),
|
|
StarterModel(
|
|
name="openpose-sdxl",
|
|
base=BaseModelType.StableDiffusionXL,
|
|
source="xinsir/controlNet-openpose-sdxl-1.0",
|
|
description="ControlNet weights trained on sdxl-1.0 compatible with the DWPose processor by Xinsir.",
|
|
type=ModelType.ControlNet,
|
|
),
|
|
StarterModel(
|
|
name="scribble-sdxl",
|
|
base=BaseModelType.StableDiffusionXL,
|
|
source="xinsir/controlNet-scribble-sdxl-1.0",
|
|
description="ControlNet weights trained on sdxl-1.0 compatible with various lineart processors and black/white sketches by Xinsir.",
|
|
type=ModelType.ControlNet,
|
|
),
|
|
StarterModel(
|
|
name="tile-sdxl",
|
|
base=BaseModelType.StableDiffusionXL,
|
|
source="xinsir/controlNet-tile-sdxl-1.0",
|
|
description="ControlNet weights trained on sdxl-1.0 with tiled image conditioning",
|
|
type=ModelType.ControlNet,
|
|
),
|
|
# endregion
|
|
# region T2I Adapter
|
|
StarterModel(
|
|
name="canny-sd15",
|
|
base=BaseModelType.StableDiffusion1,
|
|
source="TencentARC/t2iadapter_canny_sd15v2",
|
|
description="T2I Adapter weights trained on sd-1.5 with canny conditioning.",
|
|
type=ModelType.T2IAdapter,
|
|
),
|
|
StarterModel(
|
|
name="sketch-sd15",
|
|
base=BaseModelType.StableDiffusion1,
|
|
source="TencentARC/t2iadapter_sketch_sd15v2",
|
|
description="T2I Adapter weights trained on sd-1.5 with sketch conditioning.",
|
|
type=ModelType.T2IAdapter,
|
|
),
|
|
StarterModel(
|
|
name="depth-sd15",
|
|
base=BaseModelType.StableDiffusion1,
|
|
source="TencentARC/t2iadapter_depth_sd15v2",
|
|
description="T2I Adapter weights trained on sd-1.5 with depth conditioning.",
|
|
type=ModelType.T2IAdapter,
|
|
),
|
|
StarterModel(
|
|
name="zoedepth-sd15",
|
|
base=BaseModelType.StableDiffusion1,
|
|
source="TencentARC/t2iadapter_zoedepth_sd15v1",
|
|
description="T2I Adapter weights trained on sd-1.5 with zoe depth conditioning.",
|
|
type=ModelType.T2IAdapter,
|
|
),
|
|
StarterModel(
|
|
name="canny-sdxl",
|
|
base=BaseModelType.StableDiffusionXL,
|
|
source="TencentARC/t2i-adapter-canny-sdxl-1.0",
|
|
description="T2I Adapter weights trained on sdxl-1.0 with canny conditioning.",
|
|
type=ModelType.T2IAdapter,
|
|
),
|
|
StarterModel(
|
|
name="zoedepth-sdxl",
|
|
base=BaseModelType.StableDiffusionXL,
|
|
source="TencentARC/t2i-adapter-depth-zoe-sdxl-1.0",
|
|
description="T2I Adapter weights trained on sdxl-1.0 with zoe depth conditioning.",
|
|
type=ModelType.T2IAdapter,
|
|
),
|
|
StarterModel(
|
|
name="lineart-sdxl",
|
|
base=BaseModelType.StableDiffusionXL,
|
|
source="TencentARC/t2i-adapter-lineart-sdxl-1.0",
|
|
description="T2I Adapter weights trained on sdxl-1.0 with lineart conditioning.",
|
|
type=ModelType.T2IAdapter,
|
|
),
|
|
StarterModel(
|
|
name="sketch-sdxl",
|
|
base=BaseModelType.StableDiffusionXL,
|
|
source="TencentARC/t2i-adapter-sketch-sdxl-1.0",
|
|
description="T2I Adapter weights trained on sdxl-1.0 with sketch conditioning.",
|
|
type=ModelType.T2IAdapter,
|
|
),
|
|
# endregion
|
|
# region SpandrelImageToImage
|
|
StarterModel(
|
|
name="RealESRGAN_x4plus_anime_6B",
|
|
base=BaseModelType.Any,
|
|
source="https://github.com/xinntao/Real-ESRGAN/releases/download/v0.2.2.4/RealESRGAN_x4plus_anime_6B.pth",
|
|
description="A Real-ESRGAN 4x upscaling model (optimized for anime images).",
|
|
type=ModelType.SpandrelImageToImage,
|
|
),
|
|
StarterModel(
|
|
name="RealESRGAN_x4plus",
|
|
base=BaseModelType.Any,
|
|
source="https://github.com/xinntao/Real-ESRGAN/releases/download/v0.1.0/RealESRGAN_x4plus.pth",
|
|
description="A Real-ESRGAN 4x upscaling model (general-purpose).",
|
|
type=ModelType.SpandrelImageToImage,
|
|
),
|
|
StarterModel(
|
|
name="ESRGAN_SRx4_DF2KOST_official",
|
|
base=BaseModelType.Any,
|
|
source="https://github.com/xinntao/Real-ESRGAN/releases/download/v0.1.1/ESRGAN_SRx4_DF2KOST_official-ff704c30.pth",
|
|
description="The official ESRGAN 4x upscaling model.",
|
|
type=ModelType.SpandrelImageToImage,
|
|
),
|
|
StarterModel(
|
|
name="RealESRGAN_x2plus",
|
|
base=BaseModelType.Any,
|
|
source="https://github.com/xinntao/Real-ESRGAN/releases/download/v0.2.1/RealESRGAN_x2plus.pth",
|
|
description="A Real-ESRGAN 2x upscaling model (general-purpose).",
|
|
type=ModelType.SpandrelImageToImage,
|
|
),
|
|
StarterModel(
|
|
name="SwinIR - realSR_BSRGAN_DFOWMFC_s64w8_SwinIR-L_x4_GAN",
|
|
base=BaseModelType.Any,
|
|
source="https://github.com/JingyunLiang/SwinIR/releases/download/v0.0/003_realSR_BSRGAN_DFOWMFC_s64w8_SwinIR-L_x4_GAN-with-dict-keys-params-and-params_ema.pth",
|
|
description="A SwinIR 4x upscaling model.",
|
|
type=ModelType.SpandrelImageToImage,
|
|
),
|
|
# endregion
|
|
# region TextEncoders
|
|
t5_base_encoder,
|
|
t5_8b_quantized_encoder,
|
|
clip_l_encoder,
|
|
# endregion
|
|
]
|
|
|
|
assert len(STARTER_MODELS) == len({m.source for m in STARTER_MODELS}), "Duplicate starter models"
|