从零入门AI生图原理&实践是Datawhale 2024年AI夏令营第四期“AIGC”方向的学习活动,基于魔搭社区“可图Kolors-LoRA风格故事挑战赛”开展的实践学习。
主要是通过对模型的微调,以及对prompt的调整,可以根据要求生成不同的图片。
下面是跑一遍baseline的过程
跑通baseline
第一步:搭建代码环境
登录阿里云账号(首次须先注册阿里云账号,并完成实名认证)领取算力时,,领取成功后关闭该页面,然后完成魔搭社区授权
链接:https://www.modelscope.cn/my/mynotebook/authorization
第二步:创建PAI实例
链接:https://www.modelscope.cn/my/mynotebook/authorization
1.点击创建实例
2.随意起一个名字,注意GPU选择第二个,认准“支持资源包抵扣”,随后下滑点击下一步
3.点击创建实例即可
4.点击打开,就可以进入实例界面
第三步:git baseline文件
1.点击进入终端Terminal
2.复制命令,回车运行
git lfs install
git clone https://www.modelscope.cn/datasets/maochase/kolors.git
第四步:运行代码
1.点击进入kolors文件夹,打开后缀为.ipyhb的baseline文件
2.执行第一个代码块,完成Data-Juicer、DiffSynth-Studio的安装
3.安装完成后重启kernel,避免爆显影响baseline的运行
4.重启后顺序运行全部代码,即可得到图片
调整prompt,设置想要生成的图片风格,依次修改八张图片的描述内容,生成你想要生成的内容
优质的提示词、提示词的排序、书写策略、模型介入等对最后出图的效果都有影响。
prompt提示词一般包括:主体、表情、服装、场景、环境、灯光、画质、渲染器等
越靠前的Tag权重越高,可以适当地使用括号法则、数字法则、混合
例如:
我的prompt调整为:
torch.manual_seed(0)
image = pipe(
prompt="二次元,一个黑色长发小女孩,在茶几旁坐着,双手端着一杯茶,很悠闲,全身,绿色连衣裙,裙上有竹叶的纹路",
negative_prompt="丑陋、变形、嘈杂、模糊、低对比度",
cfg_scale=4,
num_inference_steps=50, height=1024, width=1024,
)
image.save("1.jpg")
torch.manual_seed(1)
image = pipe(
prompt="二次元,中国风,落地窗户外有一片竹林,林中有一只梅花鹿,一个黑色长发小女孩穿着裙上有竹叶的纹路的绿色连衣裙坐在茶几旁看向落地窗外,窗外的梅花鹿也正看向窗内",
negative_prompt="丑陋、变形、嘈杂、模糊、低对比度",
cfg_scale=4,
num_inference_steps=50, height=1024, width=1024,
)
image.save("2.jpg")
torch.manual_seed(2)
image = pipe(
prompt="二次元,中国风,一个黑色长发小女孩穿着裙上有竹叶的纹路的绿色连衣裙坐在茶几旁,温柔的掩嘴笑",
negative_prompt="丑陋、变形、嘈杂、模糊、低对比度,色情擦边",
cfg_scale=4,
num_inference_steps=50, height=1024, width=1024,
)
image.save("3.jpg")
torch.manual_seed(5)
image = pipe(
prompt="二次元,中国风,一个黑色长发小女孩穿着裙上有竹叶的纹路的绿色连衣裙起身走到落地窗旁边",
negative_prompt="丑陋、变形、嘈杂、模糊、低对比度,扭曲的手指,多余的手指",
cfg_scale=4,
num_inference_steps=50, height=1024, width=1024,
)
image.save("4.jpg")
torch.manual_seed(0)
image = pipe(
prompt="二次元,中国风,一个黑色长发小女孩穿着裙上有竹叶的纹路的绿色连衣裙蹲在落地窗旁边,隔着玻璃温柔的看着凑近的梅花鹿",
negative_prompt="丑陋、变形、嘈杂、模糊、低对比度",
cfg_scale=4,
num_inference_steps=50, height=1024, width=1024,
)
image.save("5.jpg")
torch.manual_seed(1)
image = pipe(
prompt="二次元,中国风,一个黑色长发小女孩穿着裙上有竹叶的纹路的绿色连衣裙回到茶几旁,拿起一袋鹿饼干",
negative_prompt="丑陋、变形、嘈杂、模糊、低对比度",
cfg_scale=4,
num_inference_steps=50, height=1024, width=1024,
)
image.save("6.jpg")
torch.manual_seed(7)
image = pipe(
prompt="二次元,中国风,一个黑色长发小女孩穿着裙上有竹叶的纹路的绿色连衣裙,拿着鹿饼干,打开落地窗旁边的门走到竹林中",
negative_prompt="丑陋、变形、嘈杂、模糊、低对比度",
cfg_scale=4,
num_inference_steps=50, height=1024, width=1024,
)
image.save("7.jpg")
torch.manual_seed(0)
image = pipe(
prompt="二次元,中国风,一个黑色长发小女孩穿着裙上有竹叶的纹路的绿色连衣裙,蹲下给围过来的梅花鹿喂鹿饼干",
negative_prompt="丑陋、变形、嘈杂、模糊、低对比度",
cfg_scale=4,
num_inference_steps=50, height=1024, width=1024,
)
image.save("8.jpg")
我最后生成的图为
可以看到,图片内容与prompt中描述的略有差距,这就需要后面调整描述的权重,或者是对模型的参数进行微调,不过需要注意的是,越精细的生成所需的时间就越长。
保存
那么如何保存我们调试后的程序以及示例图呢?
首先新创建一个terminal,战帖命令,回车执行
mkdir /mnt/workspace/kolors/output & cd
cp /mnt/workspace/kolors/models/lightning_logs/version_0/checkpoints/epoch\=0-step\=500.ckpt /mnt/workspace/kolors/output/
cp /mnt/workspace/kolors/1.jpg /mnt/workspace/kolors/output/
随后,在执行完代码后,将模型文件以及示例图下载到本地
至此就完整跑通了baseline,记得及时关闭正在运行的实例,否则会一直消耗算力时。
常见出图参数说明:
batch size:也就是并行数量,增加bs需要同步增加学习率对应 倍率
enablebucket :开启bucket来支持不同长宽比的训练图片
resolution :训练时图片的分辨率
flip_aug: 水平翻转数据增强,要求训练目标对左右方向不敏感
random crop:随机裁剪数据增强
color aug:颜色数据增强,要求训练目标对颜色不敏感
shuffle caption: 打乱文本描述,保证最前面的几个 tag 不被打乱,默认为1
keep tokens:学习次数,每张图片在一个epoch内重复多少次
总结
### 总结文章:《从零入门AI生图原理&实践》:Datawhale 2024年AI夏令营AIGC方向学习活动#### 活动背景
- **活动主题**:AIGC方向的“AI生图”学习活动,基于魔搭社区“可图Kolors-LoRA风格故事挑战赛”。
- **目标**:通过模型微调与prompt调整,生成符合要求的图片。
#### 实践流程概述
**跑通baseline的步骤**:
1. **搭建代码环境**
- 登录阿里云账号(需要注册并完成实名认证)。
- 领取算力资源并关闭页面,完成魔搭社区授权。
2. **创建PAI实例**
- 访问创建实例链接。
- 起名实例,选择GPU资源(推荐第二个),确认“支持资源包抵扣”。
- 创建并打开实例。
3. **克隆baseline文件**
- 通过Terminal执行git命令克隆baseline项目。
4. **运行代码**
- 进入kolors文件夹并打开`.ipyhb`的baseline文件。
- 执行代码块安装Data-Juicer与DiffSynth-Studio。
- 重启kernel,顺序运行代码块,最终生成图片。
5. **调整prompt生成图片**
- 优化prompt描述(包括主体、表情、服装等),使用括号法则、数字法则等调整权重。
- 修改baseline中的prompt代码块,分别生成不同场景下的图片。
6. **保存调试结果**
- 创建文件夹并复制模型文件及示例图到指定位置。
- 下载模型和图片到本地,关闭实例以避免算力消耗。
#### 关键概念与参数说明
- **Prompt**:描述图片内容的文本,影响生成图片的风格与细节。
- **Negative Prompt**:排除不希望出现在图片中的元素。
- **调整策略**:如排序、使用括号法则、数字法则等优化prompt效果。
- **关键参数**:
- `batch size`:提高并行处理量需同步增大学习率。
- `enablebucket`:支持不同长宽比图片训练。
- `resolution`:训练图片分辨率。
- `flip_aug`、`random crop`、`color aug`:不同类型的数据增强策略。
- `shuffle caption`:打乱文本描述,保持特定tag顺序。
- `keep tokens`:每张图片在epoch内的重复学习次数。
#### 结语
通过这一系列操作步骤,可以从零开始学会使用AI模型生成符合要求的图片。调整prompt与微调模型参数可以让生成的图片更加精细,但会增加计算时间与资源消耗。最终,生成并保存的图片展示了AI在图像生成领域的强大潜力与应用前景。