Datawhale X 魔搭 AI夏令营-AI生图

151 阅读7分钟

笔者与2024年8月8日-2024年8月17日期间担任Datawhale X 魔搭 AI夏令营运营助教.运营助教在担任学习者的同时,需要引导其他学习者积极参与相关学习活动,对学习者有关报名和相关学习流程的问题进行解答,调动学习群的学习氛围同样是关键所在。笔者获得了Datawhale颁发的卓越助教荣誉。这篇笔记简单的谈一下我利用魔搭社区平台进行相关实践的过程。

文生图的历史

文生图(Text-to-Image Generation)是一种通过文本生成图像的技术.举个例子,你对AI 大模型说你想让它帮你画一幅画,它真的给你生成了一幅画.

发展阶段发展介绍
早期探索(20世纪60年代-20世纪90年代)文生图的概念最早出现于计算机视觉和图像处理的早期研究中。早期的图像生成技术主要依赖于规则和模板匹配,通过预定义的规则将文本转换为简单的图形。然而,由于计算能力和算法的限制,这一阶段的技术能力非常有限,生成的图像质量较低,应用场景也非常有限。
基于统计模型的方法(2000年代)进入2000年代,随着统计模型和机器学习技术的发展,文生图技术开始得到更多关注。研究者们开始利用概率图模型和统计语言模型来生成图像。尽管这一阶段的技术在生成图像的多样性和质量上有了一定提升,但由于模型的复杂性和计算资源的限制,生成的图像仍然较为粗糙,不够逼真。
深度学习的崛起(2010年代)2010年代是文生图技术发展的一个重要转折点。随着深度学习,尤其是卷积神经网络(CNN)和生成对抗网络(GAN)的发展,文生图技术取得了突破性进展。2014年,Goodfellow等人提出的GAN模型通过生成器和判别器的对抗训练,极大地提升了图像生成的质量。随后,各类变种GAN模型被提出,如DCGAN、Pix2Pix等,使得文生图技术在生成逼真图像方面达到了前所未有的高度。
大规模预训练模型(2020年代)进入2020年代,大规模预训练模型如OpenAI的CLIP、DALL-E以及Stable Diffusion等的出现,标志着文生图技术进入了一个新的时代。CLIP通过大规模的文本和图像配对数据训练,能够理解和生成高度一致的文本和图像;DALL-E和Stable Diffusion进一步提升了生成图像的创意和细节表现能力,使得通过简单的文本描述生成高质量、复杂图像成为可能。这些技术的应用范围从艺术创作、广告设计到辅助医疗诊断,展现了广泛的商业价值和社会影响力。

参考图控制

ControlNet是一种用于精确控制图像生成过程的技术组件。它是一个附加到预训练的扩散模型(如Stable Diffusion模型)上的可训练神经网络模块。扩散模型通常用于从随机噪声逐渐生成图像的过程,而ControlNet的作用在于引入额外的控制信号,使得用户能够更具体地指导图像生成的各个方面(如姿势关键点、分割图、深度图、颜色等)。

参考图控制类型简介示例
OpenPose姿势控制输入是一张姿势图片(或者使用真人图片提取姿势)作为AI绘画的参考图,输入prompt后,之后AI就可以依据此生成一副相同姿势的图片;
Canny精准绘制输入是一张线稿图作为AI绘画的参考图,输入prompt后,之后AI就可以根据此生成一幅根据线稿的精准绘制。
Hed绘制Hed是一种可以获取渐变线条的线稿图控制方式,相比canny更加的灵活。
深度图Midas输入是一张深度图,输入prompt后,之后AI就可以根据此生成一幅根据深度图的绘制。
颜色color控制通过参考图控制和颜色控制,实现更加精准和个性化的图像生成效果。

LoRA

LoRA的英文全称是Low-Rank Adaptation,中文翻译为"低秩自适应",是一类旨在通过用低维结构近似大型模型的高维结构来降低其复杂性的技术。在语言模型的上下文中,这意味着创建一个更小、更易于管理的原始模型表示,它仍然可以很好地执行特定的任务或领域。

低秩适应背后的思想是,对于许多任务,大型模型的高维结构可能包含冗余或不相关的信息。通过识别和删除这种冗余,我们可以创建一个更有效的模型,保留其原始性能,但需要更少的资源来培训和部署。

image.png

生成8图故事

在进行生成图像之前,我们需要准备好用于生成图像的提示词,同时对模型进行微调训练,以引导模型生成符合要求的图像.

提示词分为正向提示词和反向提示词.正向提示词是我们希望模型生成的图片的样子.例如:古风,水墨画,一个黑色长发少女,坐在教室里,盯着黑板,深思,上半身,红色长裙.反向提示词自然是我们不希望得到的,在本次实践中统一定义为:"丑陋、变形、嘈杂、模糊、低对比度".

本着用"魔法打败魔法"的原则,我们直接借助AIGC工具来生成对应的提示词用于模型的训练.这里使用的是Kimi.

你是一个文生图专家,我们现在要做一个实战项目,就是要编排一个文生图喜剧 话剧由8张场景图片生成,你可以自主设计每个场景的内容,你需要输出每张图片的生图提示词,生图提示词包括正向提示词,举个例子:正向提示词:古风,水墨画,一个黑色长发少女,坐在教室里,盯着黑板,深思,上半身,红色长裙.

image.png

可以看到AIGC工具生成了一个离奇的场景,我们先使用它看看.

场景一:开场 正向提示词:现代都市,高楼大厦,繁华街道,行人匆匆,阳光明媚,快节奏生活,充满活力

场景二:主角登场 正向提示词:年轻男女,时尚打扮,手拿咖啡,面带微笑,自信满满,走在街头,享受生活

场景三:偶遇 正向提示词:公园长椅,阳光斑驳,男女主人公,偶然对视,眼神交汇,心跳加速,浪漫邂逅

场景四:误会 正向提示词:咖啡馆内,男女主人公,各自心事,误会频发,表情尴尬,气氛微妙,需要解释

场景五:和解 正向提示词:夜晚街头,男女主人公,坦诚相对,误会解除,笑容满面,拥抱和解,感情升温

场景六:冒险 正向提示词:探险装备,神秘洞穴,男女主人公,并肩作战,勇气十足,克服困难,发现宝藏

场景七:危机 正向提示词:高楼之巅,男女主人公,面临危险,紧张刺激,相互扶持,智斗反派,化险为夷

场景八:结局 正向提示词:夕阳西下,男女主人公,手牵手,幸福微笑,展望未来,美好生活,喜剧收场

我们使用Datawhale通过的baseline,baseline的结构如下,具体细节查阅datawhaler.feishu.cn/wiki/CMYkwK…

  1. 导入库:首先,代码导入了需要用到的库,包括 data-juicer 和微调的工具 DiffSynth-Studio
  2. 数据集构建:下载数据集kolors,处理数据集
  3. 模型微调:模型微调训练,以及加载训练后的模型
  4. 图片生成:调用训练好的模型生成图片

在图片生成上我们要使用前面设计的提示词,代码结构示例如下:

image.png

最后我们得到了模型为我们生成的8图故事.

9.jpg

不得不说有点欧美大片的风格.当然瑕疵也不少,后面再慢慢优化.

参考

datawhaler.feishu.cn/wiki/CMYkwK…

arxiv.org/abs/2106.09…

github.com/microsoft/L…

ai-bot.cn/what-is-lor…