基于生成对抗网络的人像转卡通像实现

  • 写在前面
  • 先来看看效果吧
  • 大家最想要的
  • 项目原理简介
  • (2021/11/16更)本项目C++和Pytorch的OnnxRuntime使用方法
  • (2022/1/3更)APP的代码
  • (2022/4/4更)双城之战风格迁移数据集
  • 写在后面

写在前面

天气晴朗万物可爱,希望通过这篇文章对大家学习GAN有所帮助。话不多说,我们开始吧!

先来看看效果吧

这是pycharm跑出来的效果,看起来挺不错的。

这是做的一个app
)

APP界面参考了微信小程序的AI卡通秀

大家最想要的

放上本项目github地址
https://github.com/hahahappyboy/GANForCartoon

如何运行?

  1. 在百度云上下载训练好的模型
    链接:https://pan.baidu.com/s/1TLkQCcuxR9KUAKeBo5Y_rw
    提取码:iimp

  2. 将下载好的模型放在save_model文件夹之下

  3. 将你要转换的人脸图像如nini.png放入dataset/img中,将要融合的背景图像如yourname2.jpeg放入dataset/back_ground中

  4. 参数设置
    找到mian.py文件中的parse_opt()方法,直接改default里面的数值就好
    –img-name填写你放在dataset/img中人脸图片的名字如nini.png
    –background-name填写你放在dataset/back_ground中背景图片的名字如yourname2.jpeg
    –fusion-method为融合方式,有pre_fusion(前景融合)和back_fusion(背景融合)两种,默认为pre_fusion(前景融合)
    –text-content为你要在图片上写的字如’nini’,默认啥也不写
    –text-scale为图片上写的字的大小,默认为70
    –text-location为图片上写的字的位置,默认为(220,30)
    –shear-rate为人脸剪切的比例大小,数值越大,剪切的就越大,默认为0.8
    –segment-model为选择人脸分割所使用的模型,有U2net和FCN两种,各有优劣,默认为U2net
    –migration-method为选择卡通图像风格迁移模型,有Photo2cartoon、U-GAT-IT、Pix2pix三种,强烈建议使用Photo2cartoon,效果最好。

    一图胜千言(参数控制的地方)

  5. 运行main.py文件
    最后结果在dataset/pre_fuse_output(前景融合)或dataset/back_fuse_output(背景融合),dataset其余文件是保存中间结果。

项目原理简介

简单介绍一下项目的运行流程,主要分为图像预处理和卡通图像风格迁移两部分

主要参考了https://github.com/minivision-ai/photo2cartoon

1. 图像预处理
流程图如下:

(1)人脸关键点检测,获得人脸的68个关键点坐标。

检测方法https://github.com/1adrianb/face-alignment

(2)人脸校正,通过68个人脸关键点的第37、46两个点(即眼角的两个点)的坐标结合仿射变换,将倾斜的人脸转正。

仿射变换这篇文章讲的不错https://blog.csdn.net/liuweiyuxiang/article/details/82799999

(3)人脸截取,根据68个关键点中最左边,最右边,最上边,最下边的四个点的坐标位置按一定比例框出一个正方形来截取出人脸。

(4)人脸分割,使用FCN或U2net语义分割模型将人脸截取出来。然后用原图与截取后的图像相乘就能去除掉背景。

FCN模型https://github.com/minivision-ai/photo2cartoon
FCN论文https://arxiv.org/abs/1411.4038
U2net模型https://github.com/xuebinqin/U-2-Net
U2net论文https://arxiv.org/pdf/2005.09007.pdf

2. 人像卡通化

(1)将去除背景后的人像送入卡通风格迁移模型进行风格迁移,我分别使用了Photo2Cartoon、U-GAT-IT、Pix2pix三模型。经测试Photo2Cartoon是效果最好的。

Photo2Catoon模型https://github.com/minivision-ai/photo2cartoon
U-GAT-IT模型https://github.com/znxlwm/UGATIT-pytorch
U-GAT-IT论文https://arxiv.org/abs/1907.10830
飞桨U-GAT-IT论文复现也讲的很好 https://aistudio.baidu.com/aistudio/education/group/info/1340
Pix2pix模型https://phillipi.github.io/pix2pix/
Pix2pix论文https://arxiv.org/abs/1611.07004
飞桨PaddleGAN郝强老师讲得也很好人也帅气https://aistudio.baidu.com/aistudio/education/group/info/16651

模型训练用的数据集
链接:https://pan.baidu.com/s/13Uzq3boKivEgPksZBA40MA
提取码:iimp

蟹蟹飞桨提供的数据https://aistudio.baidu.com/aistudio/education/group/info/16651

(2)将卡通图像与其他图像融合,看起来更阔爱(●’◡’●)

背景融合参考了https://github.com/leijue222/portrait-matting-unet-flask

(2021/11/16更)本项目C++和Pytorch的OnnxRuntime使用方法

见博主的另一篇博客
https://blog.csdn.net/iiiiiiimp/article/details/120621682

(2022/1/3更)APP的代码

写在这里
https://blog.csdn.net/iiiiiiimp/article/details/122384622

(2022/4/4更)双城之战风格迁移数据集

开源一个自己制作的数据集,可以跑着玩玩
https://blog.csdn.net/iiiiiiimp/article/details/123959134

写在后面

博主今年大四毕业单身狗,做这个项目的原因是想送给自己喜欢的一位姑娘一副她本人的漫画图像,顺带完成一下毕业设计。若有写的不好的地方还望多多包含~今年天临3年,毕业依旧很难,嘤嘤嘤。希望对大家学习GAN有所帮助!

