windows10+python3.5下同时安装caffe和tensorflow 这几天需要安装caffe,但是大部分教程都没有说怎么在已经有tensorflow的同时安装caffe。在这里记录一下,主要写一下整个安装过程中的大致流程,忽略详细步骤。

这几天需要安装caffe,但是大部分教程都没有说怎么在已经有tensorflow的同时安装caffe。在这里记录一下,主要写一下整个安装过程中的大致流程,忽略详细步骤。 

首先需要安装anaconda,这里安装anaconda的主要原因是,它能够管理环境,也就是说可以将tensorflow和caffe的安装环境隔离开。(网上有不少文章已经表示,直接将两者装在一个环境下会出问题)。anaconda的版本无所谓,3.6也没关系,因为在里面可以新建环境。

假设你已经安装好了anaconda,打开anaconda Navigator,创建两个python3.5新的环境,分别命名为caffe和tensorflow。完成后,如下图所示: 
这里写图片描述

tensorflow的安装

1、首先打开anaconda prompt,输入activate tensorflow,这样表面你后续的安装操作,都是在tensorflow这个环境下进行的。所有的安装依赖都可以在以下目录中查询。

E:\studySoftware\anaconda\envs\tensorflow\Lib\site-packages

2、安装GPU版本需要CUDA8.0和cudnn5.1(这里一定要安装cudnn5.1版本,这是因为caffe只能支持这个版本) 
CUDA安装:https://developer.nvidia.com/cuda-downloads 
CuDNN安装:https://developer.nvidia.com/cudnn

3、安装numpy

pip install numpy

由于网络的某些原因,可能会导致通过pip安装会很慢,可以选择直接去https://www.lfd.uci.edu/~gohlke/pythonlibs/#xgboost该网址用ctrl+F找到并下载对应的wheel文件,以 pip install numpy‑1.11.2+mkl‑cp35‑cp35m‑win_amd64.whl 的形式来安装。

4、安装tensorflow

pip install tensorflow-gpu

如果慢一样可以下载对应的wheel文件,输入pip install tensorflow_gpu-0.12.0rc0-cp35-cp35m-win_amd64.whl 
所有的操作要在activate tensorflow 后进行,如图示例:(这里还有一大堆依赖包,不一一列举,pip能自动安装) 
这里写图片描述 
5、测试tensorflow 
进入python,输入import tensorflow as tf,若这句话通过,基本上就可以表明tensorflow安装成功 
这里写图片描述

安装caffe

1、首先打开anaconda prompt,一样输入activate caffe,所有的安装依赖一样也都可以在以下目录中查询。

E:\studySoftware\anaconda\envs\caffe\Lib\site-packages

2、上面已经安装过CUDA8.0和cudnn5.1了,所以这边可以跳过。

3、安装visual stduio 2015,我这边用的是2015版,官网上说2013也可以

4、安装cmake,最好下一个高版本,我一开始下了一个cmake3.4.1,虽然满足官网的要求,但是编译的时候一直显示找不到vs的编译器,后来换了一个高版本的cmake这个问题就没有了。

5、到官网https://github.com/BVLC/caffe/tree/windows先下载windows版的caffe,解压后,进入scripts文件夹中找到build_win.cmd。右键用notepad++或者其他工具打开。 
这里写图片描述

打开后,对其中70到99行的选项进行配置,我的配置是这样的 
这里写图片描述 
MSVC_VERSION=14表示是的vs2015 
CPU_ONLY = 0 表示安装GPU版本 
PYTHON_VERSION=3 表示python3.5 
其他的选项默认就好

然后修改好build_win.cmd文件后保存退出,然后在anaconda prompt中cd到caffe-windows文件下,输入:

.\scripts\build_win.cmd

期间会下载 libraries_v140_x64_py35_1.1.0.tar.bz2这个依赖包,但是下载速度很慢,可能会出错,所以先下载完然后放到对应文件夹下,这样可以快很多。 
这里写图片描述

