文生图基础知识
1.提示词
对模型生成图片的内容、风格进行约束,从而获得更符合需求的图片,在Baseline中,提示词分为正向提示词和负向提示词,如下所示:
prompt="二次元,日系动漫,演唱会的观众席,人山人海,一个紫色短发小女孩穿着粉色吊带漏肩连衣裙坐在演唱会的观众席,舞台上衣着华丽的歌星们在唱歌",
negative_prompt="丑陋、变形、嘈杂、模糊、低对比度",
正向描述词:你想要生成的图片应该包含的内容。
反向提示词:你不希望生成的图片的内容。
2.LoRA介绍
LoRA是一种轻量级的微调方法,主要用于自然语言处理和计算机视觉等领域,LoRA不是指单一的具体模型,而是指一类通过特定微调技术应用于基础模型的扩展应用,这次学习的是文生图,所以使用的是Stable Diffusion中的LoRA模型。
根据对Baseline代码的分析,使用LoRA方法的一些步骤如下:
1.设置LoRA参数,如:lora_rank, lora_alpha, lora_path等,并选定目标model。
def load_lora(model, lora_rank, lora_alpha, lora_path):
lora_config = LoraConfig(
r=lora_rank,
lora_alpha=lora_alpha,
init_lora_weights="gaussian",
target_modules=["to_q", "to_k", "to_v", "to_out"],
)
model = inject_adapter_in_model(lora_config, model)
state_dict = torch.load(lora_path, map_location="cpu")
model.load_state_dict(state_dict, strict=False)
return model
2.加载目标model。
model_manager = ModelManager(torch_dtype=torch.float16, device="cuda",
file_path_list=[
"models/kolors/Kolors/text_encoder",
"models/kolors/Kolors/unet/diffusion_pytorch_model.safetensors",
"models/kolors/Kolors/vae/diffusion_pytorch_model.safetensors"
])
pipe = SDXLImagePipeline.from_model_manager(model_manager)
3.将LoRA应用到选定的模型中。
pipe.unet = load_lora(
pipe.unet,
lora_rank=16, # This parameter should be consistent with that in your training script.
lora_alpha=2.0, # lora_alpha can control the weight of LoRA.
lora_path="models/lightning_logs/version_0/checkpoints/epoch=0-step=500.ckpt"
)
3.ComfyUI
ComfyUI 是一个专为使用 Stable Diffusion 图像生成模型设计的用户界面,通过一个可以直观操作的前段界面,让用户无需编程即可轻松生成所需图像。![](https://i-blog.csdnimg.cn/direct/29014013d7ae48398854c5bd386d8d93.png)
4.ControlNet(参考图控制)
ControlNet 是一种技术组件,主要用于生成图像时提供额外的控制输入,以提高生成图像的质量和细节,如姿势关键点、分割图、深度图、颜色等。
Baseline跑通
第一步,在浏览器中进入魔搭社区注册账号,在“我的Notebook”页面创建PAI实例成功后可打开终端。
第二步,在终端输入
git lfs install
git clone https://www.modelscope.cn/datasets/maochase/kolors.git
下载Baseline文件随后开始运行
第三步,代码文件开头为安装Data-Juicer 和 DiffSynth-Studio工具
!pip install simple-aesthetics-predictor
!pip install -v -e data-juicer
!pip uninstall pytorch-lightning -y
!pip install peft lightning pandas torchvision
!pip install -e DiffSynth-Studio
运行完上述代码块后重启kernel ,操作如下:
第四步,根据自己想法给出提示词。
第五步,运行全部代码,等待模型生成图片,可以在侧边文件夹栏打开不同图片,也可在代码末尾看到所有生成图片。
我的提示词和运行结果:
torch.manual_seed(0)
image = pipe(
prompt="水墨风,一个黑色短发少女,在公园石凳上坐着,双手托着腮,很无聊,全身,粉色连衣裙",
negative_prompt="丑陋、变形、嘈杂、模糊、低对比度",
cfg_scale=4,
num_inference_steps=50, height=1024, width=1024,
)
image.save("1.jpg")