正文
除此之外,由于使用了VGG 19的网络,我们也需要下载它的网络模型,可以在
这里
下载, 如果有兴趣实验一下其他的网络,也可以在
Pretrained Models
中寻找如ResNet、Inception等模型来尝试。本文使用的是VGG 19和VGG 16的网络。
我也已经把相关的数据集和模型文件放在了百度云,在国内下载速度应该会更快,可以在
这里下载
我已经把训练的代码放在了
github
上,我们首先将代码clone下来:
git clone https://github.com/stevefermi/style-transfer.git
之后在该目录中新建一个名为
pretrained
的文件夹。将我们下载得到的数据集
train 2014
和
vgg_19.ckpt(或vgg_16.ckpt,类似)
放入该文件夹。 最终得到的文件夹结构如下:
- style transfer
- pretrained
- train2014
- vgg_19.ckpt
- train.py
- eval.py
- conf
- others...
之后在style transfer这一级目录中执行
python train.py
即可开始训练了。默认会选择
conf/mosaic.yml
作为风格样式的图片。如果想训练不同的风格样式的图片,通过-c来指定:
python train.py -c conf/candy.yml
即可。
如果想要实时可视化地看到训练的过程,TensorFlow提供了非常好用的TensorBoard的组件。进入训练过程中产生的models文件夹,使用
tensorboard --logdir=mosaic
,在浏览器中输入
127.0.0.1:6006
即可查看TensorBoard中提供给我们的各项Summary,包括了各种的loss,如下图:
如果你使用的是NVIDIA的较强的显卡(大约GTX 1060及以上即可),就可以开启使用CUDA加速,这可以大大减少计算时间。以我的GTX 1070+16G内存+i7 6700的处理器,每步大约需要0.6秒左右。想要得到一个比较好的结果大约需要10~12个小时。如果实在等不及的话,可以直接
下载
训练好的模型文件。当然,随着现在云计算的发展,在服务器上进行训练成为了一个成本更低,性价比更高的方案。我们接下来就尝试使用UCloud提供的UAI-Train服务来进行,UAI提供了P40的单卡/四卡方案,价格每分钟需要0.17/0.6元,相比于自己购置机器来跑训练,成本降低了许多。
在UCloud上进行UAI的训练过程,主要可以分为以下几步:
-
注册账号和实名验证
-
整理文件结构
-
上传数据集到UFile
-
打包代码镜像并上传
-
创建训练任务
-
查看TensorBoard,下载训练好的模型文件
第一步,注册账号和实名验证。首先注册一个UCloud的账号,在注册和实名验证之后,即可在如下图所示位置获取Public和Private Key: