further improvements to initial load

- Migration process will not crash if duplicate model files are found,
  one in legacy location and the other in new location.
  The model in the legacy location will be deleted in this case.

- Added a hint to stable-diffusion-2.1 telling people it will work best
  with 768 pixel images.

- Added the anything-4.0 model.
This commit is contained in:
Lincoln Stein 2023-01-15 15:08:59 -05:00
parent 6fdbc1978d
commit f86c8b043c
2 changed files with 41 additions and 23 deletions

View File

@ -1,8 +1,13 @@
stable-diffusion-2.1: stable-diffusion-2.1-768:
description: Stable Diffusion version 2.1 diffusers model (5.21 GB) description: Stable Diffusion version 2.1 diffusers model, trained on 768x768 images (5.21 GB)
repo_id: stabilityai/stable-diffusion-2-1 repo_id: stabilityai/stable-diffusion-2-1
format: diffusers format: diffusers
recommended: True recommended: True
stable-diffusion-2.1-base:
description: Stable Diffusion version 2.1 diffusers base model, trained on 512x512 images (5.21 GB)
repo_id: stabilityai/stable-diffusion-2-1-base
format: diffusers
recommended: False
stable-diffusion-1.5: stable-diffusion-1.5:
description: Stable Diffusion version 1.5 weight file (4.27 GB) description: Stable Diffusion version 1.5 weight file (4.27 GB)
repo_id: runwayml/stable-diffusion-v1-5 repo_id: runwayml/stable-diffusion-v1-5
@ -10,10 +15,17 @@ stable-diffusion-1.5:
recommended: True recommended: True
vae: vae:
repo_id: stabilityai/sd-vae-ft-mse repo_id: stabilityai/sd-vae-ft-mse
stable-diffusion-1.4:
description: The original Stable Diffusion version 1.4 weight file (4.27 GB)
repo_id: CompVis/stable-diffusion-v1-4
recommended: False
format: diffusers
vae:
repo_id: stabilityai/sd-vae-ft-mse
width: 512 width: 512
height: 512 height: 512
inpainting-1.5: inpainting-1.5:
description: RunwayML SD 1.5 model optimized for inpainting (4.27 GB) description: RunwayML SD 1.5 model optimized for inpainting (ckpt version) (4.27 GB)
repo_id: runwayml/stable-diffusion-inpainting repo_id: runwayml/stable-diffusion-inpainting
config: v1-inpainting-inference.yaml config: v1-inpainting-inference.yaml
file: sd-v1-5-inpainting.ckpt file: sd-v1-5-inpainting.ckpt
@ -24,17 +36,13 @@ inpainting-1.5:
recommended: True recommended: True
width: 512 width: 512
height: 512 height: 512
stable-diffusion-1.4: waifu-diffusion-1.4:
description: The original Stable Diffusion version 1.4 weight file (4.27 GB) description: Latest waifu diffusion 1.4 (diffusers version)
repo_id: CompVis/stable-diffusion-v1-4
recommended: False
format: diffusers format: diffusers
vae: repo_id: hakurei/waifu-diffusion
repo_id: stabilityai/sd-vae-ft-mse recommended: True
width: 512
height: 512
waifu-diffusion-1.3: waifu-diffusion-1.3:
description: Stable Diffusion 1.4 fine tuned on anime-styled images (4.27 GB) description: Stable Diffusion 1.4 fine tuned on anime-styled images (ckpt version) (4.27 GB)
repo_id: hakurei/waifu-diffusion-v1-3 repo_id: hakurei/waifu-diffusion-v1-3
config: v1-inference.yaml config: v1-inference.yaml
file: model-epoch09-float32.ckpt file: model-epoch09-float32.ckpt
@ -52,10 +60,8 @@ trinart-2.0:
recommended: False recommended: False
vae: vae:
repo_id: stabilityai/sd-vae-ft-mse repo_id: stabilityai/sd-vae-ft-mse
width: 512
height: 512
trinart_characters-2.0: trinart_characters-2.0:
description: An SD model finetuned with 19.2M anime/manga style images (4.27 GB) description: An SD model finetuned with 19.2M anime/manga style images (ckpt version) (4.27 GB)
repo_id: naclbit/trinart_derrida_characters_v2_stable_diffusion repo_id: naclbit/trinart_derrida_characters_v2_stable_diffusion
config: v1-inference.yaml config: v1-inference.yaml
file: derrida_final.ckpt file: derrida_final.ckpt
@ -66,6 +72,11 @@ trinart_characters-2.0:
recommended: False recommended: False
width: 512 width: 512
height: 512 height: 512
anything-4.0:
description: High-quality, highly detailed anime style images with just a few prompts
format: diffusers
repo_id: andite/anything-v4.0
recommended: False
papercut-1.0: papercut-1.0:
description: SD 1.5 fine-tuned for papercut art (use "PaperCut" in your prompts) (2.13 GB) description: SD 1.5 fine-tuned for papercut art (use "PaperCut" in your prompts) (2.13 GB)
repo_id: Fictiverse/Stable_Diffusion_PaperCut_Model repo_id: Fictiverse/Stable_Diffusion_PaperCut_Model
@ -73,8 +84,6 @@ papercut-1.0:
vae: vae:
repo_id: stabilityai/sd-vae-ft-mse repo_id: stabilityai/sd-vae-ft-mse
recommended: False recommended: False
width: 512
height: 512
voxel_art-1.0: voxel_art-1.0:
description: Stable Diffusion trained on voxel art (use "VoxelArt" in your prompts) (4.27 GB) description: Stable Diffusion trained on voxel art (use "VoxelArt" in your prompts) (4.27 GB)
repo_id: Fictiverse/Stable_Diffusion_VoxelArt_Model repo_id: Fictiverse/Stable_Diffusion_VoxelArt_Model

View File

@ -753,16 +753,20 @@ class ModelManager(object):
print('** Legacy version <= 2.2.5 model directory layout detected. Reorganizing.') print('** Legacy version <= 2.2.5 model directory layout detected. Reorganizing.')
print('** This is a quick one-time operation.') print('** This is a quick one-time operation.')
from shutil import move from shutil import move, rmtree
# transformer files get moved into the hub directory # transformer files get moved into the hub directory
hub = models_dir / 'hub' hub = models_dir / 'hub'
os.makedirs(hub, exist_ok=True) os.makedirs(hub, exist_ok=True)
for model in legacy_locations: for model in legacy_locations:
source = models_dir / model source = models_dir / model
dest = hub / model.stem
print(f'** {source} => {dest}')
if source.exists(): if source.exists():
print(f'DEBUG: Moving {models_dir / model} into hub') if dest.exists():
move(models_dir / model, hub) rmtree(source)
else:
move(source, dest)
# anything else gets moved into the diffusers directory # anything else gets moved into the diffusers directory
diffusers = models_dir / 'diffusers' diffusers = models_dir / 'diffusers'
@ -773,7 +777,12 @@ class ModelManager(object):
if full_path.is_relative_to(hub) or full_path.is_relative_to(diffusers): if full_path.is_relative_to(hub) or full_path.is_relative_to(diffusers):
continue continue
if Path(dir).match('models--*--*'): if Path(dir).match('models--*--*'):
move(full_path,diffusers) dest = diffusers / dir
print(f'** {full_path} => {dest}')
if dest.exists():
rmtree(full_path)
else:
move(full_path,dest)
# now clean up by removing any empty directories # now clean up by removing any empty directories
empty = [root for root, dirs, files, in os.walk(models_dir) if not len(dirs) and not len(files)] empty = [root for root, dirs, files, in os.walk(models_dir) if not len(dirs) and not len(files)]