AIGC玩转卡通化技术实践

news2024/12/27 11:20:14

FaceChain写真开源项目插播:

       最新 FaceChain支持多人合照写真、上百种单人写真风格,项目信息汇总:ModelScope 魔搭社区 。
       github开源直达(觉得有趣的点个star哈。):https://github.com/modelscope/facechain

摘要: 伴随着持续不断的AIGC浪潮,越来越多的AI生成玩法正在被广大爱好者定义和提出,图像卡通化(动漫化)基于其还原效果高,风格种类丰富等特点而备受青睐。早在几年前,伴随着GAN网络的兴起,卡通化就曾经风靡一时。而今,伴随着AIGC技术的兴起和不断发展,扩散生成模型为卡通化风格和提供了更多的创意和生成的可能性。本文就将详细介绍阿里开放视觉团队的卡通化技术实践。

GAN or 大模型?

      当前的卡通化技术大多都以生成对抗网络(GAN)或者扩散模型作为基础的技术路线。而两者在卡通化生成任务上又各有优劣。GAN的最大优势在于速度和效率以及对原图的保真度,其毫秒级别的出图时间能够满足大部分端侧用户的需求,生成效果也相对稳定可控,相关技术总结见https://developer.aliyun.com/article/1308610。而扩散模型基于其庞大的参数规模和训练数据量,具有更强的生成和重绘能力,出图质量高,细节更为丰富,场景和内容的可拓展性也更强。本文接下来将着重介绍在大模型领域的卡通化实践。

用大量数据精调卡通化大模型

扩散生成模型常常在广泛的图像数据进行训练,使其能够生成各种风格和类型的图像,如写实人像和风景等。而我们希望卡通化的基础模型能够更专注于各种卡通类型的图像生成。因此,在扩散生成模型中使用精美的卡通领域数据进行模型的精细调整,不仅可以提高卡通化效果的贴近感和还原度,还可以生成更加精美的卡通图像。通过精调训练,扩散生成模型能够对特定域数据进行更加深入的研究和理解,可以更好地模拟和再现卡通画风的细节和风格。例如,对于人物卡通化,通过对特定域数据中的卡通角色特征的训练,可以更好地保留并突出人物的个性特点和表情。而对于场景卡通化,可以根据特定域数据中的卡通场景细节,提升色彩、线条、纹理等细节,使卡通化效果更加贴合目标画面。经过大量数据的精调,可以获得能够生成更贴切卡通化图像的基础图生图扩散大模型,为专属风格的定制以及原图ID的保持建立基础,从而带来更加真实的卡通化体验。

用少量数据定义自己的卡通化专属风格

在卡通化的技术实践中,为了突出风格的鲜明程度和不同风格间的差异性,往往需要为每一种风格定制专属的模型,而完整训练或者finetune扩散模型往往需要上万量级的数据量和较大的GPU资源。为了实现这一点,LoRA模型的训练成为了最佳选择[1]。训练LoRA模型仅需要几十到上百张的相同风格图片作为训练数据,而finetune的参数也仅仅包括CLIP text encoder和UNet中的cross attention层,极大地减少了训练所需成本。

为了达到理想的finetune效果,LoRA模型的训练也有需多值得注意的训练技巧:

  1. 训练数据除了需要具有相同的风格类型,还需要保持尽可能丰富的语义信息。例如训练二次元人物的LoRA,数据需要尽量覆盖不同性别、年龄段、角度和姿势的二次元人物。

  2. 训练数据需要精细化的文字打标。当前较为流行的自动化标注模型包括了BLIP、BLIP2、DeepDanbooru等。需要注意的是,除了打标模型对画面内容的描述外,添加目标风格或者ID的关键词会对风格属性的强化有较大的帮助。

  3. LoRA模型的训练需要搭配相近风格的基模,同时训练迭代次数不宜过大,一般根据训练数据量设置在10-100epoch。

  4. 多个LoRA模型的权重混合往往会有出其不意的效果。例如将人物和背景LoRA进行混合可以实现人物和背景的完美融合。人物和面部LoRA的混合则可以提升任务面部的美观和精致程度。

利用可控生成技术保留人物ID

可控生成图像技术近期取得了巨大的突破,而可控生成技术对卡通化而言也具有不可或缺的意义。为了保留原图的一些细节(如人物的相似性、场景的相似性等),并使用户感受到“这是『我』的卡通化照片”而非仅仅是一张无关的卡通化图像,我们就需要使用可控图像生成技术来保证卡通化前后的图像之间的相似性。本文使用Prompt-to-Prompt、ControlNet、T2I Adapter等技术进一步提升了生成图像的可控性。下面将介绍这些技术的原理和应用,以及如何使用它们来生成个性化和可控的图像。

Prompt-to-Prompt

该方法发现了文本到图像扩散模型中交叉注意力层的强大功能。下图展示了这些高维层具有可解释的空间映射。这些空间映射在将文本提示单词与合成图像的空间布局联系起来方面发挥了关键作用[2]。因此,通过在注入源注意力图的同时向提示文本中添加卡通化风格描述,我们可以以新的卡通化风格创建各种图像,而保留原始图像的结构和ID。

