1.AI生图的能力&局限:
如果我说这是一张AI生成的图片,你能相信吗?
然而幸运又不幸的是它确实是AI生成的。
很难想象在短短几年内,AI生图的能力已经像指数爆炸一样增长。一年前,AI还因为拙劣的画“手”能力被看轻,也因为当时这个情况,产生了很多解决这个问题的相关技术,如:给图片里的人手打上标记,像把手掌、拇指、食指啥的,都给清楚地标出来;
正是这种发现问题——解决问题的精神,才让现在的AI生图能力飞速提高。
目前大部分的模型,已经具备了去除 “AI味” 的能力,且可能存在容易误导他人的情况,这时候我们想辨别可能需要非常仔细地——
-
观察图片的细节。仔细检查人物的面部特征,尤其是眼睛和嘴巴
-
检查光线和阴影。分析图片中的光源是否一致,阴影的方向是否与光源相符,是否存在不自然的光线或阴影
-
分析像素。放大图片,寻找是否有模糊或像素化的部分。
-
注意背景。检查背景中是否有不协调的元素,比如物体边缘是否平滑,背景中是否有不自然的重复模式。
而这些细节上的AI特性,也就是我们需要解决的问题!
2.精读baseline——从零入门AI生图:
本次的任务主要在于利用通义千问来解释之前的AI生图代码,不仅通义可以概括代码大致功能,也可以对每句进行细致的解释:
你是一个优秀的python开发工程师,现在我们需要你帮我们分析这个代码的主体框架,你需要把代码按照工作流分成几部分,用中文回答我的问题。{代码部分}
安装和卸载依赖包
- 使用
!pip
命令来安装或卸载 Python 包。包括:simple-aesthetics-predictor
,data-juicer
,peft
,lightning
,pandas
,torchvision
, 和DiffSynth-Studio
的安装。 - 卸载
pytorch-lightning
(使用-y
自动确认卸载)
加载数据集
- 使用 ModelScope 的
MsDataset
类加载名为AI-ModelScope/lowres_anime
的数据集,并指定子集名称为default
和分割为train
,缓存目录设置为/mnt/workspace/kolors/data
。
数据预处理
- 将数据集中的图像转换为 RGB 模式,并保存到指定目录。
- 创建包含图像路径和文本描述的元数据文件
metadata.jsonl
。 - 编写并保存
data_juicer_config.yaml
配置文件,用于后续的数据过滤和处理 - 使用 Data-Juicer 进行数据处理
- 使用
dj-process
命令根据配置文件对数据进行过滤和处理,生成result.jsonl
文件。
数据整理与训练
- 读取
result.jsonl
文件中的数据,并将其转换为 Pandas DataFrame,然后保存为 CSV 文件,并且将图片保存到./data/lora_dataset_processed/train文件夹下。 - 下载模型download_models(["Kolors", "SDXL-vae-fp16-fix"])
- 在前面模型的基础上,执行Lora微调训练
- 加载微调后的模型
图像生成
- 设置正向提示词,反向提示词,执行次数,图片尺寸
- 设置随机种子,控制图片是否可以重复生成,并将图像保存为
.jpg
文件。
合并图像
- 最后,将生成的多个图像合并成一个大图像,并调整大小。
整个流程涵盖了从数据加载、预处理、特征提取、模型预测到图像生成等多个方面。每一部分都有其特定的功能,共同构成了一个完整的二次元图像处理和生成的工作流。
值得注意的是,在向通义进行询问的时候,也像AI生图一样加入了Prompt,经过我多次尝试,在像诸如此类的gpt询问时,承诺给他咨询费,会给出更好的回答😀
3.实战演练一一基于话剧的连环画制作
这一部分在于运用通义来帮助我们生成上一次任务中繁琐的Prompt,引申到其他领域,利用已有的模型来帮助我们标注数据集,从而训练其他的模型,也是同样的道理。
下面是通义的回答:
可以看到通义不仅很好地完成了任务,并且给出的prompt加入了背景、神情等更详细的细节。
根据上一次任务的流程进行图片生成,如下,明显可以发现通义生成的提示词比我上一次的效果更好!
4.更多的选择一一浅尝scepter webui:
最后一步的任务核心在于利用scepter webui进行微调
魔搭体验网址:https://www.modelscope.cn/studios/iic/scepter_studio
目前只开放了模型管理与推理两个功能,也可以前往该项目的Github仓库本地部署体验完整功能。github地址:https://github.com/modelscope/scepter
5.个人尝试——Stable Diffusion的使用:
在学习的过程中,我了解到Stable Diffusion(以下简称SD)是一种潜在扩散模型(Latent Diffusion Model),能够从文本描述中生成详细的图像。它还可以用于图像修复、图像绘制、文本到图像和图像到图像等任务,也是目前非常主流的开源AI绘画平台。
由于本人显卡算力不够😅,于是我利用autodl算力云进行云平台部署,可以理解是租用了别人的显卡!(当然租用肯定是要钱滴,但是价格很便宜,根据显卡算力而定)
租用实例,选择社区镜像中的stable-diffusion-webui:
租用成功后如下所示:
其实跟Task01中的阿里云和魔搭的实例差不多,打开JupyterLab, 按照说明依次进行:
- 启动和重启 webui 点上方工具栏中的「重启并运行所有单元格」。出现
http://0.0.0.0:6006
这个字样就算成功了。可以去 autodl 控制台打开「自定义服务」了 - 首次启动需要下载基本的模型,请稍等几分钟
- 镜像在 A5000, 3090, 3080 上测试没问题
- 模型路径:
/root/autodl-tmp/models
里的对应目录下- 建议通过预置的「模型下载」插件直接下载 civitai 模型会比较快
- 也可以自己上传模型到上述目录
- 数据盘空间不够,可以考虑删除 /root/autodl-tmp/models/controlnet_annotator 目录,里面都是预处理器
- 插件只默认开启了部分,有需要可以自行去开启并重启即可
最后成功打开页面如下:
可以选择别人微调后的模型:
可以去Civitai Models | Discover Free Stable Diffusion Models下载更多的模型,可以得到很好的效果,比如下面这些:
可以在这里选择提示词,其他就跟在魔搭社区的操作一样啦: