大家好,我是千与千寻,相信一定有很多的小伙伴看过动漫电影《冰雪奇缘》~
《冰雪奇缘》讲述的是在一个四面环海、风景如画的阿伦黛尔王国,公主艾莎天生具有制造冰雪的超能力,将任何的场景转眼变成“冰天雪地”般的特效,十分的神奇。
感觉的每次到夏天的时候看《冰雪奇缘》,简直有是夏季败火的首选电影~
感觉接下来我不能接着剧透下去了,有兴趣的一定要去看一看,迪士尼的动漫电影的效果真的不错~
剧中公主艾莎的冰雪魔法的特效~
说个题外话,不知道大家看电影的时候是不是也一样的有代入感呢?记得自己小时候看《蜘蛛侠》的时候,每次看到蜘蛛侠的电影的时候(来张剧照~)
看着蜘蛛侠能自由自在的荡秋千,还能随时随地的从手腕里面吐出来蛛丝,
甚至也想被“蜘蛛”咬上一口...(哈哈哈,开个玩笑,毕竟那只是科幻电影中的特效)。
但是今天不一样,我们今天使用Python语言以及深度学习模型算法来实现《冰雪奇缘》中的公主艾莎的冰雪魔法~
我们先直接看“魔法效果”~
在上面的几组对比图片中,我选取了几组比较有代表性的效果图片~
左边的图片为夏季的风景图片,右边是经过“冰雪魔法”处理后的图片
哈哈哈,不卖关子了,这个冰雪魔法的真面目,就是深度学习模型中的CycleGAN,
GAN深度学习网络模型是深度学习模型下的生成对抗网络的范畴,一般来说,我们使用CycleGAN网络来进行图像的风格迁移。
事实上我们在两份图片中所进行的操作是图片景色的“冬夏风格迁移”,具体的实现原理是将夏季的景色图片,或者冬季的景色图片,进入GAN网络进行模型的训练,提取特征参数,进行预测图片的矩阵像素值运算。
简单来理解,生成对抗网络的深度学习模型,其实是生成器与判别器的一场博弈,生成器生成的图片放入判别器进行判别,模型性能最优的时候是生成器生成的假图片,判别器无法正确识别时候,性能最好。
算法实现步骤
使用Git拷贝下来整个CycleGAN的Python代码工程文件,代码工程为使用pytorch的深度学习框架进行编写,Git仓库的地址:
https://github.com/junyanz/pytorch-CycleGAN-and-pix2pix
如果不想自己搭建深度学习的运行环境,可以使用Google colab中的notebook
每个账号大约有12小时的连续免费算力使用~
显卡配置为Tesla K80 14G显存
在notebook终端执行以下指令:
git clone https://github.com/junyanz/pytorch-CycleGAN-and-pix2pix
由于GAN类型的神经网络模型的训练时间比较长
因为需要进行卷积运算操作进行图片的标签判别同时要进行反卷积的运算进行“假图片”的生成,因此网络结构较深,运算参数复杂,训练时间较长。
notebook终端执行脚本命令,我们所使用的是冬夏风格迁移的运算模型,因此选择summer2winter_yosemite的预训练模型
cd pytorch-CycleGAN-and-pix2pix && bash ./scripts/download_cyclegan_model.sh summer2winter_yosemite
我们所下载的测试图片数据集中包含四个文件夹,trainA,trainB,testA,testB。
我们只需要使用其中的一个测试文件夹即可,我们选择的模型是夏季风格转换为冬季风格。
因此使用夏季风格的测试图片testA的文件中的图片进行预测结果~
在notebook终端中执行脚本命令,下载冬夏图片数据集文件。
cd /content/pytorch-CycleGAN-and-pix2pix && bash datasets/download_cyclegan_dataset.sh summer2winter_yosemite
准备的资源条件已经完善,接下来进行测试,在终端执行模型测试文件脚本,notebook中执行命令:
python test.py --dataroot datasets/summer2winter_yosemite/testB --name summer2winter_yosemite_pretrained --model test --no_dropout
显示执行完毕,在输出终端输出预测图片结果日志,查看result文件夹下,已经有图片的处理结果,实验完成~
结语
怎么样,你学会了吗?赶快动手试一试吧~
自己亲手实现公主艾莎的“冰雪魔法”~
怎么样,是不是效果很酷炫呢,我是千与千寻,我们下期见~
············END············