diff --git a/CHANGELOG.md b/CHANGELOG.md index d624a94a5..b727e8f13 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,9 @@ - **AnimateDiff** can now be used with *second pass* - enhance, upscale and hires your videos! - **IP Adapter** add support for `ip-adapter-plus_sd15`, `ip-adapter-plus-face_sd15` and `ip-adapter-full-face_sd15` additionally, ip-adapter can now be used in xyz-grid + - [Segmind Vega](https://huggingface.co/segmind/Segmind-Vega) support + - small and fast version of SDXL, only 3.1GB in size! + - select from networks -> reference - [Playground v1](https://huggingface.co/playgroundai/playground-v1), [Playground v2 256](https://huggingface.co/playgroundai/playground-v2-256px-base), [Playground v2 512](https://huggingface.co/playgroundai/playground-v2-512px-base), [Playground v2 1024](https://huggingface.co/playgroundai/playground-v2-1024px-aesthetic) model support - simply select from *networks -> reference* and use as usual - [DemoFusion](https://github.com/PRIS-CV/DemoFusion) run your SDXL generations at any resolution! diff --git a/README.md b/README.md index 132c8cbb6..12b571272 100644 --- a/README.md +++ b/README.md @@ -61,8 +61,9 @@ Additional models will be added as they become available and there is public int - [RunwayML Stable Diffusion](https://github.com/Stability-AI/stablediffusion/) 1.x and 2.x *(all variants)* - [StabilityAI Stable Diffusion XL](https://github.com/Stability-AI/generative-models) - [StabilityAI Stable Video Diffusion](https://huggingface.co/stabilityai/stable-video-diffusion-img2vid) Base and XT -- [Segmind SSD-1B](https://huggingface.co/segmind/SSD-1B) - [LCM: Latent Consistency Models](https://github.com/openai/consistency_models) +- [Segmind Vega](https://huggingface.co/segmind/Segmind-Vega) +- [Segmind SSD-1B](https://huggingface.co/segmind/SSD-1B) - [Kandinsky](https://github.com/ai-forever/Kandinsky-2) *2.1 and 2.2 and latest 3.0* - [PixArt-α XL 2](https://github.com/PixArt-alpha/PixArt-alpha) *Medium and Large* - [Warp Wuerstchen](https://huggingface.co/blog/wuertschen) diff --git a/html/reference.json b/html/reference.json index e8da810dd..09cb1d92f 100644 --- a/html/reference.json +++ b/html/reference.json @@ -34,6 +34,11 @@ "desc": "(SVD) Image-to-Video is a latent diffusion model trained to generate short video clips from an image conditioning. This model was trained to generate 25 frames at resolution 576x1024 given a context frame of the same size, finetuned from SVD Image-to-Video [14 frames]. We also finetune the widely used f8-decoder for temporal consistency.", "preview": "stabilityai--stable-video-diffusion-img2vid-xt.jpg" }, + "Segmind Vega": { + "path": "segmind/Segmind-Vega", + "desc": "The Segmind-Vega Model is a distilled version of the Stable Diffusion XL (SDXL), offering a remarkable 70% reduction in size and an impressive 100% speedup while retaining high-quality text-to-image generation capabilities. Trained on diverse datasets, including Grit and Midjourney scrape data, it excels at creating a wide range of visual content based on textual prompts. Employing a knowledge distillation strategy, Segmind-Vega leverages the teachings of several expert models, including SDXL, ZavyChromaXL, and JuggernautXL, to combine their strengths and produce compelling visual outputs.", + "preview": "segmind--Segmind-Vega.jpg" + }, "Segmind SSD-1B": { "path": "segmind/SSD-1B", "desc": "The Segmind Stable Diffusion Model (SSD-1B) offers a compact, efficient, and distilled version of the SDXL model. At 50% smaller and 60% faster than Stable Diffusion XL (SDXL), it provides quick and seamless performance without sacrificing image quality.", diff --git a/models/Reference/segmind--Segmind-Vega.jpg b/models/Reference/segmind--Segmind-Vega.jpg new file mode 100644 index 000000000..8356b0ae8 Binary files /dev/null and b/models/Reference/segmind--Segmind-Vega.jpg differ diff --git a/modules/images.py b/modules/images.py index db4d16e82..9b6d4cf67 100644 --- a/modules/images.py +++ b/modules/images.py @@ -657,7 +657,8 @@ def save_video_atomic(images, filename, video_type: str = 'none', duration: floa for i in range(len(video_frames)): img = cv2.cvtColor(video_frames[i], cv2.COLOR_RGB2BGR) video_writer.write(img) - shared.log.info(f'Save video: file="{filename}" frames={len(frames)} duration={duration} fourcc={fourcc}') + size = os.path.getsize(filename) + shared.log.info(f'Save video: file="{filename}" frames={len(frames)} duration={duration} fourcc={fourcc} size={size}') if video_type.lower() == 'gif' or video_type.lower() == 'png': append = images.copy() image = append.pop(0) @@ -672,7 +673,8 @@ def save_video_atomic(images, filename, video_type: str = 'none', duration: floa duration = 1000.0 * duration / frames, loop = 0 if loop else 1, ) - shared.log.info(f'Save video: file="{filename}" frames={len(append) + 1} duration={duration} loop={loop}') + size = os.path.getsize(filename) + shared.log.info(f'Save video: file="{filename}" frames={len(append) + 1} duration={duration} loop={loop} size={size}') def save_video(p, images, filename = None, video_type: str = 'none', duration: float = 2.0, loop: bool = False, interpolate: int = 0, scale: float = 1.0, pad: int = 1, change: float = 0.3): diff --git a/modules/sd_models.py b/modules/sd_models.py index 06d6632b0..6fe672b4f 100644 --- a/modules/sd_models.py +++ b/modules/sd_models.py @@ -634,6 +634,10 @@ def detect_pipeline(f: str, op: str = 'model', warning=True): if shared.backend == shared.Backend.ORIGINAL: warn(f'Model detected as SD XL instruct pix2pix model, but attempting to load using backend=original: {op}={f} size={size} MB') guess = 'Stable Diffusion XL Instruct' + elif size > 3138 and size < 3142: #3140 + if shared.backend == shared.Backend.ORIGINAL: + warn(f'Model detected as Segmind Vega model, but attempting to load using backend=original: {op}={f} size={size} MB') + guess = 'Stable Diffusion XL' else: guess = 'Stable Diffusion' # guess by name diff --git a/modules/ui_tempdir.py b/modules/ui_tempdir.py index 25f59125e..c21d321cd 100644 --- a/modules/ui_tempdir.py +++ b/modules/ui_tempdir.py @@ -68,7 +68,8 @@ def pil_to_temp_file(self, img: Image, dir: str, format="png") -> str: # pylint: with tempfile.NamedTemporaryFile(delete=False, suffix=".png", dir=dir) as tmp: name = tmp.name img.save(name, pnginfo=(metadata if use_metadata else None)) - shared.log.debug(f'Saving temp: image="{name}"') + size = os.path.getsize(name) + shared.log.debug(f'Saving temp: image="{name}" resolution={img.width}x{img.height} size={size}') params = ', '.join([f'{k}: {v}' for k, v in img.info.items()]) params = params[12:] if params.startswith('parameters: ') else params with open(os.path.join(paths.data_path, "params.txt"), "w", encoding="utf8") as file: