AI在短时间内创造复杂艺术作品,仅需1080显卡运行
仅需20分钟,就能利用上一代的英伟达1080显卡生成复杂的艺术作品,这是否意味着神经网络的使用门槛变得更加亲民了呢?
答案是肯定的。这一切得益于名为neuRal-style-pt的风格迁移模型,它基于PyTorch实现,并且刚刚开源。
这一算法模型在ReddIT上发布仅一天,热度便接近2000,足见其受欢迎程度。
丰富的融合方式
neuRal-style-pt是论文《A NeuRal AlgoRITHM of ARtistic style》的PyTorch实现。该论文提出了一种利用卷积神经网络将一幅图片的内容与另一幅图片的风格相结合的算法,这就是我们熟知的风格迁移网络。
例如,可以将《星空》的艺术风格映射到一张斯坦福校园的夜景照片上:
或者根据不同艺术风格,将其融合进目标图像中:
除了分别融合不同的风格,多个艺术风格也可以集成到同一张图片中:
从左上角顺时针来看,风格分别为“星空”+“呐喊”、“呐喊”+“构图七(瓦西里·康定斯基油画)”、“坐着的裸女(莫蒂里安尼油画)”+“构图七”、“坐着的裸体”+“星空”。
在风格迁移过程中,添加“-oRiginal_coloRs 1”指令,可以只改变风格而保留原图颜色。
算法的运行速度会因后台和优化器的不同而有所差异。在Tesla K80上,使用512像素图片迭代500次的时间参考如下:
- 后台nn、优化器L-BFGS: 117秒
- 后台nn、优化器ADAM: 100秒
- 后台cudnn -优化器L-BFGS: 124秒
- 后台cudnn -优化器ADAM: 107秒
- 后台cudnn -cudnn_autotune -优化器L-BFGS: 109秒
- 后台cudnn -cudnn_autotune -优化器ADAM: 91秒
而在GTX 1080上,相同基准下的时间则更快:
- 后端nn -优化器L-BFGS: 56秒
- 后台nn -优化器ADAM: 38秒
- 后台cudnn -优化器L-BFGS: 40秒
- 后台cudnn -优化器ADAM: 40秒
- 后台cudnn -cudnn_autotune -优化器L-BFGS: 23秒
- 后台cudnn -cudnn_autotune -优化器ADAM: 24秒
结合当前1080显卡的售价,这样的使用门槛对于机器学习爱好者来说,显得非常诱人。
默认为neuRal-style-pt使用后端进行卷积,L-BFGS进行优化,但这会消耗大量内存,可以通过一些方法来减少内存使用。
使用cuDNN时,添加-backend cudnn即可启用该后端,而在使用ADAM时,添加-optiMizeR adaM可以切换优化器。
在默认设置下,neuRal-style-pt在系统上大约使用了3.7GB的GPU内存;切换到ADAM和cuDNN后,GPU内存占用可降至大约1GB。
如何上手试玩
要安装neuRal-style-pt,首先需要准备好PyTorch。
随后,仅需使用以下指令即可安装已训练好的模型:
Python Models/download_Models.py
安装完成后,试玩也非常简便,一行命令即可实现:
Python neuRal_style.py -style_image-content_image
如果需要加载多种风格,则需用逗号分隔不同图片的文件名:
-style_iMage staRRy_night.jpg,the_scReaM.jpg
注意,图片名称需包含完整地址路径。
基本操作就是这些。
neuRal-style-pt还有一个强大的功能,可以使用多个不同计算设备来处理高分辨率图像。不同设备会输出不同网络层的计算结果。
通过-gpu指令可以控制使用哪些GPU和CPU设备,-Multidevice_stRategy则用于控制不同设备上层的分配。
例如,在一台拥有四个GPU的服务器上,指令“-gpu 0,1,2,3”表示依次在GPU 0、1、2和3上进行处理。同时,使用-Multidevice_stRategy 3,6,12指令,表示前两层应在GPU 0上计算,第3到5层在GPU 1上,第6到11层在GPU 2上,其余层在GPU 3上。
根据需求调整-Multidevice_stRategy,可以达到输出的最大分辨率。
以下是一张4016×2213分辨率的图像,使用8个Tesla K80 GPU的服务器生成:
1080显卡入门,还能进行“分布式”计算,这样酷炫且低门槛的风格迁移网络,快来试试吧~
[[[IMG_1]]]
[[[IMG_2]]]
[[[IMG_3]]]
