【深度学习入门项目】给学妹换个风格,画风突变【❤️CVPR 2020 风格迁移之NICE-GAN❤️】

本文主要是介绍【深度学习入门项目】给学妹换个风格,画风突变【❤️CVPR 2020 风格迁移之NICE-GAN❤️】,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

❤️【深度学习入门项目】❤️ 之 【风格迁移】 初识 | 🚀学会【对抗训练】,你和学妹便不会再有尴尬🚀


❤️ 【带你了解】❤️


  • ❤️ 风格迁移 ========》一键换装
  • 💙 人生多一点尝试 ===》画风突变

文章目录

    • 🔔 基础信息
    • 🎉 git 官方 环境依赖如下:
    • 📢 环境搭建
    • 🎄 项目结构
      • 💜 加入数据集
      • 💜 训练参数设置
    • 🎄 训练和测试
      • 💜 Train
      • 💜 Test
    • 💬 备注
    • 👋 可能遇到的报错
    • 🚀 给学妹换个风格 🚀
      • 💜 训练分析
      • 💜 学妹还是有的
    • 🍖 训练代码+数据分享
    • 🚀🚀 文末专栏推荐部分 🚀🚀
    • ❤️ 当生成器和判别器趋于平衡,那便是爱情 💜


🔔 基础信息


  • Reusing Discriminators for Encoding: Towards Unsupervised Image-to-Image Translation
  • 《重用判别器进行编码:实现无监督的图像到图像翻译》
  • https://arxiv.org/pdf/2003.00273.pdf
  • 论文精简翻译
  • 官方 PyTorch 实现 – https://github.com/alpc91/NICE-GAN-pytorch

🎉 git 官方 环境依赖如下:


gitHub 官方

1


📢 环境搭建


  • 服务器:ubuntu1~18.04 Quadro RTX 5000 16G
  • CUDA版本 V10.0.130
conda create -n nice python=3.6.9conda activate nicepip install torch==1.1.0pip install torchvision==0.3.0
或者(建议使用 conda 来安装)
conda install pytorch==1.1.0 torchvision==0.3.0 cudatoolkit=10.0 -c pytorchpip install pillow==5.2.0pip install opencv-pythonpip install scipy
pip install thop

🎄 项目结构


 git clone https://github.com/alpc91/NICE-GAN-pytorch.gitcd NICE-GAN-pytorchcd dataset/

💜 加入数据集

1-0

💜 训练参数设置

1-1


🎄 训练和测试


💜 Train

# 显卡16G不够用,所以设置  --light True python main.py --dataset horse2zebra --light True# 指定多卡训练的方式如下CUDA_VISIBLE_DEVICES=2,3 python main.py --dataset horse2zebra --light True# nohup 把训练进程放到后台nohup python main.py --dataset horse2zebra --light True &

90分钟 训练 5000 个epoch ,训练效果如下

1-2

💜 Test

python main.py --dataset horse2zebra --phase test  --light True

测试运行输出如下

python main.py --dataset horse2zebra --phase test  --light True# 测试运行输出如下number of epochs must be larger than or equal to one##### Information #####
# light :  True
# dataset :  horse2zebra
# batch_size :  1
# iteration per epoch :  300000
# the size of image :  256
# the size of image channel :  3
# base channel number per layer :  64##### Generator #####
# residual blocks :  6##### Discriminator #####
# discriminator layers :  7##### Weight #####
# adv_weight :  1
# cycle_weight :  10
# recon_weight :  10
-----------------------------------------------
[INFO] Register count_linear() for <class 'torch.nn.modules.linear.Linear'>.
[INFO] Register count_convNd() for <class 'torch.nn.modules.conv.Conv2d'>.
[INFO] Register count_relu() for <class 'torch.nn.modules.activation.LeakyReLU'>.
[Network disA] Total number of parameters:  93.749M
[Network disA] Total number of FLOPs:  12.013G
-----------------------------------------------
[INFO] Register zero_ops() for <class 'torch.nn.modules.activation.ReLU'>.
[INFO] Register count_linear() for <class 'torch.nn.modules.linear.Linear'>.[Network gen2B] Total number of parameters:  16.192M
[Network gen2B] Total number of FLOPs:  67.552G
-----------------------------------------------
5000 [测试使用模型的迭代次数]dataset/horse2zebra/testA/n02381460_1000.jpg
dataset/horse2zebra/testA/n02381460_1010.jpg
...

