给学妹换个风格,画风突变【❤️CVPR 2020 风格迁移之NICE-GAN❤️】

简介: 重用判别器进行编码:实现无监督的图像到图像翻译;

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

❤️ 【带你了解】❤️

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

🔔 基础信息

🎉 git 官方 环境依赖如下:

gitHub 官方

1

📢 环境搭建

  • 服务器:ubuntu1~18.04 Quadro RTX 5000 16G
  • CUDA版本 V10.0.130
conda create -n nice python=3.6.9

conda activate nice

pip install torch==1.1.0

pip install torchvision==0.3.0
或者(建议使用 conda 来安装)
conda install pytorch==1.1.0 torchvision==0.3.0 cudatoolkit=10.0 -c pytorch

pip install pillow==5.2.0

pip install opencv-python

pip install scipy
pip install thop

🎄 项目结构

 git clone https://github.com/alpc91/NICE-GAN-pytorch.git
 
 cd NICE-GAN-pytorch
 
 cd 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://positive.blog.csdn.net/article/details/120235766

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

🎄如果感觉文章看完了不过瘾,还想更进一步,那么可以来我的其他 专栏 看一下哦~
❤️❤️❤️❤️❤️❤️
计算机视觉正确打开方式 计算机视觉、超分重建、图像修复、目标检测、硕博交流
❤️❤️❤️❤️❤️❤️

end.jpg

相关实践学习
部署Stable Diffusion玩转AI绘画(GPU云服务器)
本实验通过在ECS上从零开始部署Stable Diffusion来进行AI绘画创作,开启AIGC盲盒。
目录
相关文章
|
6月前
看张手绘草图就能合成图形程序,加州伯克利让扩散模型掌握新技能
【7月更文挑战第12天】加州伯克利研究团队利用神经扩散模型创新程序合成,通过在语法树上反向消除“噪声”实现迭代编辑,改善了传统LLMs自回归生成的局限性。这种方法能看手绘草图生成图形程序,结合搜索进行调试,适用于逆图形任务,性能优越,但目前仅支持有限的程序结构。[[arxiv:2405.20519](https://arxiv.org/pdf/2405.20519)]
45 2
|
8月前
|
机器学习/深度学习 数据采集 算法
【传知代码】无监督动画中关节动画的运动表示-论文复现
本文探讨了数据驱动的无监督动画技术,尤其是针对关节动画的运动表示。研究提出三个主要贡献:1) 使用区域表示增强一阶运动稳定性;2) 明确建模背景运动以稳定点识别;3) 在无监督空间中解耦形状和姿态防止形状转移。通过这些改进,无监督运动转移的精度提升,特别是对关节对象的动画。作者还创建了一个新的TED演讲者数据集,证明了方法的有效性,其性能优于现有技术。文章总结了监督和无监督图像动画方法,并介绍了关节动画的基本原理,包括骨架、关节表示和姿势表示。核心逻辑涉及一阶运动模型、PCA-based运动估计和背景运动估计,以及图像生成过程。
【传知代码】无监督动画中关节动画的运动表示-论文复现
|
人工智能 编解码 移动开发
NeRF基于线稿生成逼真三维人脸,细节风格随意改,论文已上SIGGRAPH
NeRF基于线稿生成逼真三维人脸,细节风格随意改,论文已上SIGGRAPH
469 0
|
人工智能 测试技术
「化腐朽为神奇」:Stability AI又出新工具,草图瞬间精致,不同风格随心选
「化腐朽为神奇」:Stability AI又出新工具,草图瞬间精致,不同风格随心选
119 0
|
人工智能 安全 机器人
研究者意外发现DALL-E 2在用自创语言生成图像:全文黑话,人类都看不懂
研究者意外发现DALL-E 2在用自创语言生成图像:全文黑话,人类都看不懂
136 0
|
算法 C++
【硬核教程】,如何摆脱黑白框编程,1小时学会用c++做一个飞机大战
【硬核教程】,如何摆脱黑白框编程,1小时学会用c++做一个飞机大战
|
机器学习/深度学习 计算机视觉
英伟达的实习生提出零样本风格迁移:多模态CLIP玩出花,只用文本就能干CV的活!
零样本的风格迁移听说过没有?英伟达一个实习生小哥集文本CLIP和图像生成StyleGAN于一身,只需要输入几个单词就可以完成你想要的风格迁移效果!再也不用为了风格迁移找数据啦!
313 0
英伟达的实习生提出零样本风格迁移:多模态CLIP玩出花,只用文本就能干CV的活!
|
自然语言处理 算法 定位技术
Nature封面:神经科学家成功绘制大脑语义地图,解读人类思想迈出关键一步
科学家使用大脑成像技术绘制了一幅地图,让我们清楚看到大脑不同区域如何表征 958 个常见英语词汇及其含义。揭开这个谜题会有意想不到的回报:通过观察大脑活动,就能知道你在想什么。
638 0
Nature封面:神经科学家成功绘制大脑语义地图,解读人类思想迈出关键一步
|
机器学习/深度学习 人工智能 Go
谷歌发布“怪兽生成器”!你画草图,GAN帮你生成幻想生物
谷歌发布“怪兽生成器”!你画草图,GAN帮你生成幻想生物
679 0
|
机器学习/深度学习 PyTorch 算法框架/工具
北大图灵班本科生带来动画CG福音,「最懂骨骼的卷积网络」,无需配对样本实现动作迁移 | SIGGRAPH
云栖号资讯:【点击查看更多行业资讯】在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来! 我有一个动画形象,我有一套人体动作,可想要把它们组合成真正的动画,可不是 1+1 这么简单。 别看这体型迥异的三位动作整齐划一,支撑动画的骨架却差异甚大。