最近看到一个特别有意思的开源项目,能把照片自动转化成漫画效果,经过半个小时的调试,终于跑通了。正先给大家看下实际效果,我在网上的随便搜了一张帅哥的证件照片试了下。基本上会把脑袋切出来,然后放大眼睛。

原照:

漫画效果后:

使用的是开源项目:https://github.com/minivision-ai/photo2cartoon

具体原理直接摘录read.me的一段描述:

人像卡通风格渲染的目标是,在保持原图像ID信息和纹理细节的同时,将真实照片转换为卡通风格的非真实感图像。我们的思路是,从大量照片/卡通数据中习得照片到卡通画的映射。一般而言,基于成对数据的pix2pix方法能达到较好的图像转换效果,但本任务的输入输出轮廓并非一一对应,例如卡通风格的眼睛更大、下巴更瘦;且成对的数据绘制难度大、成本较高,因此我们采用unpaired image translation方法来实现。

Unpaired image translation流派最经典方法是CycleGAN,但原始CycleGAN的生成结果往往存在较为明显的伪影且不稳定。近期的论文U-GAT-IT提出了一种归一化方法——AdaLIN,能够自动调节Instance Norm和Layer Norm的比重,再结合attention机制能够实现精美的人像日漫风格转换。

与夸张的日漫风不同,我们的卡通风格更偏写实,要求既有卡通画的简洁Q萌,又有明确的身份信息。为此我们增加了Face ID Loss,使用预训练的人脸识别模型提取照片和卡通画的ID特征,通过余弦距离来约束生成的卡通画。

此外,我们提出了一种Soft-AdaLIN(Soft Adaptive Layer-Instance Normalization)归一化方法,在反规范化时将编码器的均值方差(照片特征)与解码器的均值方差(卡通特征)相融合。

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

由于实验数据较为匮乏,为了降低训练难度,我们将数据处理成固定的模式。首先检测图像中的人脸及关键点,根据人脸关键点旋转校正图像,并按统一标准裁剪,再将裁剪后的头像输入人像分割模型去除背景。

实际操作也很简单:

  1. Clone 上述项目

  2. 安装python 3.6、pytorch 1.4、tensorflow-gpu 1.14、face-alignment、dlib一定要用conda

  3. 安装过程中有很多坑,比如pillow的版本要调整之类的

  4. 下载pretrain的模型(提取码:z2nm)放到model路径下:https://pan.baidu.com/s/1DxWWBAoaBpsei_rynZUZzw

  5. 执行以下命令,生成图片会在save_path路径下找到:python3 test.py --photo_path ./images/photo_test.jpg --save_path ./images/cartoon_result.png

