当前位置: 代码迷 >> 综合 >> win10+anaconda+python3.5+vs2015+cuda8.0(cuDNN5.1)+caffe安装+借鉴 = 站在巨人的肩膀上填坑(gpu版caffe安装)
  详细解决方案

win10+anaconda+python3.5+vs2015+cuda8.0(cuDNN5.1)+caffe安装+借鉴 = 站在巨人的肩膀上填坑(gpu版caffe安装)

热度:1   发布时间:2023-12-14 07:56:28.0

win10*anaconda*python3*vs2015*(cuda8.0+cuDNN5.1)*caffe安装+借鉴 = 论小白是如何安装caffe的

  • 所需软件、环境和目标、注意事项
    • 其他链接
    • 完整步骤总结(站在巨人的肩膀上填坑)
    • 后期使用
    • 以上就是所谓的“站在巨人肩膀上填坑”,结合别人的教程,再结合实际填自己的坑。鼓捣了一天@_@~~

所需软件、环境和目标、注意事项

如题,本人是win10,anaconda3,vs2015,记得安装一个cmake,后面编译有用,还要安装一个git(GitHub必备啊)。(这里给出cmake下载链接,花了大半天时间下出来的,屎都等出来了@_@(不存在镜像的,别想了))。
https://download.csdn.net/download/qq_38251389/10927861

目标是安装gpu版caffe(严格来说是在win10下编译好caffe,让其能被python3.5调用)。

注意,本人用的是python3.5(anaconda版本只要是3.5以上的就行,不要求完全对应所用python3.x的版本,因为后面创建虚拟环境时可随便创建各种3.x版本)

其他链接

这里给出本人整理好的“前人”的安装caffe教程,亲测后真行,只不过有一些需要注意的点,我会在下面写出来,以防后来者confused。这样应该很具体了吧。。。

1、https://blog.csdn.net/hanzy88/article/details/79196846

2、https://blog.csdn.net/hu_guan_jie/article/details/80071656

完整步骤总结(站在巨人的肩膀上填坑)

1、安装vs2015(勾选visual c++组件)
2、安装anaconda3
3、安装cuda8.0、cuDNN5.1
4、安装python3.5

注:到这步为止都默认你已经都安装好以上的东西了(网上一堆教程)

5、通过anaconda创建一个叫caffe的新环境(conda create -n caffe python=3.5)
6、是时候展现真正的技术了。。
安装Caffe:

首先,在BVLC上以git的方式下载caffe:
调出系统的运行(win+R,输入cmd后,Enter)
输入git clone https://github.com/BVLC/caffe.git
然后:输入cd caffe
再次:输入git checkout windows ,再enter
好了,到这里先别急着关
找到刚刚得到的caffe文件夹,我的在这里:C:\Users\Administrator\caffe,进入scripts文件夹,有一个build_win.cmd的文件,用文本编辑器打开,进行如下更改:

在这里插入图片描述

在这里插入图片描述

按照图中所有的地方来设置,不要怀疑。。(MSVC_VERSION=14表示是的vs2015
CPU_ONLY = 0 表示安装GPU版本
PYTHON_VERSION=3 表示python3.5,WITH_NINJA=0表示不使用ninja编译,其他的自己看图中绿色注释部分 )

也就是更改主要是关闭ONLY-CPU运算和关闭使用ninja,同时把python支持打开,设置为3,以及设置Anaconda3的位置。 还要设置一下cuDNN路径(默认你已经按照cuda8.0与cuDNN5.1配套安装好了),你的build_win文件有其他不同的地方的话,都按图中来设置就行,别删、别添加其他命令就行。

改好之后保存。

回到运行窗口,输入scripts\build_win.cmd
或者shift+右键,调出powershell,把文件拖进去,等待加载编译就行了。

其中在运行时,可能会出错,是程序在下载一个文件libraries_v140_x64_py35_1.1.0.tar时出错(0%几乎不动弹),手动下载,大家可以戳我邮箱1215668540@qq.com,给你发文件

注意:我在这卡了,按照前人的教程来也不行,后来定睛一看,程序里显示一句“Found suitable python, ‘xx\xx\Python27\python.exe’”,下的是libraries_v140_x64_py27_1.1.0.tar!!瞬间明朗!因为我电脑同时安装了py3.5与py2.7,它优先寻找了minimum版本2.7的!发现问题后马上卸了python2.7,然后执行下面蓝色字体

