新一代文生图模型Stable Cascade,碾压SDXL!

2024-02-1609:08:04人工智能与大数据Comments235 views字数 3713阅读模式

StabilityAI在春节期间又整活了,发布了新的一代文生图模型Stable Cascade,Stable Cascade是基于Wuerstchen架构包含三阶段的文生图扩散模型,相比Stable Diffusion XL,它不仅更快而且效果更好。新一代文生图模型Stable Cascade,碾压SDXL!目前Stable Cascade的模型和代码(包括推理和训练)已经开源:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ai/59934.html

  • model:https://huggingface.co/stabilityai/stable-cascade
  • code:https://github.com/Stability-AI/StableCascade/tree/master

首先我们简单介绍一个Stable Cascade的模型架构,Stable Cascade是基于之前的Wuerstchen架构,这个模型包含3个阶段,如下所示:新一代文生图模型Stable Cascade,碾压SDXL!这里最重要的一个阶段是Stage C,它是一个基于文本作为条件来生成图像的latents的扩散模型,只不过这里的latents和SD中的latents有些区别,之前的SD是采用一个VAE将图像编码成下采样8x的latents,而这里是采用一个Semantic Compressor来将3×1024×1024的图像压缩成16×24×24的latents,空间下采样约42x,这比SD的VAE要狠的多(不过特征维度高了)。这里的Semantic Compressor采用的是EfficientNetV2-S模型:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ai/59934.html

class EfficientNetEncoder(nn.Module):
    def __init__(self, c_latent=16):
        super().__init__()
        self.backbone = torchvision.models.efficientnet_v2_s(weights='DEFAULT').features.eval()
        self.mapper = nn.Sequential(
            nn.Conv2d(1280, c_latent, kernel_size=1, bias=False),
            nn.BatchNorm2d(c_latent, affine=False),  # then normalize them to have mean 0 and std 1
        )

    def forward(self, x):
        return self.mapper(self.backbone(x))

