内容纲要
场景
Product
- 百度文心·一格:https://yige.baidu.com/
- OpenAI DALLE 2: https://openai.com/dall-e-2/
文字生成图片
基础能力
- 用户输入文字, 选择场景, 生成图片
- 用户还可以输入一个基础图片, 在这个图片基础上生成新的图片
- 可以在基础图片上选中一块位置,仅修改指定位置
组合能力
- 用户输入文字从0开始生成图片
- 用户选择合适的基础图片, 再输入关键词进行修改或者指定位置的修改
- 直到最终生成满意的照片
- 在过程中可以每次生成多张照片让用户选择最想要的进行保存
- 过程可以是对话式的
训练用户自定义模型
- 用户输入一组自己自拍或某种风格照片
- 训练的新模型输入层将会生成该风格图片
Tools
- Stable-Diffusion, Most popular opensource model: https://github.com/CompVis/stable-diffusion
- Stable Diffusion web UI: https://github.com/AUTOMATIC1111/stable-diffusion-webui
- 如何使用web UI: https://www.bilibili.com/video/BV1q84y1i78L
- novelAI元素法典: https://docs.qq.com/doc/DWHl3am5Zb05QbGVs
- Adaptive Style Transfer: https://github.com/CompVis/adaptive-style-transfer
- Markdown Document: https://www.mkdocs.org/
- Gradio for AI API SDK: https://github.com/gradio-app/gradio
- "Model as a Service" Software: https://github.com/modelscope/modelscope
Theory
- CLIP 论文逐段精读【论文精读】: https://www.bilibili.com/video/BV1SL4y1s7LQ
- DALL·E 2(内含扩散模型介绍): https://www.bilibili.com/video/BV17r4y1u77B
- ViLT 论文精读: https://www.bilibili.com/video/BV14r4y1j74y/
- CLIP 改进工作串讲(上): https://www.bilibili.com/video/BV1FV4y1p7Lm
- CLIP 改进工作串讲(下): https://www.bilibili.com/video/BV1gg411U7n4/
- 多模态论文串讲·上: https://www.bilibili.com/video/BV1Vd4y1v77v/
- 多模态论文串讲·下: https://www.bilibili.com/video/BV1fA411Z772/
- High-Resolution Image Synthesis with Latent Diffusion Models: https://ommer-lab.com/research/latent-diffusion-models
- DALL·E 2
- Imagen
- How to Train Really Large Models on Many GPUs?
帮助理解
- Diffusion Models: A Comprehensive Survey of Methods and Applications: https://arxiv.org/abs/2209.00796
- 實作理解Diffusion Model: 來自DDPM的簡化概念:https://medium.com/ai-blog-tw/%E9%82%8A%E5%AF%A6%E4%BD%9C%E9%82%8A%E5%AD%B8%E7%BF%92diffusion-model-%E5%BE%9Eddpm%E7%9A%84%E7%B0%A1%E5%8C%96%E6%A6%82%E5%BF%B5%E7%90%86%E8%A7%A3-4c565a1c09c
- 由浅入深了解Diffusion Model: https://zhuanlan.zhihu.com/p/525106459
CLIP
- 使用无标签的从互联网上整理的4亿(400M)图片和文字对,使用对比学习的方法进行预训练,抽取图片特征中真的包含了语义信息.
- 使用prompt(engineering & ensemble)的方式进行zero-shot的迁移学习
效果
- zero-shot图片分类: 在ImageNET图片分类上效果和ResNet-50效果差不多
- 迁移性强: 当图片风格发生很大变化(distribution drift),依然不会有大的性能下降
- 泛用性强: 泛用在大量CV领域的任务中,抽取图片的特征
数据
收集了数据集WebImageText(WIT),包含了4亿(400M)图像文本对。
因为数据量够大,CLIP在训练的时候text encoder和image encoder都是不需要进行预训练,也不需要数据增强,不会发生overfitting。
训练和预测
简单换算, 及时使用最便宜的3090GPU一次训练也需要至少十几万。
- 数据集大:收集了大量(4亿个)文本和图片对,相比之前都是千万级的数据大了一个量级
- 对比学习(contrastive representation learning):相比之下对比学习比生成文本,BOW或图片效果都要好,而且任务还更简单。
- 使用了非常巧妙的Prompt Template来进行Zero Shot分类
- Prompt:模型对于Prompt很敏感
- Prompt Template: 使用一个句子描述,比只使用一个词的label准确。label信息少往往还有歧义
- Prompt Engineering: 尝试和调整更好的Prompt效果会更好
- Prompt Ensemble:使用多个Template比仅使用一个Template最终效果好
- 细节
- image encoder: 分别尝试使用ResNet50(使用EfficientNet架构)和ViT,ViT效果更好训练更快
- text encoder: 使用一个63M的Transformer,而且sequence length只有76,因为发现CLIP对于text encoder的性能不敏感
- 数据量足够大,所有参数都是从0开始学习,图片也不需要做随机裁剪外的增强
实践
DALL·E 2
主要是CLIP+GLIDE
Diffusion发展过程
- Diffusion: 第一版Diffusion推理和学习的效率不高
- DDPM:扩散模型的开山之作。对Diffusion模型进行比较大的优化,修改目标函数为对噪声的预测,让扩散模型变得容易训练。
- Improved DDPM:OpenAI的人看见了DDPM有用了,就做了更多的改进。
- Diffusion beats GAN:OpenAI的人发现增大模型对效果有提升,于是开始变大变强,大力出奇迹。提出classifier guided diffusion,使用另外的一个分类模型得出的损失来指导图片生成过程,可以大幅度提升模型的分数表现,第一次在分数上打败了GAN。
- GLIDE:提出了classifier free guidance,之前都需要使用额外的模型来指导,这个模型可能还需要自己来训练很麻烦。这个技巧在后续的模型上都在使用。
- DALLE 2:使用CLIP+GLIDE以及更多的技巧
DALLE 2现在看来也还是一个阶段性的工作,后续的Imagen,Parti等等都在不断改进,这个领取在飞快的发展。