中文sd:SkyPaint-AI-Diffusion

https://huggingface.co/SkyworkAIGC/SkyPainticon-default.png?t=N7T8https://huggingface.co/SkyworkAIGC/SkyPainthttps://github.com/SkyWorkAIGC/SkyPaint-AI-Diffusionicon-default.png?t=N7T8https://github.com/SkyWorkAIGC/SkyPaint-AI-Diffusion从model_index.json看,应该算是标准的sd1.5架构了。

{
  "_class_name": "StableDiffusionPipeline",
  "_diffusers_version": "0.10.0",
  "feature_extractor": [
    "transformers",
    "CLIPImageProcessor"
  ],
  "requires_safety_checker": true,
  "safety_checker": [
    "stable_diffusion",
    "StableDiffusionSafetyChecker"
  ],
  "scheduler": [
    "diffusers",
    "EulerAncestralDiscreteScheduler"
  ],
  "text_encoder": [
    "transformers",
    "CLIPTextModel"
  ],
  "tokenizer": [
    "transformers",
    "BertTokenizer"
  ],
  "unet": [
    "diffusers",
    "UNet2DConditionModel"
  ],
  "vae": [
    "diffusers",
    "AutoencoderKL"
  ]
}
from diffusers import StableDiffusionPipeline

device = 'cuda'
pipe = StableDiffusionPipeline.from_pretrained("path_to_our_model").to(device)

prompts = [
    '机械狗',
    '城堡 大海 夕阳 宫崎骏动画',
    '花落知多少',
    '鸡你太美',
]

for prompt in prompts:
    prompt = 'sai-v1 art, ' + prompt
    image = pipe(prompt).images[0]  
    image.save("%s.jpg" % prompt)

SkyPaint文本生成模型主要由两部分组成,即提示词文本编码器和扩散模型两部分,优化也分为两部分,1.基于OpenAI-CLIP优化了提示词文本编码器模型使得SkyPaint具有中英文识别能力, 2.优化了扩散模型,使得SkyPaint具有现代艺术能力可以产生高质量图片。

1.skyclip

SkyCLIP采用一种高效的训练中英双语CLIP模型的方法得到的CLIP模型,该方法仅需要使用文本数据即可实现对OpenAI-CLIP模型的高效蒸馏,训练所需算力要求相较于原始CLIP模型减少90%以上,该方法仅改变了OpenAI-CLIP的文本编码器,可搭配使用OpenAI-CLIP的图像编码器实现图文检索功能。

skypaint训练数据来源:

  • 中英文机器翻译任务平行语料
  • 联合国中英文平行语料
  • LAION中英文语料(部分)
  • Wukong中文语料(部分)
  • AI-Challenger翻译任务中英文语料
  • 古诗词中英文语料
  • 提示词手册/魔法书中常见词组合而成的中英文语料

skypaint的训练方法:

将OpenAI-CLIP的text_encoder作为教师模型并且冻结参数,学生模型采用和教师模型同样大小的多语言BERT模型,训练时英文输入通过教师模型获取相应的t_en_hiddent_state,英文和中文分别通过学生模型获取相应s_en_hiddent_state,s_zh_hidden_state,采用l1、l2、cos距离等构造损失函数使得学生模型的中英文hiddent_state逐渐靠近教师模型的hiddent_state。由于平行语料的中文和英文存在天然的不等长性质,为了使得平行的中文和英文尽量接近,训练过程中我们还添加了中文解码器,使用学生模型的中英文hiddent_state作为解码器的hidden_state输入,通过翻译任务来辅助实现中文和英文的对齐目的。

2.diffusion model

我们的数据采用了筛选过的Laion数据集作为训练数据,同时在文本前面加上了 'sai-v1 art' 作为tag使模型能够更快速的学习到我们想要的风格及质量。 预训练模型采用了stable-diffusion-v1-5 作为预训练,使用了16块A100训练了50个小时。 目前模型还在持续优化中,后续会有更稳定的模型更新。

你可能感兴趣的:(多模态和生成模型,人工智能)