1-3


💬 备注


  • 该模型训练中一次保存,大小 1.2 个G
  • –batch_size == 1 时,GPU 占用 7679MiB
  • –batch_size == 2 时,GPU 占用 12473MiB
  • –batch_size == 4 时,16G 的GPU就不够用啦

👋 可能遇到的报错


单卡训练,NICE-GAN full version 训练, 【16G】GPU 不够用

  • CUDA_VISIBLE_DEVICES=3 python main.py --dataset horse2zebra
RuntimeError: CUDA out of memory. Tried to allocate 1024.00 MiB (GPU 0; 15.75 GiB total capacity; 13.78 GiB already allocated; 782.44 MiB free; 499.74 MiB cached)

解决方法如下

  • 经验证换用 24 G 以上更大内存的 GPU 进行训练,不会遇到该错误,即进行【NICE-GAN full version】训练
  • 训练时,追加参数 --light True 即进行【NICE-GAN light version】训练

🚀 给学妹换个风格 🚀


这里使用 【梵高油画和现实风景图像】构成的数据集进行 50万 iteration 训练

nohup python main.py --dataset vangogh2photo --light True &# 训练时长,最终定格在 5天

训练结束输出如下

[499995/500000] time: 431994.8614 d_loss: 2.32049370, g_loss: 3.90420341
[499996/500000] time: 431995.4892 d_loss: 2.04860115, g_loss: 3.71788430
[499997/500000] time: 431996.1223 d_loss: 2.22972393, g_loss: 4.25117588
[499998/500000] time: 431996.7609 d_loss: 2.36788273, g_loss: 5.42507362
[499999/500000] time: 431997.3897 d_loss: 2.53704023, g_loss: 4.05708218
[500000/500000] time: 431998.0172 d_loss: 2.21194649, g_loss: 4.53932619
current D_learning rate:-1.7075100951256253e-16
current G_learning rate:-1.7075100951256253e-16[*] Training finished!

💜 训练分析

可以看到,默认每隔10w iteration 保存一次模型,50w 训练只保存了 5次模型
这 5 次保留的模型经测试发现,效果都无法让人心动


意外翻车,原因分析如下

  • Gan 网络的模型训练本身就有很多不稳定性、不确定性存在
  • 改进策略,数据集 trainA 和 trainB 风格尽量一致
  • 训练时,建议每隔 1 w 或者 5k iteration 保存一次模型
  • 这样可以得到多个生成模型,然后一一测试,也许会有惊喜
  • 对于 NiceGAN 而言,实测应用,模型训练基本是这样一个思路
  • 只能说,iteration 次数越多,理论上训练效果相对会更好,但是实际应用中,效果好的模型未必就是训练次数最大的那次得到的模型

2-1

💜 学妹还是有的

论数据集风格统一的重要性


【❤️下次,一定,让你更美❤️】

2-3


🍖 训练代码+数据分享


💜【把训练数据 + 代码分享给大家】💜

链接:https://pan.baidu.com/s/1zNR8TcXmQU7_nCB20Rqzmw 
提取码:2021

🚀🚀 文末专栏推荐部分 🚀🚀


  • 🎄如果感觉文章看完了不过瘾,还想更进一步,那么可以来我的其他 专栏 看一下哦~
  • ❤️ 图像风格转换 —— 代码环境搭建 实战教程【关注即可阅】!
  • 💜 图像修复-代码环境搭建-知识总结 实战教程 【据说还行】
  • 💙 超分重建-代码环境搭建-知识总结 解秘如何让白月光更清晰【脱单神器】
  • 💛 YOLO专栏,只有实战,不讲道理 图像分类【建议收藏】!
  • 🎄 个人整理的Cuda系列 Linux安装教程【适合小白进阶】
  • 💜 ubuntu18给当前用户安装cuda11.2 图文教程 | 配置cuDNN8.1 |
  • 💜 Linux服务器下给当前用户安装自己的CUDA10.0
  • 💜 Linux下cuda10.0安装Pytorch和Torchvision
  • 💜 Linux 可以安装多个版本的Cuda 吗 | 给我一台新的服务器,我会怎么安排 Cuda
  • 💜 查看CUDA和cuDNN的版本号