Python3.5的:libraries_v140_x64_py35_1.1.0.tar.bz2 [ 密码:35jj ]

6、编译完成后,会在scripts文件夹下生产一个build文件夹,下一步是进行生成 
这里写图片描述 
打开caffe.sln这个工程,右键ALL_BUILD工程进行生成。

这里写图片描述

生成完成后,在如下图的文件夹下,会生成caffe.exe等执行文件

这里写图片描述

7、caffe进行mnist测试 
首先去官网http://yann.lecun.com/exdb/mnist/下载mnist数据集,解压后放到如下两个文件夹下,训练数据和测试数据分开,文件夹自己新建一下。 
这里写图片描述
在caffe-windows的目录下创建creat_mnist.bat,trian_mnist.bat文件 
这里写图片描述 
在creat_mnist.bat中输入:(trian_mnist.bat文件后面再用)

.\scripts\build\examples\mnist\Release\convert_mnist_data.exe .\data\mnist\mnist_train_lmdb\train-images.idx3-ubyte .\data\mnist\mnist_train_lmdb\train-labels.idx1-ubyte .\examples\mnist\mnist_train_lmdb   
echo.   
.\scripts\build\examples\mnist\Release\convert_mnist_data.exe .\data\mnist\mnist_test_lmdb\t10k-images.idx3-ubyte   .\data\mnist\mnist_test_lmdb\t10k-labels.idx1-ubyte .\examples\mnist\mnist_test_lmdb  
pause  
  • 1
  • 2
  • 3
  • 4

这是把原始的文件格式转换成mdb的格式,并放到caffe-windows\examples\mnist下,这种格式读取速度快。执行完成后,会在caffe-windows\examples\mnist下生成对应数据文件 
这里写图片描述

在caffe-windows\examples\mnist文件夹下,除了刚刚生成的数据文件,还有mnist的模型文件lenet_train_test.prototxt,还有lenet_solver.prototxt模型配置文件。 
这里写图片描述 
模型文件lenet_train_test.prototxt,需要给出对应的训练和测试数据路径 
这里写图片描述 
lenet_solver.prototxt模型配置文件中,要给出模型文件的路径,以及训练方式,我这边用的是GPU 
这里写图片描述 
这些路径都是相对于caffe-windows这个根目录的相对路径,然后打开前面创建的trian_mnist.bat文件,输入:

.\scripts\build\tools\Release\caffe.exe train --solver=examples/mnist/lenet_solver.prototxt  
pause 
  • 1
  • 2

这边需要注意,/和\这两者要区别清楚,不然很可能会找不到对应的数据或者模型而出错。错误示例如下: 
这里写图片描述
然后,就可以开始训练了,训练完成! 
这里写图片描述

8、python接口的配置 
在编译完后的根目录下的python文件夹下,会生成pycaffe,用于python调用caffe。 
这里写图片描述 
将里面的caffe文件夹复制到: 
E:\studySoftware\anaconda\envs\caffe\Lib\site-packages,也就是caffe环境对应的包文件夹。 
然后安装一些依赖库:

pip install numpy scipy protobuf==3.1.0 six scikit-image pyyaml pydotplus graphviz

打开anaconda prompt,然后activate caffe,打开python,尝试import caffe,这时可能会有一些包不存在,只需要pip install 对应的包就可以了。

9、python调用示例

import numpy as np  
import sys,os  
import time
import matplotlib.pyplot as plt

# 设置当前的工作环境在caffe下  
caffe_root = 'E:/studySoftware/caffe-windows/'   
# 我们也把caffe/python也添加到当前环境  
sys.path.insert(0, caffe_root + 'python')  
import caffe  
os.chdir(caffe_root)#更换工作目录  

# 设置网络结构  
net_file=caffe_root + 'models/bvlc_reference_caffenet/deploy.prototxt'  
# 添加训练之后的参数  
#下载地址:http://dl.caffe.berkeleyvision.org/bvlc_reference_caffenet.caffemodel
caffe_model=caffe_root + 'models/bvlc_reference_caffenet/bvlc_reference_caffenet.caffemodel'  
# 均值文件  
mean_file=caffe_root + 'python/caffe/imagenet/ilsvrc_2012_mean.npy'  

# 这里对任何一个程序都是通用的,就是处理图片  
# 把上面添加的两个变量都作为参数构造一个Net  
net = caffe.Net(net_file,caffe_model,caffe.TEST)  
# 得到data的形状,这里的图片是默认matplotlib底层加载的  
transformer = caffe.io.Transformer({'data': net.blobs['data'].data.shape})  
# matplotlib加载的image是像素[0-1],图片的数据格式[weight,high,channels],RGB  
# caffe加载的图片需要的是[0-255]像素,数据格式[channels,weight,high],BGR,那么就需要转换  

# channel 放到前面  
transformer.set_transpose('data', (2,0,1))  
transformer.set_mean('data', np.load(mean_file).mean(1).mean(1))  
# 图片像素放大到[0-255]  
transformer.set_raw_scale('data', 255)   
# RGB-->BGR 转换  
transformer.set_channel_swap('data', (2,1,0))  

# 这里是加载图片  
im=caffe.io.load_image(caffe_root+'examples/images/cat.jpg')  
# 用上面的transformer.preprocess来处理刚刚加载图片  
net.blobs['data'].data[...] = transformer.preprocess('data',im) 

#caffe.set_mode_gpu() 
since = time.time()
#注意,网络开始向前传播啦  
out = net.forward() 
time_elapsed = time.time() - since
print(time_elapsed)

#加载标签
imagenet_labels_filename = caffe_root + 'data/ilsvrc12/synset_words.txt'  
labels = np.loadtxt(imagenet_labels_filename, str, delimiter='\t')  


# 最终的结果: 当前这个图片的属于哪个物体的概率(列表表示)  
output_prob = out['prob'][0]  
# 找出最大的那个概率  
print ('predicted class is:', output_prob.argmax())
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57

后期使用

在用tensorflow的时候,要先打开anaconda prompt,然后activate tensorflow,在里面打开对应的IDE,比如说spyder。 
使用caffe时,一样。

首先需要安装anaconda,这里安装anaconda的主要原因是,它能够管理环境,也就是说可以将tensorflow和caffe的安装环境隔离开。(网上有不少文章已经表示,直接将两者装在一个环境下会出问题)。anaconda的版本无所谓,3.6也没关系,因为在里面可以新建环境。

假设你已经安装好了anaconda,打开anaconda Navigator,创建两个python3.5新的环境,分别命名为caffe和tensorflow。完成后,如下图所示: 
这里写图片描述

tensorflow的安装

1、首先打开anaconda prompt,输入activate tensorflow,这样表面你后续的安装操作,都是在tensorflow这个环境下进行的。所有的安装依赖都可以在以下目录中查询。

E:\studySoftware\anaconda\envs\tensorflow\Lib\site-packages

2、安装GPU版本需要CUDA8.0和cudnn5.1(这里一定要安装cudnn5.1版本,这是因为caffe只能支持这个版本) 
CUDA安装:https://developer.nvidia.com/cuda-downloads 
CuDNN安装:https://developer.nvidia.com/cudnn

3、安装numpy

pip install numpy

由于网络的某些原因,可能会导致通过pip安装会很慢,可以选择直接去https://www.lfd.uci.edu/~gohlke/pythonlibs/#xgboost该网址用ctrl+F找到并下载对应的wheel文件,以 pip install numpy‑1.11.2+mkl‑cp35‑cp35m‑win_amd64.whl 的形式来安装。

4、安装tensorflow

pip install tensorflow-gpu

如果慢一样可以下载对应的wheel文件,输入pip install tensorflow_gpu-0.12.0rc0-cp35-cp35m-win_amd64.whl 
所有的操作要在activate tensorflow 后进行,如图示例:(这里还有一大堆依赖包,不一一列举,pip能自动安装) 
这里写图片描述 
5、测试tensorflow 
进入python,输入import tensorflow as tf,若这句话通过,基本上就可以表明tensorflow安装成功 
这里写图片描述

