super-resolution技术日记——1

super-resolution技术日记

2016.8.29

Caffe Python接口的使用

1. 环境配置

Python可供选择的发行版比较多,我选择是python(x,y),原因也比较直接,python(x,y)是为科学计算任务而设计的,里面包含了各种工具如SR中可以用到的:hdf5 ,opencv等库的python包。
Caffe是一个跨平台的深度学习库,它可以在windows,mac,linux操作系统下运行,本人使用的是微软的windows版caffe(https://github.com/Microsoft/caffe),安装按照readme中的setup来就可以,使用vs2013编译,由于使用了依赖库的管理器,安装非常方便不需要自己去下载安装caffe的依赖库。注:编译的过程中可能报错,修改libcaffe工程属性重新编译就可以了。安装好后将release文件夹路径添加到PATH环境变量方便以后使用,同时添加release\pycaffe\到pythonpath环境变量。

2. 程序基本流程

Caffe是用c++编写的一个深度学习库,除了使用c++调用caffe,我们还可以通过caffe提供的matlab,python的接口来使用caffe。这里的使用通常是指应用训练好的网络参数来完成分类、识别、计算等任务,而不是通过调用来训练网络。并不是说不能调用caffe这个库来做训练,而是在我看来caffe官方提供的tools工具中的caffe同名可执行程序的训练功能已经很完备我们没有必要再另外再重新造车来完成训练功能。而如何使用tools来进行训练将在以后的日志中说明。事实上无论使用哪种语言的接口来调用caffe来完成应用任务,其流程都是极其相似的。基本的过程如下:

Created with Raphaël 2.1.0 读入数据 设置运行模式GPU or CPU 初始化网络(model,weights,'Test') 根据输入reshape 完整的一次前向传播 读取输出层数据

具体过程可以参考:
http://christopher5106.github.io/deep/learning/2015/09/04/Deep-learning-tutorial-on-Caffe-Technology.html

3. 网络可视化

Caffe的python接口中带了一个绘制网络结构的python程序draw_net.py,我们可以通过调用它来可视化我们的网络结构。在调用改程序之前需要确认python构建中已经安装了pydot,可以在python终端通过命令pip install pydot来安装,安装后直接运行的话仍然会出现找不到dot.exe的错误提示,这是因为pydot底层依赖项GraphViz还未安装,需要自己单独下载GraphViz安装,并将/bin添加到PATH环境变量中,重启python运行终端此时才能通过命令:
python pycaffe/draw_net.py models/bvlc_reference_caffenet/deploy.prototxt net.png
open caffenet.png
(注:当前路径应该在models的上一级目录)来完成caffe网络的绘制,效果如下图所示:
fsrcnn

4. 踩过的坑

a. matlab矩阵的存储方式是列序优先,numpy opencv中则是行序优先,因而要注意训练样本数据的存储方式于应用输入数据的存储方式应该一致。
b. 运行批处理文件来开始任务时一直“^c终止批处理操作吗”的问题,复制功能也出现只能在空白处粘贴成功的问题,关掉有道词典、金山词典等翻译工具的划译功能就可以了。

你可能感兴趣的:(python,深度学习,caffe,超分辨率)