关注上方深度学习技术前沿”,选择“星标公众号”

资源干货,第一时间送达!

之前开源的「人脸变卡通」项目往往可以提供很多鬼畜素材,要么嘴歪眼斜,要么脸型扭曲,甚至让你的五官看上去是随便放到脸盘里的,完全不像阳间该有的画风……但小视科技最近开源的一个项目似乎改变了这种印象,不仅可以生成逼真的卡通头像,还能利用微信小程序做成动图表情包,普通人也可以零门槛上手。

这个项目名叫「人像卡通化 (Photo to Cartoon)」,已经在 GitHub 上开源。但对于不想动手下载各种软件、数据集、训练模型的普通用户,该公司开放了一个名为「AI 卡通秀」的小程序,可以生成各种风格的卡通照片、gif 表情包,完全可以满足社交需求

先来看一下小程序的生成效果:

看上去好像还不错。但考虑到明星照可能会被用作训练数据,机器之心小编决定用自己的照片试一下:

效果依然传神!而且,除了常规卡通头像之外,你还可以选择生成图像的滤镜和风格,如怀旧、字云、素描、剪纸、豹纹等。

小姐姐能完美转换,那小哥哥呢?我们拿象牙山 F4 之一的谢广坤测试了一下(众所周知,广坤叔的颜值还是很能打的):

由于照片中人物右侧下巴的边界不太明显,生成的卡通头像略有瑕疵,但还是一眼就能看出人物特征。当然,这还不是最欢乐的。接下来,你还可以做表情包

话说回来,这种需要上传照片的应用常常引发大家对于隐私问题的担忧。有了「Zao」的前车之鉴,「AI 卡通秀」在《用户协议》中表示,「除非为了改善我们为您提供的服务或另行取得您的再次同意,否则我们不会以其他形式或目的使用上述内容(头像照片等)」。

如果你还是担心隐私问题,可以直接去 GitHub 上获取开源数据和代码,训练自己的模型进行测试。

项目地址:https://github.com/minivision-ai/photo2cartoon

接下来,我们就来看看这一应用背后的技术细节。

这么好玩的效果是怎么做到的呢?

人像卡通风格渲染的目标是,在保持原图像 ID 信息和纹理细节的同时,将真实照片转换为卡通风格的非真实感图像。

但是图像卡通化任务面临着一些难题:

  1. 卡通图像往往有清晰的边缘,平滑的色块和经过简化的纹理,与其他艺术风格有很大区别。使用传统图像处理技术生成的卡通图无法自适应地处理复杂的光照和纹理,效果较差;基于风格迁移的方法无法对细节进行准确地勾勒。

  2. 数据获取难度大。绘制风格精美且统一的卡通画耗时较多、成本较高,且转换后的卡通画和原照片的脸型及五官形状有差异,因此不构成像素级的成对数据,难以采用基于成对数据的图像翻译(Paired Image Translation)方法。

  3. 照片卡通化后容易丢失身份信息。基于非成对数据的图像翻译(Unpaired Image Translation)方法中的循环一致性损失(Cycle Loss)无法对输入输出的 id 进行有效约束。

那么如何解决这些问题呢?

小视科技的研究团队提出了一种基于生成对抗网络的卡通化模型,只需少量非成对训练数据,就能获得漂亮的结果。卡通风格渲染网络是该解决方案的核心,它主要由特征提取、特征融合和特征重建三部分组成。