对于3x1024x1024的图像,首先resize到3x768x768,然后经过EfficientNetV2-S后得到1280x24x24的特征,这里再额外加了一个Conv和BN层将特征映射为16x24x24。Stage C的text encoder采用的是OpenCLIP ViT-G,这里是提取了token embeddings(77x1280)以及全局pooled embedding(1x1280),其中pooled embedding映射为4个token特征,和token embeddings拼接在一起送入Stage C的UNet作为条件,这里采用的条件机制还是通过cross- attention。此外,Stage C在训练过程中还引入CLIP image encoder的image embedding作为条件,这里是采用openai CLIP ViT-L提取的image embedding,然后映射为4个tokens和text tokens拼接在一起,不过训练过程中对image embedding采用比较大的drop比例(90%)。CLIP image embedding的引入可以让模型类似DALLE-2那样支持image variation。从本质上看,这里的Stage C其实就是想当于一个SD主模型(UNet),只不过采用了不同的autoencoder所提取的latents,相比较而言,Stage C采用了压缩率更大的latents,这也使得模型更高效。这里开源的Stage C也有两个不同大小的版本:一个是1B,一个是3.6B,但是肯定是3.6B的模型效果更好,也是主推模型。Stage C可以将文本转成图像的latents,要想生成最终的图像,还需要解码器,这就是Stage B和Stage A了。Stage B和Stage A和在一起,就是一个latent decoder,它是将16x24x24的latents解码为一个3x1024x1024的图像,从功能上就相当于SD中的VAE decoder。先说一下这里的Stage A,它是一个下采样4x的VQGAN模型,它和SD的VAE一样,只不过这里的下采样率是2x。而Stage B是一个latent diffusion模型,这里的latent就是Stage A所编码的latent。Stage B要将Stage C生成的latents解码成图像,所以要引入Stage A所生成的latents作为条件,这里是直接将latents插值然后加到Stage B的输入上,同时还额外因为了text作为condition。这样Stage B可以根据Stage C生成的latents(额外的加上text)得到VQGAN的latent,然后通过VQGAN的decoder(Stage A)得到最终的图像。Stage B也有两个版本,一个参数量为700M,一个是更大为1.5B,两者效果差不多,但是后者能更好的重建细节。Stage A非扩散模型,参数量只有20M,所以只有一个版本。Stage B + Stage A的latent decoder基本可以实现高质量的图像重建(上:原图,下:重建图像):新一代文生图模型Stable Cascade,碾压SDXL!新一代文生图模型Stable Cascade,碾压SDXL!总结来看,Stable Cascade是两个latent diffusion模型加一个小的VQGAN模型,其中一个latent diffusion起到生成的作用,而另外一个latent diffusion加VQGAN起到重建的作用。这里大家可能会想,为啥还需要用一个扩散模型来解码,而不是像SD那样直接用一个小的decoder,主要是因为42x的下采样率还是损失比较大,需要一个生成能力更强的扩散模型来解码(这里公开了一个小的卷积网络来https://github.com/Stability-AI/StableCascade/blob/master/modules/previewer.py来解码为192x192大小的预览图像),其实VAE也是有损压缩的,所以DALLE-3也搞出来一个基于扩散模型的latent decoder。此外,Stable Cascade的三阶段推理顺序是:Stage C -> Stage B -> Stage A,那么为啥三个解码的模型序号是反的,我猜这是因为序号是按照训练顺序来的,首先要训练Stage A,然后是要训练Stage B,注意训练Stage B的时候同时要把Semantic Compressor一起训练(EfficientNetV2-S预训练模型是基于ImageNet的,并不能精准编码图像语义),然后固定emantic Compressor训练Stage C。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ai/59934.html

在模型对比上,Stable Cascade在文本一致性和图像质量上是优于 Playground v2, SDXL, SDXL Turbo和Würstchen v2。新一代文生图模型Stable Cascade,碾压SDXL!虽然Stable Cascade是三阶段模型,但是由于采用更大的压缩率,所以反而更高效,比SDXL要快得多。新一代文生图模型Stable Cascade,碾压SDXL!新一代文生图模型Stable Cascade,碾压SDXL!基础的Stable Cascade像SD那样支持文生图和图生图,还额外支持Image Variation。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ai/59934.html

  • Text-to-Image
新一代文生图模型Stable Cascade,碾压SDXL!
image.png
  • Image Variation
新一代文生图模型Stable Cascade,碾压SDXL!
image.png
  • Image-to-Image
新一代文生图模型Stable Cascade,碾压SDXL!
image.png

前面说过最核心的生成部分Stage C本质上来SD UNet是一样的,所以可以在Stage C上训练ControlNet和LoRA。目前官方放出了4个ControlNet模型:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ai/59934.html

  • Inpainting / Outpainting
新一代文生图模型Stable Cascade,碾压SDXL!
image.png
  • Face Identity(未放出,使用人脸识别模型特征,类似IP-Adapter-FaceID)
新一代文生图模型Stable Cascade,碾压SDXL!
image.png
  • Canny
新一代文生图模型Stable Cascade,碾压SDXL!
image.png
  • Super Resolution
新一代文生图模型Stable Cascade,碾压SDXL!

官方还给出了LoRA的训练示例:训练图像新一代文生图模型Stable Cascade,碾压SDXL!生成图像:Cinematic photo of a dog [fernando] wearing a space suit新一代文生图模型Stable Cascade,碾压SDXL!文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ai/59934.html

目前huggingface已经有一个Stable Cascade的在线demo,可以快速体验:https://huggingface.co/spaces/multimodalart/stable-cascade文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ai/59934.html

简单测试几个cases,生成的图像质量还可以,不过还是会出现属性混淆:新一代文生图模型Stable Cascade,碾压SDXL!新一代文生图模型Stable Cascade,碾压SDXL!新一代文生图模型Stable Cascade,碾压SDXL!新一代文生图模型Stable Cascade,碾压SDXL!文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ai/59934.html

参考

  • https://stability.ai/news/introducing-stable-cascade
  • https://huggingface.co/stabilityai/stable-cascade
文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ai/59934.html
  • 本站内容整理自互联网,仅提供信息存储空间服务,以方便学习之用。如对文章、图片、字体等版权有疑问,请在下方留言,管理员看到后,将第一时间进行处理。
  • 转载请务必保留本文链接:https://www.cainiaoxueyuan.com/ai/59934.html

Comment

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定