如何用深度学习模型为自己做个漫画画像(含代码流程)相关推荐

  1. 如何用深度学习模型为自己做个漫画画像(含代码流程)(转载)

    最近看到一个特别有意思的开源项目,能把照片自动转化成漫画效果,经过半个小时的调试,终于跑通了.正先给大家看下实际效果,我在网上的随便搜了一张帅哥的证件照片试了下.基本上会把脑袋切出来,然后放大眼睛. ...

  2. 手把手:教你如何用深度学习模型预测加密货币价格

    如果要评选2017三大流行金酸梅奖,毫无疑问,获奖的肯定是指尖陀螺.人工智能以及加密货币.加密货币是一项颠覆性的技术,它背后的原理引人注目,我十分看好它未来的发展. 实际上,我并没有持有任何加密货币, ...

  3. 深度学习参数初始化(二)Kaiming初始化 含代码

    目录 一.介绍 二.基础知识 三.Kaiming初始化的假设条件 四.Kaiming初始化的简单的公式推导 1.前向传播 2.反向传播 五.Pytorch实现 深度学习参数初始化系列: (一)Xavi ...

  4. 深度学习基础技术分析2:神经网络(含代码分析)

    1. 模型图示 感知机仅能解决线性的问题,这个局限性使得其无法适应多数的实际应用.因此人们提出了神经网络.如图2.1所示. 图2.1 神经网络 2. 相关技术 技术2.1 隐藏层 从结构上看,神经网络 ...

  5. C++调用Python文件,TensorFlow和PyTorch构建的深度学习模型,无法使用GPU的情况分析。

    C++调用Python深度学习模型,包含TensorFlow和PyTorch等构造的模型,然后使用GPU出现问题.包含C++调用Python函数,C++加载模型到GPU,GPU内存占用过大,计算完毕内 ...

  6. 利用多 GPU 加速深度学习模型训练

    01 - 前言 深度学习模型通常使用 GPU 训练,因为 GPU 具有相比 CPU 更高的计算能力,以 Tesla V100 为例,使用 Tensor Core 加速的半精度浮点计算能力达到 125 ...

  7. 实战 | 深度学习轻松学:如何用可视化界面来部署深度学习模型

    翻译 | AI科技大本营 参与 | 王赫 上个月,我有幸结识了 DeepCognition.ai 的创始人. Deep Cognition (深度认知) 建立的深度学习工作室,为很多准备部署深度学习框 ...

  8. 实战 | 深度学习轻松学:如何用可视化界面来部署深度学习模型 转载 2017年12月27日 00:00:00 109 翻译 | AI科技大本营 参与 | 王赫 上个月,我有幸结识了 DeepCogn

    实战 | 深度学习轻松学:如何用可视化界面来部署深度学习模型 转载 2017年12月27日 00:00:00 标签: 109 编辑 删除 翻译 | AI科技大本营 参与 | 王赫 上个月,我有幸结识了 ...

  9. 如何用深度学习做自然语言处理?这里有份最佳实践清单

    如何用深度学习做自然语言处理?这里有份最佳实践清单 By 机器之心2017年7月26日 14:16 对于如何使用深度学习进行自然语言处理,本文作者 Sebastian Ruder 给出了一份详细的最佳 ...

  10. 用lstm模型做预测_使用LSTM深度学习模型进行温度的时间序列单步和多步预测

    本文的目的是提供代码示例,并解释使用python和TensorFlow建模时间序列数据的思路. 本文展示了如何进行多步预测并在模型中使用多个特征. 本文的简单版本是,使用过去48小时的数据和对未来1小 ...

最新文章

  1. python面向对象重新梳理
  2. 一种电磁铁磁场分析测量
  3. OSChina 周日乱弹 ——身价上亿,然而找不到女朋友 你信么?
  4. 【BZOJ 3620】 3620: 似乎在梦中见过的样子 (KMP)
  5. Ubuntu 设置Android adb 环境变量
  6. 架构师之路 — API 经济 — API 实现方式
  7. python的一些常用操作
  8. 1600: 卡斯丁狗要吃糖葫芦-回文串
  9. pyecharts第三节、仪表盘
  10. java jtextarea字体_java – 更改JTextArea中不同行的字体
  11. 确认! Python夺冠,Java“被迫”退出竞争舞台,网友:崩溃!
  12. EasyUI---layout布局、树形组件、选项卡tabs
  13. Excel、Python靠边站,这才是实现报表自动化最快的方法
  14. 开源,自由,免费, 商业,收费,共享. 这些都不矛盾. 细数网络发展中的免费与收费....
  15. Android 之神 Jake Wharton 从 Square 离职!
  16. 线性代数辅导讲义(第六章 二次型)
  17. 长江流域图——只希望“霉”雨快走开
  18. INA230测量电压电流功率
  19. python扫码点餐系统_python3实现点餐系统
  20. Android各厂商自启动管理界面

热门文章

  1. TMS运输系统价格昂贵?中小物流运输企业数字化,原来可以这么做。
  2. 鼓捣中兴的TCM SSX44B
  3. android如何释放资源文件,Android中的垃圾资源如何清理?
  4. 在线学习PS设计精讲精练记录(5)
  5. backdrop-filter
  6. 分段线性函数三种MIP模型
  7. 你应该掌握的JavaScript高阶技能(六)
  8. 【应用安全】“我的QQ被盗,请大家不要相信任何消息.......”
  9. Pytorch机器学习(六)——YOLOV5中的自适应图片缩放letterbox
  10. oracle监听启动失败12560,Oracle监听器无法启动(TNS-12555,TNS-12560,TNS-00525)