安装caffe

1、首先打开anaconda prompt,一样输入activate caffe,所有的安装依赖一样也都可以在以下目录中查询。

E:\studySoftware\anaconda\envs\caffe\Lib\site-packages

2、上面已经安装过CUDA8.0和cudnn5.1了,所以这边可以跳过。

3、安装visual stduio 2015,我这边用的是2015版,官网上说2013也可以

4、安装cmake,最好下一个高版本,我一开始下了一个cmake3.4.1,虽然满足官网的要求,但是编译的时候一直显示找不到vs的编译器,后来换了一个高版本的cmake这个问题就没有了。

5、到官网https://github.com/BVLC/caffe/tree/windows先下载windows版的caffe,解压后,进入scripts文件夹中找到build_win.cmd。右键用notepad++或者其他工具打开。 
这里写图片描述

打开后,对其中70到99行的选项进行配置,我的配置是这样的 
这里写图片描述 
MSVC_VERSION=14表示是的vs2015 
CPU_ONLY = 0 表示安装GPU版本 
PYTHON_VERSION=3 表示python3.5 
其他的选项默认就好

然后修改好build_win.cmd文件后保存退出,然后在anaconda prompt中cd到caffe-windows文件下,输入:

.\scripts\build_win.cmd

期间会下载 libraries_v140_x64_py35_1.1.0.tar.bz2这个依赖包,但是下载速度很慢,可能会出错,所以先下载完然后放到对应文件夹下,这样可以快很多。 
这里写图片描述

Python3.5的:libraries_v140_x64_py35_1.1.0.tar.bz2 [ 密码:35jj ]

6、编译完成后,会在scripts文件夹下生产一个build文件夹,下一步是进行生成 
这里写图片描述 
打开caffe.sln这个工程,右键ALL_BUILD工程进行生成。

这里写图片描述

生成完成后,在如下图的文件夹下,会生成caffe.exe等执行文件

这里写图片描述

7、caffe进行mnist测试 
首先去官网http://yann.lecun.com/exdb/mnist/下载mnist数据集,解压后放到如下两个文件夹下,训练数据和测试数据分开,文件夹自己新建一下。 
这里写图片描述
在caffe-windows的目录下创建creat_mnist.bat,trian_mnist.bat文件 
这里写图片描述 
在creat_mnist.bat中输入:(trian_mnist.bat文件后面再用)

.\scripts\build\examples\mnist\Release\convert_mnist_data.exe .\data\mnist\mnist_train_lmdb\train-images.idx3-ubyte .\data\mnist\mnist_train_lmdb\train-labels.idx1-ubyte .\examples\mnist\mnist_train_lmdb   
echo.   
.\scripts\build\examples\mnist\Release\convert_mnist_data.exe .\data\mnist\mnist_test_lmdb\t10k-images.idx3-ubyte   .\data\mnist\mnist_test_lmdb\t10k-labels.idx1-ubyte .\examples\mnist\mnist_test_lmdb  
pause  
  • 1
  • 2
  • 3
  • 4

这是把原始的文件格式转换成mdb的格式,并放到caffe-windows\examples\mnist下,这种格式读取速度快。执行完成后,会在caffe-windows\examples\mnist下生成对应数据文件 
这里写图片描述

在caffe-windows\examples\mnist文件夹下,除了刚刚生成的数据文件,还有mnist的模型文件lenet_train_test.prototxt,还有lenet_solver.prototxt模型配置文件。 
这里写图片描述 
模型文件lenet_train_test.prototxt,需要给出对应的训练和测试数据路径 
这里写图片描述 
lenet_solver.prototxt模型配置文件中,要给出模型文件的路径,以及训练方式,我这边用的是GPU 
这里写图片描述 
这些路径都是相对于caffe-windows这个根目录的相对路径,然后打开前面创建的trian_mnist.bat文件,输入:

