零门槛人像到漫画,GIF表情包,这个项目不仅开源,还做成小程序。

机器心脏报告
参与:魔鬼,张骞,贾明
之前开源的“脸转漫画”项目,往往可以提供大量的鬼素材,歪嘴歪眼,或者扭曲的脸,甚至让你的五官看起来像是随便放在脸上的,完全不像《死魂灵》里应该有的画风.不过最近小石科技的一个开源项目似乎改变了这种印象。不仅可以生成逼真的卡通头像,还可以用微信小程序制作动画表情,普通人零门槛即可上手。
这个项目名为“照片到漫画”,已经在GitHub上开源。但对于不想下载各种软件、数据集、训练模型的普通用户,公司开放了一个名为“AI卡通秀”的小程序,可以生成各种风格的卡通照片和gif表情,完全可以满足社交需求。
我们先来看看小程序的生成效果:
看起来不错。但考虑到明星照片可能被用作训练数据,机器心脏边肖决定用自己的照片试试:
效果还历历在目!而且除了常规的动漫头像,还可以选择滤镜和样式生成图像,比如怀旧、字云、素描、剪纸、豹纹等。
小姐姐可以完美改变,但是小哥哥呢?我们用象牙山F4之一的谢广坤进行了测试(众所周知,广坤大叔的颜值还是很不错的):
由于照片中人物的右下巴边界不明显,生成的卡通头像略有瑕疵,但人物特征还是一眼就能看出来。当然,这还不是最幸福的。接下来,你还可以制作表情包!
另一方面,这种需要上传照片的应用往往会引发隐私问题的担忧。借鉴“枣”的经验,“AI卡通秀”在《用户协议》中声明“我们不会使用上述内容(头像照片等。)用于其他形式或目的,除非我们希望改善我们向您提供的服务或以其他方式再次获得您的同意”。
如果还担心隐私,可以直接去GitHub获取开源数据和代码,训练自己的模型进行测试。
项目地址:https://github.com/minivision-ai/photo2cartoon
接下来,我们来看看这个应用程序背后的技术细节。
这么好玩的效果是怎么来的?
卡通风格渲染的目标是将真实照片转换成卡通风格的非真实感图像,同时保留原始图像的ID信息和纹理细节。
然而,图像卡通的任务面临一些困难:
卡通形象往往边缘清晰,色块流畅,纹理简化,与其他艺术风格大相径庭。传统图像处理技术生成的动画片无法自适应处理复杂光照和纹理,效果较差;基于风格转移的方法无法准确勾勒细节。
很难获得数据。绘制一幅风格美观统一的漫画需要花费大量的时间和成本,而且转换后的漫画的人脸和五官与原始照片不同,不构成像素级的配对数据,很难采用基于配对数据的图像平移方法。
照片被漫画化很容易丢失身份信息。基于不成对数据的图像翻译中的循环损失不能有效地约束输入和输出的id。
那么如何解决这些问题呢?
小石科技的研究团队提出了一种基于生成对抗网络的卡通模型,只需要少量不成对的训练数据就可以得到漂亮的结果。卡通风格渲染网络是该解决方案的核心,主要由三部分组成:特征提取、特征融合和特征重构。
总体框架如下图所示,基于最近的研究U-GAT-IT(论文《U-GAT-IT: Unsupervised Generative Attentional Networks with Adaptive Layer-Instance Normalization for Image-to-Image Translation》。
在模型结构方面,在U-GAT-IT的基础上,研究人员在编码器前和解码器后增加了两个沙漏模块,以逐步提高模型特征抽象和重构的能力。
特征抽出
特征提取部分包括堆叠沙漏模块、下采样模块和残差模块。
沙漏模块常用于姿态估计,可以在保持语义信息位置不变的情况下提取特征。该方法使用堆叠沙漏模块将输入图像逐渐抽象成易于编码的形式。四个残差模块用于对特征进行编码,并提取统计信息用于后续的特征融合。
特征融合
最近U-GAT-IT提出了一种归一化方法——AdaLIN,可以自动调整实例范数和图层范数的比例,然后结合注意机制实现人像的风格转换。
在此基础上,研究者提出了soft-Adalin(软自适应层实例归一化)归一化方法。首先融合输入图像的编码特征和卡通特征的统计信息,然后用AdaLIN对解码特征进行反规格化,使卡通结果更好地保持输入图像的语义内容。
与原AdaLIN不同,这里的“软”体现在不直接使用卡通特征统计量对解码特征进行反规格化,而是用可学习的权重w_和w_对平均卡通特征和编码特征的统计量进行加权,对规格化后的解码特征进行反规格化。
特征提取阶段从每个Resblock的输出特征中提取编码统计量_en和_en,而卡通统计量通过全连接层从CAM(类激活映射)模块输出的特征图中提取。加权统计数据为:
软AdaLIN操作可以表示为:
特征重构
特征重构部分负责从编码后的特征中生成相应的卡通图像。
该部分采用带特征提取的对称结构,通过解码模块、上采样模块和沙漏模块生成卡通结果。
损失函数
如上所述,照片被漫画化后很容易丢失身份信息。为了使输出结果反映人的信息,除了常规的循环损失和甘损失外,研究人员还引入了id损失:利用预先训练好的人脸识别模型提取输入实景照片的id特征并生成漫画,通过余弦距离进行约束,使漫画的ID信息尽可能与输入照片相似。
如何实现?
安装依赖库
项目所需的主要依赖库如下:
python 3.6
pytorch 1.4
张量流-gpu 1.14
面部对齐
dlib
克隆
git克隆https://github.com/minivision-ailab/photo2cartoon.git
光盘。/photo 2卡通
下载资源
资源地址:
https://drive.google.com/open id=1 edngzt 3 jszhlxq 9 xgiuptcu 72 hdbmhux
https://pan.baidu.com/s/1DxWWBAoaBpsei_rynZUZzw提取代码:z2nm
人卡泛化的预训练模型:photo2cartoon_weights.pt,存储在models路径中。
头像分割模型:seg_model_384.pb,存储在utils的路径中。
人脸识别预训练模型:model_mobilefacenet.pth,存储在models路径中。(来自: InsightFace_Pytorch)
漫画开源数据:cartoon_data,包含trainB和testB。
试验
将一张测试照片(年轻的亚洲女性)转换成卡通风格;
python test.py – photo_path。/images/photo _ test . jpg-save _ path。/images/卡通_结果. png
火车
1.数据准备
训练数据包括真实照片和卡通肖像。为了降低训练的复杂性,研究小组对两种类型的数据进行了如下预处理:
检测人脸和关键点。
根据关键点旋转校正脸部。
将关键点包围盒按固定比例展开,裁剪出人脸区域。
使用肖像分割模型来白色背景。
团队已经开放了204张处理过的漫画数据,用户还需要准备1000张左右的人像照片(为了匹配漫画数据,尽量使用年轻亚裔女性的照片,脸部尺寸最好在200×200像素以上)。使用以下命令进行预处理:
python data _ process . py-data _ path your photofolderpath-save _ path your save folderpath
将处理后的数据按照以下级别存储:trainA和testA存储照片头像数据,trainB和testB存储卡通头像数据。
数据集
摄影2卡通
火车
xxx.jpg
yyy.png
.
火车b
zzz.jpg
www.png
.
泰斯塔
aaa.jpg
bbb.png
.
测试b
ccc.jpg
ddd.png
.
2.培养
再培训:
蟒蛇列车。py-数据集照片2卡通
加载预训练参数:
蟒蛇列车。py-数据集照片2卡通-预训练_重量模型/照片2卡通_重量。元素铂的符号

其他教程

Adobe 绘画软件(adobe绘画软件下载)

2022-8-19 9:32:03

其他教程

网络用语夹子音是什么意思(网络词夹子)

2022-8-19 9:34:08

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索