提示文本与注意力图的关系:

用Prompt-to-Prompt进行卡通化:

ControlNet

ControlNet可以用于控制预训练的大型扩散模型以支持额外的输入条件,这将使得我们在生成卡通化图像的同时能够以原图的某些信息(如深度信息、边缘信息等)作为控制条件以引导图像的生成过程。ControlNet的结构如下图所示,ControlNet将大型扩散模型的权重克隆为“可训练副本”和“锁定副本”:锁定副本保留了从数十亿张图像中学习到的网络能力,而可训练副本可在特定任务的数据集上进行训练以学习条件控制[3]。

示例:使用ControlNet中的深度图控制生成卡通化图像[3]:

T2I Adapter

与ControlNet相似,T2I Adapter是一个简单而小型的模型,其可以在不影响原始网络拓扑结构和生成能力的情况下,为预训练的文本到图像模型提供额外的指导,其网络结构如下图所示[4]。

利用T2I Adapter进行卡通化实践[4]:

从技术研发到应用实践

当前,得益于以webui为代表的大模型可视化编辑工具,每个人都可以完成简单的卡通化上手实践,通过不断的调参和尝试,生成让自己满意的卡通图像。然而从模型推理出图到标准化产品的落地,仍然有很长一段路要走:

  1. 标准化产品不可能要求用户自己做精细化的prompt定制和参数调节。这就要求需要在算法内部形成一套有效的参数和prompt生成系统,来覆盖不同类型的输入。

  2. 标准化产品需要保证生成结果的下限,stable diffusion虽然可以生成诸多具有惊艳效果的图片,但其始终具有生成效果不稳定的特点。在一些小人脸、脸部遮挡、手指等场景下很容易出现瑕疵。因此必须要对生成过程加以约束来提升出图率。

  3. stable diffusion的出图效率目前基本是秒级,提升推理效率,降低成本同样是产品落地过程中极为重要的一环。

效果展示

更多风格试用及快速接入

视觉智能开放平台—生成式图像卡通化

NEW: 人像风格重绘API详情

参考文献

[1]. Hu, Edward J., et al. "Lora: Low-rank adaptation of large language models." arXiv preprint arXiv:2106.09685 (2021).

[2]. Hertz, Amir, et al. "Prompt-to-prompt image editing with cross attention control." arXiv preprint arXiv:2208.01626 (2022).

[3]. Zhang, Lvmin, and Maneesh Agrawala. "Adding conditional control to text-to-image diffusion models." arXiv preprint arXiv:2302.05543 (2023).

[4]. Mou, Chong, et al. "T2i-adapter: Learning adapters to dig out more controllable ability for text-to-image diffusion models." arXiv preprint arXiv:2302.08453 (2023).

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1045009.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

护眼灯显色指数应达多少?眼科医生推荐灯光显色指数多少合适

台灯的显色指数是其非常重要的指标,它可以表示灯光照射到物体身上,物体颜色的真实程度,一般用平均显色指数Ra来表示,Ra值越高,灯光显色能力越强。常见的台灯显色指数最低要求一般是在Ra80以上即可,比较好的…

Spring进阶(AOP的应用)—— 动态代理AOP后controller层的private方法访问失效的问题

前言 动态代理,面向切面编程AOP(Aspect Oriented Programming)作为spring中的一个重点和难点,需要不断深入理解,并且在项目中学习如何灵活应用。 本篇博客介绍动态代理AOP在实际应用中遇到的private方法访问失效的问…

亚马逊电动玩具UL696的测试报告办理

在亚马逊平台销售的电子产品,要符合指定的标准,如果不合格很容易发生起火,爆炸等危及消费者生命财产的安全,因此很多客户因为缺少UL报告,导致产品被下架,销售权被移除等问题,也少不了同行之间的…

leetCode 63.不同路径II 动态规划 + 空间复杂度优化 一维dp

63. 不同路径 II - 力扣(LeetCode) 一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish”&…

.NET Core nuget 组件的安装、更新、卸载

上面的 NuGet\ 是可以省略的。 更新 Update-Package xxx 卸载 Uninstall-Package xxx Uninstall-Package Newtonsoft.Json

400G QSFP-DD FR4 与 400G QSFP-DD FR8光模块:哪个更适合您的网络需求?

QSFP-DD 光模块随着光通信市场规模的不断增长已成为400G市场中客户需求量最高的产品。其中400G QSFP-DD FR4和400G QSFP-DD FR8光模块都是针对波分中距离传输(2km)的解决方案,它们之间有什么不同?应该如何选择应用?飞速…

SpringBoot 学习(二)配置

2. SpringBoot 配置 2.1 配置文件类型 配置文件用于修改 SpringBoot 的默认配置。 2.1.1 properties 文件 **properties ** 是属性文件后缀。 文件名:application.properties 只能保存键值对。 基础语法:keyvalue namewhy注入配置类 Component //…