.\scripts\build\tools\Release\caffe.exe train --solver=examples/mnist/lenet_solver.prototxt  
pause 
  • 1
  • 2

这边需要注意,/和\这两者要区别清楚,不然很可能会找不到对应的数据或者模型而出错。错误示例如下: 
这里写图片描述
然后,就可以开始训练了,训练完成! 
这里写图片描述

8、python接口的配置 
在编译完后的根目录下的python文件夹下,会生成pycaffe,用于python调用caffe。 
这里写图片描述 
将里面的caffe文件夹复制到: 
E:\studySoftware\anaconda\envs\caffe\Lib\site-packages,也就是caffe环境对应的包文件夹。 
然后安装一些依赖库:

pip install numpy scipy protobuf==3.1.0 six scikit-image pyyaml pydotplus graphviz

打开anaconda prompt,然后activate caffe,打开python,尝试import caffe,这时可能会有一些包不存在,只需要pip install 对应的包就可以了。

9、python调用示例

import numpy as np  
import sys,os  
import time
import matplotlib.pyplot as plt

# 设置当前的工作环境在caffe下  
caffe_root = 'E:/studySoftware/caffe-windows/'   
# 我们也把caffe/python也添加到当前环境  
sys.path.insert(0, caffe_root + 'python')  
import caffe  
os.chdir(caffe_root)#更换工作目录  

# 设置网络结构  
net_file=caffe_root + 'models/bvlc_reference_caffenet/deploy.prototxt'  
# 添加训练之后的参数  
#下载地址:http://dl.caffe.berkeleyvision.org/bvlc_reference_caffenet.caffemodel
caffe_model=caffe_root + 'models/bvlc_reference_caffenet/bvlc_reference_caffenet.caffemodel'  
# 均值文件  
mean_file=caffe_root + 'python/caffe/imagenet/ilsvrc_2012_mean.npy'  

# 这里对任何一个程序都是通用的,就是处理图片  
# 把上面添加的两个变量都作为参数构造一个Net  
net = caffe.Net(net_file,caffe_model,caffe.TEST)  
# 得到data的形状,这里的图片是默认matplotlib底层加载的  
transformer = caffe.io.Transformer({'data': net.blobs['data'].data.shape})  
# matplotlib加载的image是像素[0-1],图片的数据格式[weight,high,channels],RGB  
# caffe加载的图片需要的是[0-255]像素,数据格式[channels,weight,high],BGR,那么就需要转换  

# channel 放到前面  
transformer.set_transpose('data', (2,0,1))  
transformer.set_mean('data', np.load(mean_file).mean(1).mean(1))  
# 图片像素放大到[0-255]  
transformer.set_raw_scale('data', 255)   
# RGB-->BGR 转换  
transformer.set_channel_swap('data', (2,1,0))  

# 这里是加载图片  
im=caffe.io.load_image(caffe_root+'examples/images/cat.jpg')  
# 用上面的transformer.preprocess来处理刚刚加载图片  
net.blobs['data'].data[...] = transformer.preprocess('data',im) 

#caffe.set_mode_gpu() 
since = time.time()
#注意,网络开始向前传播啦  
out = net.forward() 
time_elapsed = time.time() - since
print(time_elapsed)

#加载标签
imagenet_labels_filename = caffe_root + 'data/ilsvrc12/synset_words.txt'  
labels = np.loadtxt(imagenet_labels_filename, str, delimiter='\t')  


# 最终的结果: 当前这个图片的属于哪个物体的概率(列表表示)  
output_prob = out['prob'][0]  
# 找出最大的那个概率  
print ('predicted class is:', output_prob.argmax())
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57

后期使用

在用tensorflow的时候,要先打开anaconda prompt,然后activate tensorflow,在里面打开对应的IDE,比如说spyder。 
使用caffe时,一样。

猜你喜欢

转载自blog.csdn.net/weixin_40355324/article/details/80856027