我梦想着绘画,我画着我的梦想。 ——文森特·威廉·梵高

# 安装一个取名为painting的虚拟环境
conda create -n painting python=3.7
# 切换到painting环境
source activate painting
pip install keras
pip install tensorflow -i https://pypi.douban.com/simple
pip install pillow
从github克隆keras代码:
git clone https://github.com/keras-team/keras.git
cd keras/examples主要的代码为neural_style_transfer.py文件。
看了一下代码,使用的ImageNet上预训练过的VGG19做的迁移学习。
VGG是Oxford的Visual Geometry Group的组提出的。
VGG有两种结构,分别是VGG16和VGG19,两者并没有本质上的区别,只是网络深度不一样。该网络主要工作是证明了增加网络的深度能够在一定程度上影响网络最终的性能。
python neural_style_transfer.py --iter 15 ~/Desktop/hua.jpeg ~/Desktop/xiangrikui.jpeg ~/Desktop/hua_fangao其中--iter为指定训练轮数,/Desktop/hua.jpeg为自己需要训练的原始照片,/Desktop/xiangrikui.jpeg为梵高的向日葵,~/Desktop/hua_fangao为结果,注意没有.jpg等后缀。
梵高的向日葵

原始照片

训练过程中的画
第一次迭代

第五次迭代

第十次迭代

第十五次迭代

从上面可以看出来,随着次数的增加,画画风格越来越像梵高。
这边使用的i5、8G的mac电脑用cpu训练15轮35min。
Keras github地址:https://github.com/keras-team/keras
使用TensorFlow作画:https://github.com/lengstrom/fast-style-transfer