【摘要】详细分析了基于Keras实现图片风格迁移的生成算法,提供了GUI实现工具;同时,比较了生成式深度学习跟常规深度学习的差异,拓展对神经网络的认识。
一. 图片风格迁移生成算法详解
该实现算法及代码,主要取自Keras 之父写的 《Python 深度学习》,有推荐价值。在此基础上,本人开发了一个用tkinter写的实用小工具,通过设置目标图片,风格图片,按开始转换,即可生成风格迁移后的新图片。
源代码可通过以下Github地址获取
https://github.com/EdwinZhang1970/Python/tree/master/Netural%20Style%20Transfer
1. 算法要达到的目标
- 提供目标图片,风格图片,产生一个新的生成图片
- 生成图片需要尽量保留目标图片的内容;同时应用风格图片的风格
2. 如何定义和获得图片的内容特征值,风格特征值
- 根据对深度学习神经网络模型的研究分析,模型网络更靠底部(靠近输入端)的层激活包含了图片的局部,具体信息;更靠顶部(靠近输出端)的层激活,包含了图片的全局,抽象信息。本例算法采用的是VGG19模型,其模型结构是
2. 取图片在模型中的更靠顶部的层激活信息,作为图片的内容特征值,因为是全局的,因此,可以只取一层就可以了。本例算法取的是conv5_2, 代码中为block5_conv2
content_layer = 'block5_conv2'
3. 取图片在模型中的更靠底部的层激活信息,作为图片的风格特征值,因为是局部的,因此,需要多取几层,以获得更全面的风格特征信息。本例中取的是 conv1_1,