Day19 放之四海而皆准
《21天实战Caffe》学习笔记第19天
艺术风格迁移
运行http://github.com/fzliu/style-transfer的脚本,运行中有几个小问题。
测试命令如下。
1 |
|
(以下几个Error依次发生,即解决Error 1后才引发Error 2。)
Error 1
1 |
|
根据https://github.com/BVLC/caffe/issues/438中@RawanMG的说法,可以使用matplotlib解决这个问题。
即在style.py
开头添加如下语句。
1 |
|
Error 1解决。
(这个Error可能是我的python site-packages版本较旧的原因?)
Error 2
1 |
|
缺少Tkinter包,安装即可。
1 |
|
测试通过。
1 |
|
Error 2解决。
Error 3
1 |
|
没有jpeg解码器,安装即可。
1 |
|
根据https://stackoverflow.com/questions/8915296/python-image-library-fails-with-message-decoder-jpeg-not-available-pil的说法,需要重装相应的pyhon site-packages,涉及PIL和Pillow。
根据https://blog.csdn.net/qq562029186/article/details/52972152,得知Pillow是PIL的替代品,且我目前的Python2安装的就是Pillow,所以重装Pillow。
1 |
|
(限制版本是防止pyhon site-packages间相互依赖、引发冲突,或不支持Python2。)
Error 3解决。
运行
1 |
|
由于只用了CPU,运行速度过慢,放弃了,至少代码是能正常运行的。
一点感想
艺术风格迁移的核心思路是图像的“内容”和“风格”看似为一个整体,但却是可以分开表达的。基于此,有两个输入——想要的内容和想要的风格,进而获得艺术迁移的结果。
也就是说,从一张图片上可以剥离出独立于物体概念的风格信息。比如有一张煎蛋的真实照片,那么就可以分离出“煎蛋”这个概念、这个物体,同时分离出“现实拍摄”这一风格。进而以这张图片的“煎蛋”概念作为内容输入,以另一张图片的动画风格作为风格,就能获得动画煎蛋的图片。
这有些像经典图像处理中的高频信息,人们很难感受到、或者说不是人们关注的重点,但这些高频信息确实能够影响图像清晰度、图像体积乃至记录其他肉眼看不到的信息。
应当是这才是深度学习发展的一个思路——总归要有思路,才能去用深度学习的工具;而不能说就只盯着输入输出,把深度学习完全当成一个黑箱,只管扔进去和出来的东西。
自然语言处理(nlp-caffe)
编译过程
(编译环境:CentOS 7.6 )
用nlpcaffe自带的makefile.config
,在改成仅CPU模式(CPU := 1
)并检查了python路径后,开始编译。
但报错。报错内容是缺少cblas。
1 |
|
查了一下解决方法,有人说CentOS下没有cblas,需用tatlas和satlbas代替,应该将makefile
中的cblas和atlas替换掉(CentOS论坛上也有类似的说法)。
但我按上述方法做了之后,仍是同样的报错。又去看了一下caffe的makefile
,相应地方写的也是cblas——所以这么写也没问题吧。
于是直接将之前编译caffe的makefile.config
复制过来,再编译就正常了。
(粗看没发现这两个makefile.config
有什么区别orz…)
共存的问题
但其实我好奇一件事情,虽然caffe没有写入环境变量,调用不同版本的caffe对应好路径就OK,但相应的接口怎么办?
比如在Python下import caffe
,这里import进来的caffe是哪个caffe?最后一次编译的吗?
训练模型
操作和看日志已经比较熟练了
但又发生了一件尴尬的事..这个模型训练的是啥…orz…
模型结构图
画example的结构模型画了大概20min orz…
(而且似乎最后什么都没有…)