整体框架由下图所示,该框架基于近期研究 U-GAT-IT(论文《U-GAT-IT: Unsupervised Generative Attentional Networks with Adaptive Layer-Instance Normalization for Image-to-Image Translation》。

模型结构方面,在 U-GAT-IT 的基础上,研究者在编码器之前和解码器之后各增加了 2 个 hourglass 模块,渐进地提升模型特征抽象和重建能力。

特征提取

特征提取部分包含堆叠的 Hourglass 模块、下采样模块和残差模块

Hourglass 模块常用于姿态估计,它能够在特征提取的同时保持语义信息位置不变。该方法采用堆叠的 Hourglass 模块,渐进地将输入图像抽象成易于编码的形式。4 个残差模块则用于编码特征并提取统计信息,用于后续的特征融合。

特征融合

近期论文 U-GAT-IT 提出了一种归一化方法——AdaLIN,能够自动调节 Instance Norm 和 Layer Norm 的比重,再结合注意力机制实现人像日漫风格转换。

研究人员基于此提出了 Soft-AdaLIN(Soft Adaptive Layer-Instance Normalization)归一化方法。先将输入图像的编码特征统计信息和卡通特征统计信息融合,再以 AdaLIN 的方式反归一化解码特征,使卡通画结果更好地保持输入图像的语义内容。

不同于原始的 AdaLIN,这里的「Soft」体现在不直接使用卡通特征统计量来反归一化解码特征,而是通过可学习的权重 w_μ 和 w_σ 来加权平均卡通特征和编码特征的统计量,并以此对归一化后的解码特征进行反归一化。

编码特征统计量 μ_en 和 σ_en 提取自特征提取阶段中各 Resblock 的输出特征,卡通特征统计量则通过全连接层提取自 CAM(Class Activation Mapping)模块输出的特征图。加权后的统计量为:

Soft-AdaLIN 操作可以表示为:

特征重建

特征重建部分负责从编码特征生成对应的卡通图像。

这部分采用与特征提取部分对称的结构,通过解码模块、上采样模块和 Hourglass 模块生成卡通画结果。

损失函数

如上所述,照片卡通化后容易丢失身份信息。为了使输出结果体现人物信息,除了常规的 Cycle Loss 和 GAN Loss,研究人员还引入了 ID Loss:使用预训练的人脸识别模型来提取输入真人照和生成卡通画的 id 特征,并用余弦距离来约束,使卡通画的 id 信息与输入照片尽可能相似。

如何实现?

安装依赖库

项目所需的主要依赖库如下:

  • python 3.6

  • pytorch 1.4

  • tensorflow-gpu 1.14

  • face-alignment

  • dlib

Clone

git clone https://github.com/minivision-ailab/photo2cartoon.git
cd ./photo2cartoon

下载资源

资源地址:

  • https://drive.google.com/open?id=1eDNGZT3jszHLXQ9XGIUPtcu72HdBmHuX

  • https://pan.baidu.com/s/1DxWWBAoaBpsei_rynZUZzw 提取码:z2nm

  1. 人像卡通化预训练模型:photo2cartoon_weights.pt,存放在 models 路径下。

  2. 头像分割模型:seg_model_384.pb,存放在 utils 路径下。

  3. 人脸识别预训练模型:model_mobilefacenet.pth,存放在 models 路径下。(From: InsightFace_Pytorch)

  4. 卡通画开源数据:cartoon_data,包含 trainB 和 testB。

测试

将一张测试照片(亚洲年轻女性)转换为卡通风格:

python test.py --photo_path ./images/photo_test.jpg --save_path ./images/cartoon_result.png

训练

1. 数据准备

训练数据包括真实照片和卡通画像,为降低训练复杂度,团队对两类数据进行了如下预处理

  • 检测人脸及关键点。

  • 根据关键点旋转校正人脸。

  • 将关键点边界框按固定的比例扩张并裁剪出人脸区域。

  • 使用人像分割模型将背景置白。

团队开源了 204 张处理后的卡通画数据,用户还需准备约 1000 张人像照片(为匹配卡通数据,尽量使用亚洲年轻女性照片,人脸大小最好超过 200x200 像素),使用以下命令进行预处理:

python data_process.py --data_path YourPhotoFolderPath --save_path YourSaveFolderPath

将处理后的数据按照以下层级存放,trainA、testA 中存放照片头像数据,trainB、testB 中存放卡通头像数据。

├── dataset└── photo2cartoon├── trainA├── xxx.jpg├── yyy.png└── ...├── trainB├── zzz.jpg├── www.png└── ...├── testA├── aaa.jpg ├── bbb.png└── ...└── testB├── ccc.jpg ├── ddd.png└── ...

2. 训练

重新训练:

python train.py --dataset photo2cartoon

加载预训练参数:

python train.py --dataset photo2cartoon --pretrained_weights models/photo2cartoon_weights.pt

重磅!DLer-强化学习交流群已成立!

欢迎各位RLer加入强化学习微信交流大群,本群旨在交流强化学习框架、策略梯度、DQN、理论推导与算法实现、前沿技术与顶会文章解读、应用场景等内容。更有求职内推、算法竞赛、资源干货、业界前沿资讯等,欢迎加群交流学习!

进群请备注:研究方向+学校/公司+昵称(如强化学习+上交+王明)

广告商、博主请绕道!

???? 长按识别,即可进群!

觉得有用麻烦给个在看啦~  

这个项目有点秀!一键操作可使人像转卡通、GIF表情包相关推荐

  1. 【项目分享】还有谁不服??这款随机表情包生成器征服你!!

    在聊天中,你是否认为自己图库太小?你是否经常斗图?你斗图水平还是青铜水平? 有了它,你就是斗图界王者!!! 大家好,我是孤焰.今天在学校里学到了一个比较有趣的项目--随机表情包生成器,在这里分享给大家 ...

  2. 一键抠图Portrait Matting人像抠图 (C++和Android源码)

    一键抠图Portrait Matting人像抠图 (C++和Android源码) 目录 一键抠图Portrait Matting人像抠图 (C++和Android源码) 1. 项目介绍: 2. MOD ...

  3. 立体表情包贺卡,蓝海赚钱副业小项目

    大家好,我是飞翔,今天给大家介绍一个小红书上的立体表情包贺卡项目,就是通过使用表情包图片制作成贺卡,然后出售撰钱的 我去淘宝上看了一下,目前这块的销量并不是很高,但是我认为原因是因为这个项目操作的人并 ...

  4. IDEA集成Docker插件实现项目打包镜像一键部署与Docker CA加密认证

    IDEA集成Docker插件实现项目打包镜像一键部署与Docker CA加密认证 Docker开启远程访问 修改该Docker服务文件 加载配置与重启 验证是否开启成功 IDEA配置docker 编写 ...

  5. 【Android 逆向】Android 逆向通用工具开发 ( 静态库项目中的网络操作核心类 CNetwork 分析 )

    文章目录 一.adabingo 静态库项目中的网络操作核心类 CNetwork 分析 一.adabingo 静态库项目中的网络操作核心类 CNetwork 分析 CNetwork 相关方法分析 : 等 ...

  6. 共享两个做项目最常用功能操作的封装类

    (转载http://www.seaskyer.net/Index/Catalog12/223.html) 共享两个做项目最常用功能操作的封装类 一. 显示消息对话框类 做项目时总免不了要弹出对话框,或 ...

  7. 单据打印_Excel多功能进销存套表,自动库存单据,查询打印一键操作

    Hello大家好,我是帮帮.今天跟大家分享一张Excel多功能进销存管理套表,自动库存,单据打印,查询统算一键操作. 为了让大家能更稳定的下载模板,我们又开通了全新下载方式(见文章末尾),以便大家可以 ...

  8. 项目实战Git团队操作_图形化版本

    文章目录 一.分支思路 1. Git命令常用理解记忆 2. 分支换分规则 3. 线上发布准备 二. 实战前期准备 2.1. 在远程仓库创建kernel_system项目 2.2. 将远程仓库克隆到本地 ...

  9. ASP.NET 网站项目 EF 的简单操作例子

    ASP.NET 网站项目 EF 的简单操作例子: 操作代码: using EFTest.Models; using System; using System.Collections.Generic; ...

最新文章

  1. 博士真正搞科研的姿势
  2. nginx 405错误后 用get重定向
  3. SAP CRM和Cloud for Customer中的Event handler(事件处理器)
  4. sortable 拖拽时互换目标的位置_双端通用型JS拖拽插件的封装与应用
  5. java读取邮箱附件_使用javamail获取附件内容
  6. ajax+ashx 完美实现input file上传文件
  7. OAuth 1.0a 的 C# 代码实现
  8. WinRAR 曝 19 年前重大漏洞,可完全控制电脑!| 附解决方法
  9. 基于lucene语法的实时文本搜索与匹配--Tripod
  10. ASP.NET中的HttpWorkerRequest对像及其应用
  11. pygame 文字输入交互_如何在pygame中创建交互式对象?
  12. engine.POST()处理POST请求
  13. ARM汇编程序设计之--数据搬移
  14. jquery ie版本支持html5,JS第6款:html5shiv.js让IE6、IE7、IE8支持html5-推荐
  15. 诗词经典唯美名句赏析
  16. java获取基金实时数据_JAVA爬取天天基金网数据
  17. springboot 集成 grpc 和 protobuf(二) | 在实际项目中使用 grpc 和 protobuf
  18. 计算机二级 公共基础知识资料
  19. 关于前端接口报错500原因
  20. 可视化入门:从 0 到 1 开发一个图表库

热门文章

  1. MAC 终端设置的样式第二次打开就不一样了
  2. 使用2.4寸OLED显示器遇到的小问题
  3. Serializable接口解读
  4. 小红书如何推广 方法总结
  5. vim使用技巧之查找字符串
  6. wms系统提升仓储管理效率(上)
  7. 将在2018年为您的创业成功贡献最多的三大技术类别
  8. 织梦文章无图自动出图配图插件支持采集
  9. 【AD】windows弹窗广告阻止
  10. 芝麻信用919分的大神长啥样?手把手教你提高芝麻分