使用残差网络与wgan制作二次元人物头像

ref:https://blog.csdn.net/qq_41103479/article/details/119352714

我复现的项目链接:https://github.com/dlagez/gan_resnet

参考的wgan链接:https://github.com/martinarjovsky/WassersteinGAN

主要有两个地方需要注意,一个使用了wgan的损失函数。

class Wasserstein(nn.Module):def forward(self, pred_real, pred_fake=None):if pred_fake is not None:loss_real = -pred_real.mean()loss_fake = pred_fake.mean()loss = loss_real + loss_fakereturn losselse:loss = -pred_real.mean()return loss

一个是使用了残差网络作为gan的主体

class BasicBlock(nn.Module):def __init__(self, in1):  # in1为输入的channel大小,BasicBlock输出等于输入channel大小super(BasicBlock, self).__init__()self.conv1 = nn.Conv2d(in1, in1 * 2, kernel_size=1,stride=1, padding=0, bias=False)self.bn1 =nn.BatchNorm2d(in1*2)self.relu1 = nn.LeakyReLU(0.2)self.conv2 = nn.Conv2d(in1*2, in1, kernel_size=3,stride=1, padding=1, bias=False)self.bn2 =nn.BatchNorm2d(in1)self.relu2 = nn.LeakyReLU(0.2)def forward(self, x):residual = xout = self.conv1(x)# out = self.bn1(out)out = self.relu1(out)out = self.conv2(out)# out = self.bn2(out)out = self.relu2(out)out = out + residualreturn outclass netD(nn.Module):def __init__(self):super(netD, self).__init__()self.conv1 = nn.Conv2d(3, 64, kernel_size=3 ,stride=1, padding=1)self.layer1 = nn.Sequential(BasicBlock(64),nn.AvgPool2d(3, 2),BasicBlock(64),)self.layer2 = nn.Sequential(nn.AvgPool2d(3,2),BasicBlock(64))self.layer3 = nn.Sequential(nn.AvgPool2d(3, 2),BasicBlock(64),)self.layer4 = nn.Sequential(nn.AvgPool2d(3, 2),BasicBlock(64),)self.layer5 = nn.Sequential(nn.BatchNorm2d(64),nn.ReLU(True))self.fc = nn.Sequential(nn.Linear(576, 1),)def forward(self, x):out = self.conv1(x)out = self.layer1(out)out = self.layer2(out)out = self.layer3(out)out = self.layer4(out)out = self.layer5(out)out = torch.flatten(out, start_dim=1)out = self.fc(out)out = torch.sigmoid(out)return out
class netG(nn.Module):def __init__(self):super().__init__()self.linear = nn.Linear(nz, 64*2*2)self.layer1 = nn.Sequential(BasicBlock(64),nn.UpsamplingNearest2d(scale_factor=2),BasicBlock(64),nn.UpsamplingNearest2d(scale_factor=2),)self.layer2 = nn.Sequential(BasicBlock(64),nn.UpsamplingNearest2d(scale_factor=2),)self.layer3 = nn.Sequential(BasicBlock(64),nn.UpsamplingNearest2d(scale_factor=2))self.layer4 = nn.Sequential(BasicBlock(64),nn.UpsamplingNearest2d(scale_factor=2))self.Conv = nn.Sequential(BasicBlock(64),nn.BatchNorm2d(64),#  nn.LayerNorm([64,96,96]),nn.ReLU(True),nn.Conv2d(64, 3, kernel_size=3, padding=1, stride=1),nn.Tanh())def forward(self, z):x = self.linear(z)x = x.view(batch_size,64,2,2)x = self.layer1(x)x = self.layer2(x)x = self.layer3(x)x = self.layer4(x)x = self.Conv(x)return x

使用方法:

1.将我的项目clone到本地:

2.下载数据集到文件夹:data

3.执行下面的命令 --data_path 表示下载的数据集的位置 --outf 表示生成的图片和权重存放的地址

python /content/gan_resnet/train.py --epoch 20 --batchSize 8 --data_path /content/gan_resnet/data/ --outf /content/drive/MyDrive/data/gan_resnet/v5/

训练效果:

训练效果感觉比较差,尤其是当训练的次数多了之后,感觉生成的图片的质量变得差了一点。这里我还没有找到原因。

这是训练9个epochs的效果

这是训练20个epochs的效果

这是训练100个epochs的效果

感觉训练是有问题的,我先是在google colab里面运行了10个epochs。然后再转到实验室的3090里面运行了一晚上。但是效果还是很差。不知道是不是分了两次训练的问题。

使用残差网络与wgan制作二次元人物头像相关推荐

  1. 使用残差网络与wgan制作二次元人物头像:训练过程详解

    训练过程详解: 项目地址:https://github.com/dlagez/gan_resnet 我们进入到代码中解析 首先这个网络由三部分文件组成.一个train,一个model,一个loss. ...

  2. 【生成对抗网络】基于DCGAN的二次元人物头像生成(TensorFlow2)

    文章目录 1 导包 2 数据准备 3 定义生成器 4 定义判别器 5 定义损失函数和优化器 6 定义训练批次函数 7 定义可视化训练结果函数 8 定义训练主函数 9 训练 10 结果 11 使用生成器 ...

  3. 【unity游戏开发教程】Unity+Umotion Pro+VRoid+Blender制作人物模型和动画,在unity中简单制作二次元人物动画

    前言 大家好!本期教程教大家在unity中制作二次元人物模型和动画 文章目录 前言 0.环境准备 1.下载VRoid Studio 2.Umotion Pro下载 3.Mixamo网站 4.blend ...

  4. 用Paddle自动生成二次元人物头像

    用Paddle自动生成二次元人物头像 想画出独一无二的动漫头像吗?不会画也没关系!只需要输入一些随机数让卷积神经网络为你画出精致并且独一无二的动漫头像! 同时本项目也是绝佳的学习DCGAN的例子,通过 ...

  5. zip直链生成网站_手把手教你如何用飞桨自动生成二次元人物头像

    [飞桨开发者说]李思佑,昆明理工大学信息与计算科学大四本科生:2018年和2019年两次获得全国大学生数学建模比赛国家二等奖:2020年美国数学建模比赛获M奖.指导老师:昆明理工大学理学院朱志宁想画出 ...

  6. Pytorch 使用GAN实现二次元人物头像生成 保姆级教程(数据集+实现代码+数学原理)

    Pytorch 使用DCGAN实现二次元人物头像生成(实现代码+公式推导) GAN介绍   算法主体   推导证明(之后将补全完整过程)   随机梯度下降训练D,G   DCGAN介绍及相关原理 Py ...

  7. 手把手教你如何用飞桨自动生成二次元人物头像

    [飞桨开发者说]李思佑,昆明理工大学信息与计算科学大四本科生:2018年和2019年两次获得全国大学生数学建模比赛国家二等奖:2020年美国数学建模比赛获M奖. 指导老师:昆明理工大学理学院朱志宁 想 ...

  8. 使用残差网络resnet与WGAN制作一个生成二次元人物头像的GAN(pytorch)

    a GAN using Wasserstein loss and resnet to generate anime pics. 一个resnet-WGAN用于生成各种二次元头像(你也可以使用别的图像数 ...

  9. 使用SAGAN生成二次元人物头像(GAN生成对抗网络)--pytorch实现

    这是训练250epoch左右的成果. 之前的文章里面,我们使用了残差网络的形式实现生成器与辨别器,它理论上可以实现很不错的效果,但有一个很致命的缺点,就是训练太慢,很难见到成果. 这一次,我们实现了一 ...

最新文章

  1. mysql日志文件名称_MySQL 日志文件 说明
  2. jQuery-EasyUI异步加载树形菜单
  3. docker-compose 安装方法
  4. TCP/IP详解--学习笔记(7)-广播和多播,IGMP协议
  5. 没学c语言可以学python_先学C语言还是Python?资深程序员往往是这样建议的!
  6. windows2003下防火墙ISA大型实验
  7. alertmanager 告警恢复_Prometheus配置企业微信告警
  8. 石油勘探是属于计算机应用中的,计算机在石油勘探开发中的应用论文
  9. PyTorch 1.5上线:加入稳定C++前端,高级自动梯度API
  10. Ajax.dll 使用
  11. 武魂金刚少林加点、装备坐骑及江湖技能选择
  12. 升级后开机就提示“android.process.acore”停止执行 --分析 解决方式
  13. wince下的地址映射知识点滴
  14. 论文笔记_S2D.74_2021_ICRA_PENet:面向精确和高效的图像引导的深度补全
  15. Atitit  深入理解命名空间namespace  java c# php js
  16. Windows下nmap命令及Zenmap工具的使用方法
  17. 计算机网络教室环境的作用,网络教室环境与多媒体教室环境相比优势在什么地方...
  18. k8s中控制器使用详解
  19. python判断正数和负数教案_正数和负数教学设计
  20. 如何学C语言,新手必看!

热门文章

  1. SolidWorks Simulation 2016 结构 疲劳 优化 散热 变形有限元分析视频教程
  2. 2021牛客训练营5 B 比武招亲(上)(组合数学)
  3. 通过python画矢量图(matplotlib,有代码)
  4. 用计算机绘制函数图象教案,信息技术应用 用计算机画函数图象优秀教案
  5. echarts使用之label自定义
  6. 关于messenger服务
  7. 【ubuntu18.04挂载硬盘】
  8. js各运算符的执行顺序
  9. Go: 常用工具库cobra的简介与实践
  10. python 百度网盘同步_强烈推荐百度同步插件Syncy,实现百度云与本地即时同步