GAN动漫人像生成实现(附带源码)相关推荐

  1. 基于GAN的动漫头像生成系统(源码&教程)

    1.研究背景 我们都喜欢动漫角色,并试图创造我们的定制角色.然而,要掌握绘画技巧需要巨大的努力,之后我们首先有能力设计自己的角色.为了弥补这一差距,动画角色的自动生成提供了一个机会,在没有专业技能的情 ...

  2. 一键生成动漫头像微信小程序源码

    一键生成动漫头像微信小程序源码,只需要上传一张图片,即可在线由AI生成一张动漫头像,非常的Nice! PS:使用国一个免费AI接口,不保证该接口能永久使用. 下载 https://pan.baidu. ...

  3. 使用PyTorch构建GAN生成对抗网络源码(详细步骤讲解+注释版)02 人脸识别 下

    文章目录 1 测试鉴别器 2 建立生成器 3 测试生成器 4 训练生成器 5 使用生成器 6 内存查看 上一节,我们已经建立好了模型所必需的鉴别器类与Dataset类. 使用PyTorch构建GAN生 ...

  4. 使用PyTorch构建GAN生成对抗网络源码(详细步骤讲解+注释版)02 人脸识别 上

    文章目录 1 数据集描述 2 GPU设置 3 设置Dataset类 4 设置辨别器类 5 辅助函数与辅助类 1 数据集描述 此项目使用的是著名的celebA(CelebFaces Attribute) ...

  5. android类中定义颜色,自定义实现简单的Android颜色选择器(附带源码)

    在写Android App过程中需要一个简单的颜色选择器,Android自带的ColorPicker和网上的一些ColorPicker都太高端了,都实现了颜色渐变功能,我要的不需要那么复杂,只想提供几 ...

  6. 图书管理系统(附带源码 )

    简单的图书管理系统(附带源码 ) 因为在实训中心经理布置的一个小项目,自己就写了一个简单的图书管理,写下来和有兴趣的分享一下 这个图书管理有管理员和普通会员两种: 普通会员: 1.可以登录.注册,修改 ...

  7. 录屏工具Gif软件 附带源码

    录制完可以快速一键复制录好的 GIF 文件添加图片.很多软件复制的 GIF 有兼容性问题,例如到浏览器编辑器粘贴,或在 QQ 里粘贴 --会出现无效像,动画变静态图像,上传报错等问题.Gif123 复 ...

  8. BMP180气压传感器详解与示例(STM32 附带源码)

    BMP180气压传感器详解与示例(STM32 附带源码) 简介 工作模式 校准数值 测试流程 第一步:微处理器读取校准数值 第二步:读取温度.气压初始值 第三步:计算温度.气压 第四步:计算海拔高度 ...

  9. 出自北大教授java项目大鱼吃小鱼游戏开发教学 附带源码和资料

    课程介绍: 大鱼吃小鱼,又称吞食鱼,是一款动作类小游戏.通过不断的吞吃比自己小的鱼类快速成长,最终成为海洋霸主. 本课程讲解一个大鱼吃小鱼游戏的详细开发过程.只要60分钟就可以完成一个你自己亲手开发出 ...

最新文章

  1. switch和case的理解
  2. 关于 Python3.9,看这张 16 岁高中生做的「新特性必知图」就够了
  3. Linux终端上如何将图像转换成 ASCII 艺术
  4. python2异步编程_最新Python异步编程详解
  5. 各种数据库对应的jar包、驱动类名和URL格式
  6. 微软服务器离线补丁工具包,wsus offline update
  7. 解决页面上JS文件加载过慢问题
  8. CentOS下gitlab迁移和升级
  9. python三级菜单的实现
  10. atitit uke产品线 attilax总结.docx 1. 知识聚合 知识检索 产品线 1 2. 爬虫产品线 1 3. 发帖机产品线 1 4. 发动机产品线 1 5. O2o产品线(旅游
  11. ios 设置按钮不可见_ios开发中button控件的属性及常见问题
  12. 计算机右边键盘数字无效,巧妙解决电脑键盘右边的数字键失灵问题
  13. 计算机休眠会断电吗,win7休眠后能将电脑断电吗?
  14. 关于课题的一点思考(基于多生理信号的情绪识别)
  15. 尝一尝HBuilderX香不香
  16. 新浪短网址生成java_新浪短链接 推荐几个最新的新浪t.cn短链接生成的API接口
  17. 百度云服务器BCC 调用百度人工智能API失败的解决方法
  18. 《中国人史纲》读书笔记:第八章、第九章 公元前第六、五世纪
  19. 【FPGA】:ip核---乘法器(multiplier)
  20. android 蓝牙传输文件,android-通过蓝牙发送文件

热门文章

  1. 如何用计算机算时间,在win10电脑的计算器中如何进行日期的计算
  2. 双线性汇合(bilinear pooling)在细粒度图像分析及其他领域的进展综述
  3. 深演智能数智化 “三角魔方”浮出水面,企业征战数字化转型沙场的最新秘密武器?...
  4. c++primer读书笔记
  5. 神经网络-非线性激活ReLU
  6. DB2 SQL语句归纳整理(一)
  7. 免费PPT模板网站,模板精品好用,直接下载
  8. 二、Qt定时器与文本编辑器制作《QT 入门到实战》
  9. 根据mask绘制contour ,bounding box。批量展示图片 等工具函数
  10. 微星主板黑苹果_技嘉X79-UD7主板设置一键启动u盘方法【详解】