下载后放在制定文件夹内,我的是 C:\Users\Administrator.caffe\dependencies\download文件夹内(压缩文件) (注意是.caffe ,有个点,这个路径是你执行了之前的命令后系统自动生成的,在administrator路径下可找到),解压到download同级文件夹里。
重新加载编译一次, 如果出错删除scripts目录下bulid中所有文件,重新加载scripts中的build_win.cmd,否则一直错在同一个地方(每一次更改变动,最好都要删除build文件里的所有文件)

重新加载编译应该都没有问题,没有报错就是编译成功了。

注:如果报错类似error MSB6006: "CL.exe"已退出,代码为2等等类似的,3个原因:
A、可能之前的运行的exe还没有关闭,在任务管理器里面干掉它。

B、关掉vc,删除ncb文件,再重新编译。

C、杀毒软件和系统不兼容,建议卸载查毒软件。

反正我先退出杀毒软件了,然后就好啦

在这里插入图片描述
洋洋洒洒的一堆warning,问题不大(问题是我是gtx1060的,自我感觉好像没有用1个多小时啊???好像也就二十几分钟??所以这已用时间是怎么回事??一脸懵逼)

7、编译完成后,会在caffe文件夹下生产一个build文件夹,下一步是进行生成

在这里插入图片描述

build文件夹内找到caffe.sln这个解决方案(默认你会使用visual studio),打开caffe.sln,右键ALL_BUILD工程进行生成。在这里插入图片描述

坐等生成完毕
在这里插入图片描述

生成完成后,在如下图的文件夹下,会生成caffe.exe等执行文件
在这里插入图片描述

7、caffe进行mnist测试
首先去官网http://yann.lecun.com/exdb/mnist/下载mnist数据集,解压后放到如下两个文件夹下,训练数据和测试数据分开,文件夹自己新建一下。

在这里插入图片描述
在这里插入图片描述

caffe的目录下创建creat_mnist.bat,train_mnist.bat文件
在这里插入图片描述

在creat_mnist.bat中输入(用notepad++(或其他文本编辑器)打开):(trian_mnist.bat文件的话,后面的时候再盘它)

.\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.   
.\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

(这功能是把原始的文件格式转换成mdb的格式,并放到caffe\examples\mnist下,这种格式读取速度快。)
双击该create_mnist.bat文件,执行完成后,会在caffe\examples\mnist下生成对应数据文件

在这里插入图片描述
在caffe\examples\mnist文件夹下,除了刚刚生成的数据文件,还有mnist的模型文件lenet_train_test.prototxt,还有lenet_solver.prototxt模型配置文件。
在这里插入图片描述
模型文件lenet_train_test.prototxt,需要给出对应的训练和测试数据路径(这里就给你看看,不用动)
在这里插入图片描述
lenet_solver.prototxt模型配置文件中,要给出模型文件的路径,以及训练方式,我这边用的是GPU
在这里插入图片描述

这些路径都是相对于caffe这个根目录的相对路径,然后文本编辑器打开前面创建的train_mnist.bat文件,输入:

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

注意,/和\这两者要区别清楚,不然很可能会找不到对应的数据或者模型而出错

然后同样双击train_mnist.bat文件,就可以开始训练了,如图训练完成!
在这里插入图片描述

8、python接口的配置
在编译完后的caffe根目录下的python文件夹下,会生成pycaffe(即那个caffe文件夹),用于python调用caffe。
在这里插入图片描述

将里面的caffe文件夹复制到:
F:\anaconda3\envs\caffe\Lib\site-packages,也就是之前创建的caffe环境对应的包文件夹site-packages内。
然后打开anaconda prompt,执行activate caffe进入环境,安装一些依赖库:
pip install numpy scipy protobuf==3.1.0 six scikit-image pyyaml pydotplus graphviz

安装完后输入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())

后期使用

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

以上就是所谓的“站在巨人肩膀上填坑”,结合别人的教程,再结合实际填自己的坑。鼓捣了一天@_@~~

有问题戳企鹅1215668540,不喜勿喷

  相关解决方案