GAN动漫人像生成实现(附带源码)


在这里插入图片描述

写在前面

天气晴朗万物可爱,希望通过这篇文章对大家学习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有所帮助!
在这里插入图片描述

  • 65
    点赞
  • 258
    收藏
    觉得还不错? 一键收藏
  • 105
    评论
1.项目代码功能经验证ok,确保稳定可靠运行。欢迎下载使用!在使用过程中,如有问题或建议,请及时私信沟通。 2.主要针对各个计算机相关专业,包括计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网等领域的在校学生、专业教师或企业员工使用。 3.项目具有丰富的拓展空间,不仅可作为入门进阶,也可直接作为毕设、课程设计、大作业、初期项目立项演示等用途。 4.当然也鼓励大家基于此进行二次开发。 5.期待你能在项目中找到乐趣和灵感,也欢迎你的分享和反馈! 【资源说明】 基于mindspore框架和GAN实现漫画生成python源码+项目说明+模型.zip 简介 图像风格迁移领域近期有一篇论文U-GAT-IT提出了一种归一化方法——AdaLIN,能够自动调节Instance Norm和Layer Norm的比重,再结合attention机制能够实现精美的人像日漫风格转换。 主要包含两个生成器Generator和四个辨别器Discriminator,也是本工作的主要完成训练框架转换的部分。本工作主要根据开源的pytorch代码,将其中的风格迁移模型U-GAT-IT的模型定义、训练和测试脚本改成了mindspore框架(具体包括**训练脚本**`./models/UGATIT_sadalin_hourglass.py`和**模型定义文件**`./models/ms/networks.py`),而数据预处理的部分保留原先的pytorch框架。 ## 生成过程 由于实验数据较为匮乏,为了降低训练难度,首先将数据处理成固定的模式。数据处理部分用的是pytorch的模型和框架。主要包含以下几个步骤: - 检测人脸及关键点。 - 根据关键点旋转校正人脸。 - 将关键点边界框按固定的比例扩张并裁剪出人脸区域。 - 使用人像分割模型将背景置白,得到统一的图像模式。 ![image-20220625223031715](./images/image-20220625223031715.png) 最后将去除背景的正脸,输入U-GAT-IT模型中进行漫画风格迁移,得到最终的漫画脸。 硬件环境与依赖库 相关的系统与硬件配置如下: - Linux x86_64 - Ubuntu 18.04 - NVIDIA Tesla T4 (CUDA 11.4) 项目所需的主要依赖库如下: - mindspore 1.7.0 - python 3.7.5 - pytorch 1.7 - tensorflow-gpu 1.14 - face-alignment - dlib 训练 1. 随机初始化权重并重新训练: ```shell python train.py --dataset photo2cartoon ``` 2. 加载预训练参数进行训练: ```shell python train.py --dataset photo2cartoon --pretrained_model pretrained_models ``` 3. 训练过程中会输出iteration和训练的时间、生成器的损失g_loss和辨别器的损失d_loss: 测试 1. 将一张测试照片(亚洲年轻女性)转换为卡通风格: ```shell python test.py --photo_path ./images/photo_test.jpg --save_path ./images/cartoon_result.png ``` 2. 测试输出如下,表示漫画生成成功,生成结果存放在`--save_path`设置的路径下。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 105
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值