从零入门AI生图原理&实践
这是Datawhale 2024年AI夏令营第四期的学习活动(“AIGC”方向),基于魔搭社区“可图Kolors-LoRA风格故事挑战赛”开展的实践学习。
- Datawhale官方的Task2链接:Datawhale
欢迎感兴趣的同学们加入我们的学习阵营!
AI生图技术的背景与发展
重要性
AI生图技术,即AI生成图像技术,是人工智能生成内容(AIGC)领域的一个重要组成部分。随着AI技术的不断进步,AIGC已经成为了一个重要的发展趋势,并在多个行业中产生了深远的影响。
对于不同的人群而言,了解AI生图技术有着不同的意义:
- 对于普通用户:了解AI生图技术可以帮助他们识别和避免被AI生成的内容所误导,同时也可以利用这些工具来进行简单的创意绘图。
- 对于内容创作者:AI生图工具可以帮助创作者快速提高工作效率,制作出所需的内容。
- 对于技术人员:掌握AI生图技术的能力和玩法有助于针对业务需求进行开发和优化,甚至攻克技术难题。
历史概览
AI生图技术的发展可以追溯到20世纪70年代,艺术家哈罗德·科恩(Harold Cohen)发明的AARON系统是一个早期的尝试,它可以通过机械臂输出绘画作品。进入21世纪,随着深度学习技术的兴起,AI生图技术迎来了突破性进展。
技术原理
AI生图模型通常是多模态机器学习模型,它们通过深度神经网络学习大量的图像库和文本描述,以建立图像描述和图像特征之间的对应关系。这样的模型能够在接收到文本描述或其他类型的输入时,生成符合语义的图像。
相关知识点
- Kolors(可图)模型:是快手开源的文本到图像生成模型,该模型具有对英语和汉语的深刻理解,并能够生成高质量、逼真的图像。
- 魔搭平台:这是一个汇集了大量AI模型和资源的平台,用户可以在此平台上学习和探索AI生图技术的最新进展。通过魔搭平台,开发者可以获得最新的模型、工具和教程,从而持续推动AI生图技术的发展。
实践案例与工具
实践案例
AI生图技术已经广泛应用于多个领域,从艺术创作到商业广告,再到教育和娱乐,都有着它的身影。这里有几个典型的实践案例:
- 艺术创作:艺术家们使用AI生图工具来辅助创作,比如生成初步的概念草图或者作为灵感来源。例如,艺术家可以输入一些关键词,AI就会生成与这些关键词相关的图像,这样可以帮助艺术家更快地构思出作品的大致方向。
- 商业广告:广告设计师利用AI生图技术快速生成多种设计方案,以供客户选择。这种方式可以大大提高设计效率,同时也能提供更多样化的设计方案。
- 教育:在教育领域,AI生图技术可以用来创建互动式的学习材料,比如生成与教学内容相关的插图或动画,帮助学生更好地理解和记忆知识点。
- 娱乐:在电影和游戏行业中,AI生图技术可以用于生成背景环境、角色设计等,减少手工制作的时间和成本。
工具概述
AI生图技术的背后是一系列先进的工具和技术,这些工具不断发展,使得生成的图像越来越接近真实世界。以下是几个值得关注的工具:
- ControlNet:一种通过添加额外条件来控制扩散模型的AI神经网络结构,它提供了一种增强稳定扩散的方法。例如,可以使用ControlNet将毛坯房照片转换为高清室内装饰效果图,这对于室内设计师来说是一个强大的工具。
使用技巧
- 清晰表述问题:在向通义千问提问时,确保问题描述得尽可能清楚。这样可以得到更准确的答案。
- 逐步深入:如果一个问题涉及多个层面,可以考虑分步骤提出问题。先从基本的概念入手,然后逐渐深入到更具体的技术细节。
- 反馈和修正:如果通义千问的回答未能满足需求或者存在误差,可以向它反馈并请求修正。这种互动过程有助于改进答案的质量。
在我们的学习中可以起到的辅助
- 代码架构分析:假设我们有一个文生图的代码基线,通义千问可以帮助我们分析代码的整体架构。例如,它可以帮助识别哪些部分负责数据准备,哪些部分负责模型训练,以及哪些部分负责生成图像。
- 代码逐行解析:对于代码中的具体行,通义千问可以给出详细的解释。例如,如果我们在代码中看到一行涉及到模型预测的部分,通义千问可以解释这一行代码如何调用模型来进行预测,并解释预测结果的含义。
- 实战演练:通义千问还可以帮助我们完成一些实战任务。例如,如果我们正在做一个基于话剧的连环画项目,需要生成一系列相关的图像,通义千问可以提供如何编写合适的提示词的建议,以及如何利用现有的AI工具来生成这些图像。
通过通义千文给我们的提示词进行出图
- 首先将提示词进行替换,并且对反向提示词进行了扩展。
- 在代码中将
torch.manual_seed()
方法进行了注释,以取消对种子的控制,实现随机出图。 - 控制seed是为了让初学者更容易上手文生图的过程,容易复现实验结果,但在后续的学习中会逐步拓展更多知识。
拓展学习scepter webui
- 我们可以通过scepter studio的平台来体验更完整的内容:
- 更多的出图参数设置,不熟悉这些参数的同学可以到上一篇笔记中阅览。
- 设置ControlNet。
- 咒语书所给的样例:通过咒语书,来设定自己的出图提示词和参数,比如出一张开心的小狗狗。
- 再出一张我们DataWhale的吉祥物,在提示词中可以适当运用一些法则来达到更好的出图效果。
- 换个3D风格再出一遍吧!
魔搭的模型微调界面
魔搭社区提供的体验地址里面暂时缺失了微调模型的功能。如果希望使用scepter完整的功能,可以将其私有部署到自己的服务器。
- GitHub地址:https://github.com/modelscope/scepter
- 可以通过官方readme文件中的教程进行操作,该模块对基础有一定的要求,适合学有余力的同学。