风格迁移大作业
学习规划
- 跑通一份代码!!!(done)
- 对照代码、Blog和论文理解相应的算法过程
- 规划下一步,修改代码(done),实现预计功能(done)
- 调参,跑出较好
Problem Queue
- 算法和代码对应?细化?(尽量搞吧。。。PPT/报告里讲啥?
- 代码修改?
- 损失函权重参数、多张图片风格渐变效果?
损失函数形式- 本代码的生成图片的初始值是内容图片,可以改成普通的白噪声/突出重点的黑白轮廓图/抠图。实际上,将初始值设定为内容图像,就是以这个作为迭代的起点,一定程度上掩盖了迭代次数少的问题。
- 融合2个以上的风格,跑个比较优美的风格过度效果?(掩盖一下垃圾的图片效果。
- 可以参考:https://zhuanlan.zhihu.com/p/27512619 展示图片效果。。
- 只包含风格的图像
- 只包含内容的图像
- 玄学感受?风格图片元素单一,不要过于复杂,最好不要有明显的"主角"或者关键点,火?;内容图像相反需要有明显的”主角“和重点,大头贴、肖像;初始化图片需要对内容图片做一些处理得到。。比如强调"主角",模糊甚至抹去背景,颜色重?
- 怎样挑数据?
- 参考网上一些以有的比较好的效果图片,查找类似的图片
- 对照测试,需要跑出比较好的结果
- 把 GPU 版还是配好吧。。。 迭代次数增加10-20倍?从十几个小时编程几十分钟。。。次数不够跑不出好效果吧。。。是可以分组跑的,用上一次迭代的结果作为这一次迭代的初始值。
跑通一份代码!!!
- 尝试配置 win 下pycharm + tensorflow (done) anaconda 大法好
Note:
- 参考:https://blog.csdn.net/gongxsh00/article/details/81318404
- python 版本与 anaconda 对应尽量最新
- 激活虚拟环境,退出虚拟环境
activate tensorflow
deactivate
- tansorflow 、pip 都更新到最新 :
pip install --upgrade pip
- pip 链接超时,可以在使用pip的时候加参数-i https://pypi.tuna.tsinghua.edu.cn/simple
- 无权限更新,就开管理员
- 大部分问题都是因为版本不对应
- 注意目录
- 对应的 python 以及 python/scripts 要加入环境变量(多加没坏处。
- pycharm 版本改成最新的 (pycharm 有些奇怪的坑,尽量用 anaconda)
- pip .ReadTimeoutError: HTTPSConnectionPool(host='files.pythonhosted.org', port=443): Read timed out. (使用:pip install *** --default-timeout=1000)
- 找一份代码、运行成功 (done)
https://www.cnblogs.com/andrewwang/p/10836929.html
https://blog.csdn.net/dcrmg/article/details/81269653
https://blog.csdn.net/u010900574/article/details/53427544
https://github.com/keras-team/keras - 学会远程使用服务器,调用老师提供的显卡计算,配置环境 tensorflow 运行样例代码(done)
对照代码、Blog和论文理解相应的算法过程
规划下一步流程,修改代码,实现预计功能
修改样例代码实现加入2个风格(done)
- Modify1
parser.add_argument('style_reference_image_path_1', metavar='ref', type=str,
help='Path to the style reference image_1.')
parser.add_argument('style_reference_image_path_2', metavar='ref', type=str,
help='Path to the style reference image_2.')
- Modify2
style_reference_image_path_1 = args.style_reference_image_path_1
style_reference_image_path_2 = args.style_reference_image_path_2
- Modify3
style_reference_image_1 = K.variable(preprocess_image(style_reference_image_path_1))
style_reference_image_2 = K.variable(preprocess_image(style_reference_image_path_2))
- Modify4
后边需要注意每个量的位置
input_tensor = K.concatenate([base_image,
style_reference_image_1,
style_reference_image_2,
combination_image], axis=0)
- Modify5
combination_features由于4操作这里需要注意维数的变化
combination_features = layer_features[3, :, :, :]
- Modify6
修改损失函数(待修改)
for layer_name in feature_layers:
layer_features = outputs_dict[layer_name]
style_reference_features_1 = layer_features[1, :, :, :]
combination_features = layer_features[3, :, :, :]
sl = style_loss(style_reference_features_1, combination_features)
loss += (style_weight / len(feature_layers)) * sl
style_reference_features_2 = layer_features[2, :, :, :]
combination_features = layer_features[3, :, :, :]
sl = style_loss(style_reference_features_2, combination_features)
loss += (style_weight / len(feature_layers)) * sl
Note
-
主要代码可以根据 keras中文文档 了解含义
-
甚至并不用深入理解代码。。。跟着感觉把代码改了一下。。。莫名其妙代码一遍改好。。。跑一下就把结果跑出来了。。。