❤️ 当生成器和判别器趋于平衡,那便是爱情 💜


9-7

9-8


这篇关于【深度学习入门项目】给学妹换个风格,画风突变【❤️CVPR 2020 风格迁移之NICE-GAN❤️】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/521711

相关文章

五大特性引领创新! 深度操作系统 deepin 25 Preview预览版发布

《五大特性引领创新!深度操作系统deepin25Preview预览版发布》今日,深度操作系统正式推出deepin25Preview版本,该版本集成了五大核心特性:磐石系统、全新DDE、Tr... 深度操作系统今日发布了 deepin 25 Preview,新版本囊括五大特性:磐石系统、全新 DDE、Tree

Python 中 requests 与 aiohttp 在实际项目中的选择策略详解

《Python中requests与aiohttp在实际项目中的选择策略详解》本文主要介绍了Python爬虫开发中常用的两个库requests和aiohttp的使用方法及其区别,通过实际项目案... 目录一、requests 库二、aiohttp 库三、requests 和 aiohttp 的比较四、requ

SpringBoot项目启动后自动加载系统配置的多种实现方式

《SpringBoot项目启动后自动加载系统配置的多种实现方式》:本文主要介绍SpringBoot项目启动后自动加载系统配置的多种实现方式,并通过代码示例讲解的非常详细,对大家的学习或工作有一定的... 目录1. 使用 CommandLineRunner实现方式:2. 使用 ApplicationRunne

使用IntelliJ IDEA创建简单的Java Web项目完整步骤

《使用IntelliJIDEA创建简单的JavaWeb项目完整步骤》:本文主要介绍如何使用IntelliJIDEA创建一个简单的JavaWeb项目,实现登录、注册和查看用户列表功能,使用Se... 目录前置准备项目功能实现步骤1. 创建项目2. 配置 Tomcat3. 项目文件结构4. 创建数据库和表5.

Python项目打包部署到服务器的实现

《Python项目打包部署到服务器的实现》本文主要介绍了PyCharm和Ubuntu服务器部署Python项目,包括打包、上传、安装和设置自启动服务的步骤,具有一定的参考价值,感兴趣的可以了解一下... 目录一、准备工作二、项目打包三、部署到服务器四、设置服务自启动一、准备工作开发环境:本文以PyChar

多模块的springboot项目发布指定模块的脚本方式

《多模块的springboot项目发布指定模块的脚本方式》该文章主要介绍了如何在多模块的SpringBoot项目中发布指定模块的脚本,作者原先的脚本会清理并编译所有模块,导致发布时间过长,通过简化脚本... 目录多模块的springboot项目发布指定模块的脚本1、不计成本地全部发布2、指定模块发布总结多模

SpringBoot项目删除Bean或者不加载Bean的问题解决

《SpringBoot项目删除Bean或者不加载Bean的问题解决》文章介绍了在SpringBoot项目中如何使用@ComponentScan注解和自定义过滤器实现不加载某些Bean的方法,本文通过实... 使用@ComponentScan注解中的@ComponentScan.Filter标记不加载。@C

javafx 如何将项目打包为 Windows 的可执行文件exe

《javafx如何将项目打包为Windows的可执行文件exe》文章介绍了三种将JavaFX项目打包为.exe文件的方法:方法1使用jpackage(适用于JDK14及以上版本),方法2使用La... 目录方法 1:使用 jpackage(适用于 JDK 14 及更高版本)方法 2:使用 Launch4j(

Node.js 中 http 模块的深度剖析与实战应用小结

《Node.js中http模块的深度剖析与实战应用小结》本文详细介绍了Node.js中的http模块,从创建HTTP服务器、处理请求与响应,到获取请求参数,每个环节都通过代码示例进行解析,旨在帮... 目录Node.js 中 http 模块的深度剖析与实战应用一、引言二、创建 HTTP 服务器:基石搭建(一

Docker集成CI/CD的项目实践

《Docker集成CI/CD的项目实践》本文主要介绍了Docker集成CI/CD的项目实践,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学... 目录一、引言1.1 什么是 CI/CD?1.2 docker 在 CI/CD 中的作用二、Docke