三站合一网站建设方案,免费站群系统,阿里云大学 网站建设,公众号做漫画网站目录
一、引言
二、文生图/图生图#xff08;text-to-image/image-to-image#xff09;
2.1 文生图
2.2 图生图
2.3 技术原理
2.3.1 Diffusion扩散模型原理
2.3.2 Stable Diffusion扩散模型原理
2.4 文生图实战
2.4.1 SDXL 1.0 2.4.2 SD 2.0
2.5 模型排名
三、总…
目录
一、引言
二、文生图/图生图text-to-image/image-to-image
2.1 文生图
2.2 图生图
2.3 技术原理
2.3.1 Diffusion扩散模型原理
2.3.2 Stable Diffusion扩散模型原理
2.4 文生图实战
2.4.1 SDXL 1.0 2.4.2 SD 2.0
2.5 模型排名
三、总结 一、引言 pipeline管道是huggingface transformers库中一种极简方式使用大模型推理的抽象将所有大模型分为音频Audio、计算机视觉Computer vision、自然语言处理NLP、多模态Multimodal等4大类28小类任务tasks。共计覆盖32万个模型 今天介绍CV计算机视觉的第四篇文生图/图生图text-to-image/image-to-image。transformers的pipeline只有图生图image-to-image没有text-to-image在实际应用中文生图更加主流通常先进行文生图再进行图生图。所以本篇文章重点介绍文生图附带进行图生图的讲解。本篇也未使用transformers的pipeline而是使用DiffusionPipeline目前主流的文生图、图生图方法。本文更加注重如何使用代码进行文生图、图生图如果你的工作不需要部署api服务推荐您使用AUTOMATIC1111的stable-diffusion-webui。 如果您是windows建议搜索“秋叶大佬整合包”一键部署属于你的文生图工作台。
当然如果您的土豪推荐您使用midjourney封装的更加简单易用。
二、文生图/图生图text-to-image/image-to-image
2.1 文生图
输入提示词模型理解提示词生成图片。 2.2 图生图
图像处理与增强通过给定的提示词对源图像进行加工与处理使其满足清晰度、定制等需求。 2.3 技术原理
我们以Stable Diffusion为例讲讲文生图/图生图的原理。
2.3.1 Diffusion扩散模型原理
将到扩散模型一定要了解DDPM: Denoising Diffusion Probabilistic Models基于概率的降噪扩散模型主要包含两个过程 Diffusion Process (又被称为Forward Process) 扩散过程对图片进行加噪每一步都往图片上加入一个高斯分布的噪声直到图片变为一个基本是纯高斯分布的噪声Denoise Process又被称为Reverse Process降噪过程基于UNet对含有噪音的图片进行逐步还原直到还原至清晰可见的图片。 2.3.2 Stable Diffusion扩散模型原理
主要由AutoEncoder、扩散模型和Condition条件模块三部分组成。具体方法是 首先需要训练好一个自编码模型AutoEncoder包括一个编码器 E和一个解码器D 。 扩散过程利用编码器对图片进行压缩然后在潜在表示空间上做diffusion操作文本处理SD采用OpenAI的CLIPContrastive Language-Image Pre-Training语言图片对比学习预训练模型进行文字到图片的处理具体使用的是clip-vit-large-patch14。对于输入text送入CLIP text encoder后得到最后的hidden states其特征维度大小为77x76877是token的数量这个细粒度的text embeddings将以cross attention的方式送入UNet中。去噪过程去噪实际上就是SD文生图模型的推理过程通过UNet网络对图片/文字的embedding层层去噪得到最终需要的图片。 2.4 文生图实战
2.4.1 SDXL 1.0
首先要安装扩散diffusers、invisible_watermark、transformers、accelerate、safetensors等依赖库
pip install diffusers invisible_watermark transformers accelerate safetensors -i https://mirrors.cloud.tencent.com/pypi/simple
其次引用diffusers库中的DiffusionPipeline类下载基础模型stabilityai/stable-diffusion-xl-base-1.0和精炼模型stabilityai/stable-diffusion-xl-refiner-1.0。使用基础base文生图模型生成噪声潜在数据然后使用专门去噪的refiner图生图细化模型进行高分辨率去噪处理。 import os
os.environ[HF_ENDPOINT] https://hf-mirror.com
os.environ[CUDA_VISIBLE_DEVICES] 2from diffusers import DiffusionPipeline
import torchbase DiffusionPipeline.from_pretrained(stabilityai/stable-diffusion-xl-base-1.0, torch_dtypetorch.float16, use_safetensorsTrue, variantfp16)
base.to(cuda)
refiner DiffusionPipeline.from_pretrained(stabilityai/stable-diffusion-xl-refiner-1.0,text_encoder_2base.text_encoder_2,vaebase.vae,torch_dtypetorch.float16,use_safetensorsTrue,variantfp16,
)
refiner.to(cuda)# Define how many steps and what % of steps to be run on each experts (80/20) here
n_steps 40
high_noise_frac 0.8prompt A beautiful sexy girl# run both experts
image base(promptprompt,num_inference_stepsn_steps,denoising_endhigh_noise_frac,output_typelatent,
).imagesimage refiner(promptprompt,num_inference_stepsn_steps,denoising_starthigh_noise_frac,imageimage,
).images[0]
image.save(baserefiner.png)
python run_sd_xl_base_1.0refiner.py运行后 来看一下针对提示词A beautiful sexy girl生成的图片好棒 2.4.2 SD 2.0
安装的python库同SDXL 1.0同样采用diffusers的DiffusionPipeline下载模型
import os
os.environ[HF_ENDPOINT] https://hf-mirror.com
os.environ[CUDA_VISIBLE_DEVICES] 2from diffusers import DiffusionPipeline
import torch#pipe DiffusionPipeline.from_pretrained(stabilityai/stable-diffusion-xl-base-1.0, torch_dtypetorch.float16, use_safetensorsTrue, variantfp16)
pipe DiffusionPipeline.from_pretrained(stabilityai/stable-diffusion-2, torch_dtypetorch.float16, use_safetensorsTrue, variantfp16)
pipe.to(cuda)
prompt a beautiful sexy girl
image pipe(prompt).images[0]
image.save(sd-xl.png)
python run_sd.py运行后 来看一下效果 对比来看SDXL 1.0要更强一些当然在实际的应用中要花非常多的精力去抽卡、调正反向提示词前往C站下载并使用别人训练好的lora与embedding。这是一门大学问。
2.5 模型排名
在huggingface上我们将文生图text-to-image模型按下载量从高到低排序在开源模型领域stabilityai的stable-diffusion没有对手闭源领域独有Midjourney 三、总结
本文对文生图/图生图text-to-image/image-to-image从概述、SD技术原理、SD文生图实战、模型排名等方面进行介绍读者可以基于DiffusionPipeline使用文中的极简代码进行文生图的初步体验如果想更加深入的了解再次推荐您使用stable-diffusion-webui。 期待您的3连关注如何还有时间欢迎阅读我的其他文章
《Transformers-Pipeline概述》
【人工智能】Transformers之Pipeline概述30w大模型极简应用
《Transformers-Pipeline 第一章音频Audio篇》
【人工智能】Transformers之Pipeline一音频分类audio-classification
【人工智能】Transformers之Pipeline二自动语音识别automatic-speech-recognition
【人工智能】Transformers之Pipeline三文本转音频text-to-audio/text-to-speech
【人工智能】Transformers之Pipeline四零样本音频分类zero-shot-audio-classification
《Transformers-Pipeline 第二章计算机视觉CV篇》
【人工智能】Transformers之Pipeline五深度估计depth-estimation
【人工智能】Transformers之Pipeline六图像分类image-classification
【人工智能】Transformers之Pipeline七图像分割image-segmentation
【人工智能】Transformers之Pipeline八图生图image-to-image
【人工智能】Transformers之Pipeline九物体检测object-detection
【人工智能】Transformers之Pipeline十视频分类video-classification
【人工智能】Transformers之Pipeline十一零样本图片分类zero-shot-image-classification
【人工智能】Transformers之Pipeline十二零样本物体检测zero-shot-object-detection
《Transformers-Pipeline 第三章自然语言处理NLP篇》
【人工智能】Transformers之Pipeline十三填充蒙版fill-mask
【人工智能】Transformers之Pipeline十四问答question-answering
【人工智能】Transformers之Pipeline十五总结summarization
【人工智能】Transformers之Pipeline十六表格问答table-question-answering
【人工智能】Transformers之Pipeline十七文本分类text-classification
【人工智能】Transformers之Pipeline十八文本生成text-generation
【人工智能】Transformers之Pipeline十九文生文text2text-generation
【人工智能】Transformers之Pipeline二十令牌分类token-classification
【人工智能】Transformers之Pipeline二十一翻译translation
【人工智能】Transformers之Pipeline二十二零样本文本分类zero-shot-classification
《Transformers-Pipeline 第四章多模态Multimodal篇》
【人工智能】Transformers之Pipeline二十三文档问答document-question-answering
【人工智能】Transformers之Pipeline二十四特征抽取feature-extraction
【人工智能】Transformers之Pipeline二十五图片特征抽取image-feature-extraction
【人工智能】Transformers之Pipeline二十六图片转文本image-to-text
【人工智能】Transformers之Pipeline二十七掩码生成mask-generation
【人工智能】Transformers之Pipeline二十八视觉问答visual-question-answering