当前位置:AIGC资讯 > AIGC > 正文

Datawhale X 魔搭 AI夏令营-AIGC文生图方向 Task02

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下载更多的模型,可以得到很好的效果,比如下面这些:

可以在这里选择提示词,其他就跟在魔搭社区的操作一样啦:

总结

### 文章总结
#### 1. AI生图的能力与局限
- **AI生图技术飞速进步**:AI在图像生成领域的能力呈指数级增长,从拙劣的画手能力到如今几乎能去除“AI味”。
- **技术挑战与解决方案**:针对AI生图的不足,如手部绘制等,已发展出多种技术来优化。
- **辨别AI生成图像的方法**:通过仔细观察面部特征、光线阴影、像素细节及背景协调性来辨别AI生成图像。
#### 2. 精读baseline——从零入门AI生图
- **任务概述**:利用通义千问解析AI生图代码,理解代码功能和工作流程。
- **工作流程**:
- **安装与卸载依赖**:使用`pip`命令管理Python包。
- **数据加载与预处理**:通过ModelScope加载数据集,转换图像模式,创建元数据文件和配置文件,使用Data-Juicer处理数据。
- **数据整理与训练**:读取处理后的数据,下载模型,进行Lora微调训练,并加载模型。
- **图像生成与合并**:设置提示词和参数生成图像,并合并多个图像。
- **提示技巧**:在GPT类模型询问时加入Prompt和咨询费承诺,可获得更优回答。
#### 3. 实战演练——基于话剧的连环画制作
- **任务目标**:利用通义生成连环画制作所需的详细Prompt,提高生成图像的质量。
- **实践效果**:通义生成的提示词更加详细,显著提升了图像生成效果。
#### 4. 更多的选择——浅尝Scepter WebUI
- **工具介绍**:Scepter WebUI是一个用于模型管理与推理的工具,可通过魔搭体验网址或GitHub仓库访问。
- **功能展望**:目前开放模型管理与推理功能,未来可本地部署体验完整功能。
#### 5. 个人尝试——Stable Diffusion的使用
- **技术背景**:Stable Diffusion是一种潜在扩散模型,能从文本描述中生成详细图像,支持图像修复、绘制等多种任务。
- **实践挑战**:由于个人显卡算力不足,通过autodl算力云进行云平台部署。
- **操作流程**:租用实例,选择stable-diffusion-webui镜像,启动并下载模型,进行图像生成。
- **模型与插件**:可通过Civitai Models下载更多模型,并开启所需插件以增强功能。
- **实践成果**:成功生成高质量图像,展示了Stable Diffusion的强大能力。

更新时间 2024-08-26