Java基于SpringBoot的民宿管理系统,附源码

博主介绍:✌程序员徐师兄、7年大厂程序员经历。全网粉丝30W、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 文章目录 开发环境:后端:前端:数据库: 系统架构&#xff1a…

Vue computed计算属性购物车实例

效果演示 对于computed的计算属性可以通过这个购物车例子来了解&#xff0c;笔者最近很是疲累&#xff0c;真的不想过多解释了&#xff0c;还请读者自行看代码研究。 参考代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"U…

数据库管理-第107期 Relocating PDB(20230927)

数据库管理-第107期 Relocating PDB&#xff08;20230927&#xff09; 在我长期的blog生涯&#xff0c;当需要迁移PDB的时候&#xff0c;出现了几种方式&#xff0c;基本上就是在线克隆或者datapump&#xff0c;然而这两种方式都需要一定的停机时间。在数据库版本一致的情况下…

Redis 数据类型底层原理

String 内部编码有三种&#xff1a;int、embstr、raw int&#xff1a;如果一个字符串对象保存的是整数值&#xff0c;并且这个整数值可以用 long类型来表示(不超过 long 的表示范围&#xff0c;如果超过了 long 的表示范围&#xff0c;那么按照存储字符串的编码来存储&#xf…

notepad++配置python2环境

&#xff08;1&#xff09;python2版本下载&#xff1a;Index of /ftp/python/2.7.8/https://www.python.org/ftp/python/2.7.8/ &#xff08;2&#xff09; 配置notepad环境 1.打开Notepad&#xff0c;点击“插件”-“插件管理器”&#xff0c;在“可用”选项卡中&#xff0c…

使用Process Monitor工具探测日志文件是程序哪个模块生成的

目录 1、问题描述 2、使用Process Monitor监测目标文件是哪个模块生成的思路说明 3、操作Process Monitor监测日志文件是哪个模块生成的 4、通过screenctach.dll库的时间戳&#xff0c;找到其pdb文件&#xff0c;然后去查看详细的函数调用堆栈 5、最后 VC常用功能开发汇总…

C++编程入门与提高:学习策略与技巧

&#x1f482; 个人网站:【工具大全】【游戏大全】【神级源码资源网】&#x1f91f; 前端学习课程&#xff1a;&#x1f449;【28个案例趣学前端】【400个JS面试题】&#x1f485; 寻找学习交流、摸鱼划水的小伙伴&#xff0c;请点击【摸鱼学习交流群】 摘要&#xff1a;C是一门…

淘宝商品sku信息抓取接口api

在电商行业中&#xff0c;SKU是一个经常被使用的术语&#xff0c;但是对于很多人来说&#xff0c;这个词可能还比较陌生。在这篇文章中&#xff0c;我们将详细解释什么是SKU&#xff0c;以及在电商业务中它的作用和意义。 什么是SKU&#xff1f; SKU是“Stock Keeping Unit”…

Ubuntu 20.04编译GPMP2过程记录

前言 GPMP2是董靖博士等人在16-17年提出的结合GTSAM因子图框架与Gaussian Processes完成motion planning的一项工作。前身源于Barfoot教授的课题组提出的STEAM(Simultaneous Trajectory Estimation and Mapping)问题及其相关工作。在提出董靖博士提出GPMP2后&#xff0c;borgl…

1400*B. Two Buttons(BFS)

解析&#xff1a; 每次一个点有两种情况&#xff0c;-1 和 *2 两种情况&#xff0c;直接 BFS 即可。 #include<bits/stdc.h> using namespace std; const int N2e55; int n,m,vis[N],cnt[N]; void bfs(){queue<int>q;vis[n]1;q.push(n);while(q.size()){auto tq.f…

使用低代码实现一个表单页面 ------ XinBuilder

平台介绍 如果你不是一个前端开发&#xff0c;但是想要实现出一个前端页面。 那么就可以通过低代码的方式&#xff0c;拖拽和配置出你想要的页面。 而XinBuilder就是简单的一套低代码平台&#xff0c;你可以在上面拖拽出自己想要使用的组件并进行配置。使用方式也很简单。 这…

13. ShardingSphere-Proxy 数据库代理

Spring Cloud 微服务系列文章&#xff0c;点击上方合集↑ 1. 简介 ShardingSphere-Proxy是ShardingSphere分布式数据库中间件的一部分&#xff0c;它提供了数据库代理功能。通过引入ShardingSphere-Proxy&#xff0c;可以在无需改动应用程序代码的情况下&#xff0c;实现分库…

什么是商业智能(BI),就看这篇文章足够了

01、什么是商业智能BI&#xff1f; 商业智能BI - 派可数据商业智能BI可视化分析平台 首先要了解什么是商业智能BI&#xff08; Business Intelligence &#xff09;&#xff1f;百度商业智能BI有很多很多官方的定义&#xff0c;各种解释&#xff0c;实际上从这么多年的经验出发…