前言

本来这篇文章是可以不用写的,如果NVIDIA给linux设计了RTX20系列notebook驱动的话,但可惜没有(现在有了,233),所以新买的笔记本无法使用caffe和TensorFlow的gpu版本。如果用cpu版本,i7还比不上MX150显卡,所以,有必要研究一下如何在现有的win10系统上安装AI的相关框架和驱动等配套程序(事实证明这也折腾了两三天,主要是caffe折腾的,这货在windows下一点也不比在linux下好安装)。

硬件基础

win10系统

RTX2060笔记本显卡(已经自带驱动)

没有任何python环境及相关框架、包。

任务按先后顺序依次为:

查看笔记本显卡型号、安装显卡驱动、安装cuda9.0、安装cudnn、安装anaconda3-4.2.0、python2.7(anaconda3下安装)、numpy、matplotlib、opencv、TensorFlow-GPU(1.9.0)(仅支持python3.5)、vs2013、caffe(仅支持python2.7)

Table of Contents

1 查看笔记本显卡型号

2 安装显卡驱动

2.1 上官网查询(我没有走通)

2.2 通过 GeForce Experience 安装

3 安装cuda9.0

3.1选择cuda9.0的原因:

3.2 安装步骤

3.3 配置环境变量

3.4 命令行中进行检查

4 安装cudnn

4.1 下载

4.2 配置环境变量

5 安装anaconda3-4.2.0

5.1 选择anaconda3-4.2.0的原因

5.2 安装

5.3 环境变量配置

6 python2.7(anaconda3下安装)

6.1 创建

6.2 激活

6.3 退出

7 numpy

8 matplotlib

8.1 python2.7

8.2 python 3.5

9 opencv

9.1 下载

9.2 安装

10 TensorFlow-GPU(1.9.0)(仅支持python3.5)

10.1 选择1.9.0版本的原因

10.2 安装

11 visual studio 2013

11.1 选择vs2013原因

11.2 资源

12 caffe(仅支持python2.7)

12.1 选择Microsoft版本并选择python2.7的原因

12.2 下载

12.3 更改CommonSettings.props

12.4 vs2013 编译

12.4.1 首先设置libcaffe的属性

12.4.2 右键libcaffe,生成

12.4.3 编译其他文件

12.5 配置环境

12.5.1 MATLAB:

12.5.2 python配置:


 

 

1 查看笔记本显卡型号

步骤:

打开“我的电脑”

右键“此电脑”

点击“属性”

点击“设备管理器”

点开“显示适配器”

查看NVIDIA显卡型号

效果如图


可以看到这台电脑是RTX2060显卡,有两条路可以安装NVIDIA显卡驱动。

 

2 安装显卡驱动

2.1 上官网查询(我没有走通)

网址 https://www.geforce.cn/drivers

按照提示,相应输入自己电脑的硬件情况即可


点击下载exe,再安装即可。

 

2.2 通过 GeForce Experience 安装

网址 https://www.geforce.cn/geforce-experience/download 如图


点击下载,再安装。之后打开 GeForce Experience,菜单栏上方进入“驱动程序”,进行安装即可,后期也可以对驱动程序进行升级,如图


 

3 安装cuda9.0

3.1选择cuda9.0的原因:

首先,这是一个稳定的版本

其次,TensorFlow-GPU最高支持cuda9,所以装cuda10就是作死

如果装了其他版本cuda的请先卸载掉,再安装cuda9.0,卸载方式

win10“在这里输入你要搜索的内容”输入控制面板,回车

点击“卸载程序”

点击“名称”排序

将NVIDIA CUDA *** X.X样式的其他版本的cuda组件删除。

3.2 安装步骤

先进入官网 https://developer.nvidia.com/cuda-90-download-archive

根据电脑的硬件配置选择,如图


点击Download下载,再进行安装。

3.3 配置环境变量

win10搜索"path"
"环境变量"
系统变量新建"CUDA_PATH_V9_0"和"CUDA_PATH",均为之前安装的同一目录
以我为例,为"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0"

3.4 命令行中进行检查

win+R,输入cmd,回车

AI应用架构图 ai应用程序框架不见了_ci

则cuda9.0已经正确安装。

 

4 安装cudnn

4.1 下载

进入官网,https://developer.nvidia.com/cudnn

选择 Download cuDNN ,之后将其解压,得到大目录下的三个子目录,再对应放在cuda的不同目录下,例如(根据自己的来)


4.2 配置环境变量

接着再添加环境变量(根据自己的来)

C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.0\lib\x64

到此,cuDNN安装完成。

 

5 安装anaconda3-4.2.0

5.1 选择anaconda3-4.2.0的原因

这个版本的anaconda3是基于python3.5的

caffe 仅支持Python2.7和Python3.5两个版本

安装了3.5以上版本的Python必须要卸载或者另装python3.5,所以多一事不如少一事

anaconda集成了python很多科学计算的库,方便安装、配置和管理python的不同版本

ctrl+f搜索

Anaconda3-4.2.0-Windows-x86_64.exe

5.2 安装

进行下载,然后安装,我放在了c盘目录下

C:\Anaconda3

5.3 环境变量配置

C:\Anaconda3

C:\Anaconda3\Scripts

C:\Anaconda3\Library\bin

 

6 python2.7(anaconda3下安装)

在开始菜单中打开 anaconda prompt

6.1 创建

基于 python2.7 创建一个名为python2 的环境(期间会进行一些常用包的安装)

conda create --name python2 python=2.7

6.2 激活

激活 python2环境(windows)

activate python2

linux/mac下为

source activate python2

6.3 退出

退出python2(进入默认的python3.5)

deactivate python2

以上命令在普通命令行仍然适用。

 

7 numpy

通过激活和退出的方式分别安装python2.7和python3.5的相关包。

python2.7、3.5安装命令均为

pip install numpy

 

8 matplotlib

通过激活和退出的方式分别安装python2.7和python3.5的相关包。

8.1 python2.7

由于python2.7对于matplotlib的支持有一定问题,因此我们只能选择一个较低的版本进行安装,但不影响功能。

pip install matplotlib==1.5.0

8.2 python 3.5

对python3没有影响,正常安装(不指定版本号则默认安装最新版本)

pip install matplotlib

 

9 opencv

9.1 下载

进入官网 https://www.lfd.uci.edu/~gohlke/pythonlibs/#opencv

选择使用python2.7和python3.5的对应版本

搜索

opencv_python‑3.4.5+contrib‑cp35‑cp35m‑win_amd64.whl

opencv_python‑2.4.13.7‑cp27‑cp27m‑win_amd64.whl

9.2 安装

之后进入下载目录进行安装(增加 --user 参数使用管理员权限)

通过激活和退出的方式分别选择python2.7和python3.5的pip

python3.5

pip install --user opencv_python‑3.4.5+contrib‑cp35‑cp35m‑win_amd64.whl

python2.7

pip install --user opencv_python‑2.4.13.7‑cp27‑cp27m‑win_amd64.whl

 

10 TensorFlow-GPU(1.9.0)(仅支持python3.5)

10.1 选择1.9.0版本的原因

我在使TensorFlow-GPU进行编程的时候,由于是较新的1.12.0,好像是因为board还是其他什么由于版本过新,出了bug

1.9.0较新,也较为稳定

一些框架的源码要求tensorflow1.9.0以上版本

10.2 安装

pip install tensorflow-gpu==1.9.0

由于win10系统不在支持python2.7的TensorFlow(CPU及GPU)版本,所以只能作罢。

 

11 visual studio 2013

11.1 选择vs2013原因

网上的案例教程大都为2013(少数为2015)的visual studio版本

其实主要是因为caffe包是用windows 8 SDK编译的,若用2017的windows 10 SDK编译会出很多各种各样的问题

11.2 资源

见开头的百度云盘(最稳定)

正常安装即可,如果安装了vs2017的话,建议将2013安装在另外的磁盘上,以免可能的冲突。

 

12 caffe(仅支持python2.7)

12.1 选择Microsoft版本并选择python2.7的原因

对windows系统更好的支持,少出bug

python3.5安装理论可行,但是安装中的bug千奇百怪,且和打地鼠一样越改bug越多而

python2.7安装一遍跑通

12.2 下载

先去github下载下来caffe,并解压(我放在了c盘上,固态速度快)

github地址 https://github.com/Microsoft/caffe

12.3 更改CommonSettings.props

接着,打开caffe下的Windows文件夹,找到一个名为CommonSettings.props.example的文件,并copy一份放在Windows文件下,更改附件名为CommonSettings.props,并对其进行修改配置(我用的是vscode)

xml项目修改为原因

CpuOnlyBuild

false不止用cpu,还要用gpu

UseCuDNN

true

要使用cudnn

CudaVersion

9.0之前安装的是cuda9.0

PythonSupport

true支持python

MatlabSupport

true支持MATLAB

CuDnnPath

C:\cudnn-9.0-windows10-x64-v7

之前解压的cuDNN文件夹,cuda的上一级

PythonDir

C:\Anaconda3\envs\python2\

anaconda下的python2.7虚拟环境

MatlabDir

C:\Program Files\MATLAB\R2016a

自己的MATLAB安装地址第55行 IncludePath

加入$(MatlabDir)\toolbox\distcomp\gpu\extern\include

微软更新(否则编译时mxGPUArray.h找不到)

最终的全文如下

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    <ImportGroup Label="PropertySheets" />
    <PropertyGroup Label="UserMacros">
        <BuildDir>$(SolutionDir)..\Build</BuildDir>
        <!--NOTE: CpuOnlyBuild and UseCuDNN flags can't be set at the same time.-->
        <CpuOnlyBuild>false</CpuOnlyBuild>
        <UseCuDNN>true</UseCuDNN>
        <CudaVersion>9.0</CudaVersion>
        <!-- NOTE: If Python support is enabled, PythonDir (below) needs to be
         set to the root of your Python installation. If your Python installation
         does not contain debug libraries, debug build will not work. -->
        <PythonSupport>true</PythonSupport>
        <!-- NOTE: If Matlab support is enabled, MatlabDir (below) needs to be
         set to the root of your Matlab installation. -->
        <MatlabSupport>true</MatlabSupport>
        <CudaDependencies></CudaDependencies>

        <!-- Set CUDA architecture suitable for your GPU.
         Setting proper architecture is important to mimize your run and compile time. -->
        <CudaArchitecture>compute_35,sm_35;compute_52,sm_52</CudaArchitecture>

        <!-- CuDNN 4 and 5 are supported -->
        <CuDnnPath>C:\cudnn-9.0-windows10-x64-v7</CuDnnPath>
        <ScriptsDir>$(SolutionDir)\scripts</ScriptsDir>
    </PropertyGroup>
    <PropertyGroup Condition="'$(CpuOnlyBuild)'=='false'">
        <CudaDependencies>cublas.lib;cuda.lib;curand.lib;cudart.lib</CudaDependencies>
    </PropertyGroup>

    <PropertyGroup Condition="'$(UseCuDNN)'=='true'">
        <CudaDependencies>cudnn.lib;$(CudaDependencies)</CudaDependencies>
    </PropertyGroup>
    <PropertyGroup Condition="'$(UseCuDNN)'=='true' And $(CuDnnPath)!=''">
        <LibraryPath>$(CuDnnPath)\cuda\lib\x64;$(LibraryPath)</LibraryPath>
        <IncludePath>$(CuDnnPath)\cuda\include;$(IncludePath)</IncludePath>
    </PropertyGroup>

    <PropertyGroup>
        <OutDir>$(BuildDir)\$(Platform)\$(Configuration)\</OutDir>
        <IntDir>$(BuildDir)\Int\$(ProjectName)\$(Platform)\$(Configuration)\</IntDir>
    </PropertyGroup>
    <PropertyGroup>
        <LibraryPath>$(OutDir);$(CUDA_PATH)\lib\$(Platform);$(LibraryPath)</LibraryPath>
        <IncludePath>$(SolutionDir)..\include;$(SolutionDir)..\include\caffe\proto;$(CUDA_PATH)\include;$(IncludePath)</IncludePath>
    </PropertyGroup>
    <PropertyGroup Condition="'$(PythonSupport)'=='true'">
        <PythonDir>C:\Anaconda3\envs\python2\</PythonDir>
        <LibraryPath>$(PythonDir)\libs;$(LibraryPath)</LibraryPath>
        <IncludePath>$(PythonDir)\include;$(IncludePath)</IncludePath>
    </PropertyGroup>
    <PropertyGroup Condition="'$(MatlabSupport)'=='true'">
        <MatlabDir>C:\Program Files\MATLAB\R2016a</MatlabDir>
        <LibraryPath>$(MatlabDir)\extern\lib\win64\microsoft;$(LibraryPath)</LibraryPath>
        <IncludePath>$(MatlabDir)\extern\include;$(MatlabDir)\toolbox\distcomp\gpu\extern\include;$(IncludePath)</IncludePath>
    </PropertyGroup>
    <ItemDefinitionGroup Condition="'$(CpuOnlyBuild)'=='true'">
        <ClCompile>
            <PreprocessorDefinitions>CPU_ONLY;%(PreprocessorDefinitions)</PreprocessorDefinitions>
        </ClCompile>
    </ItemDefinitionGroup>
    <ItemDefinitionGroup Condition="'$(UseCuDNN)'=='true'">
        <ClCompile>
            <PreprocessorDefinitions>USE_CUDNN;%(PreprocessorDefinitions)</PreprocessorDefinitions>
        </ClCompile>
        <CudaCompile>
            <Defines>USE_CUDNN</Defines>
        </CudaCompile>
    </ItemDefinitionGroup>
    <ItemDefinitionGroup Condition="'$(PythonSupport)'=='true'">
        <ClCompile>
            <PreprocessorDefinitions>WITH_PYTHON_LAYER;BOOST_PYTHON_STATIC_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
        </ClCompile>
    </ItemDefinitionGroup>
    <ItemDefinitionGroup Condition="'$(MatlabSupport)'=='true'">
        <ClCompile>
            <PreprocessorDefinitions>MATLAB_MEX_FILE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
        </ClCompile>
    </ItemDefinitionGroup>
    <ItemDefinitionGroup>
        <ClCompile>
            <MinimalRebuild>false</MinimalRebuild>
            <MultiProcessorCompilation>true</MultiProcessorCompilation>
            <PreprocessorDefinitions>_SCL_SECURE_NO_WARNINGS;USE_OPENCV;USE_LEVELDB;USE_LMDB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
            <TreatWarningAsError>true</TreatWarningAsError>
        </ClCompile>
    </ItemDefinitionGroup>
    <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
        <ClCompile>
            <Optimization>Full</Optimization>
            <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
            <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
            <FunctionLevelLinking>true</FunctionLevelLinking>
        </ClCompile>
        <Link>
            <EnableCOMDATFolding>true</EnableCOMDATFolding>
            <GenerateDebugInformation>true</GenerateDebugInformation>
            <LinkTimeCodeGeneration>UseLinkTimeCodeGeneration</LinkTimeCodeGeneration>
            <OptimizeReferences>true</OptimizeReferences>
        </Link>
    </ItemDefinitionGroup>
    <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
        <ClCompile>
            <Optimization>Disabled</Optimization>
            <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
            <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
        </ClCompile>
        <Link>
            <GenerateDebugInformation>true</GenerateDebugInformation>
        </Link>
    </ItemDefinitionGroup>
</Project>

12.4 vs2013 编译

接着,用vs2013的管理员模式(否则错误也是千奇百怪)打开caffe.sln(C:\caffe-master\windows\Caffe.sln)文件

12.4.1 首先设置libcaffe的属性


12.4.2 右键libcaffe,生成


大约10分钟之后,编译成功,这时caffe-matter文件夹所在的目录中,便多出了NugetPackages文件(第三方库文件)(嫌慢的去开头的百度云找,在安装过去)


12.4.3 编译其他文件

之后依次编译caffe,matcaffe,pycaffe。为了保险,又右键解决方案,生成解决方案


12.5 配置环境

此时caffe编译成功,但是要想使用,需要配置接口环境

12.5.1 MATLAB:

(1)将上步release生成的matcaffe文件夹加入matlab的路径中


其次还要将D:\caffe\caffe-master\Build\x64\Release加入path环境变量之中


重启MATLAB,输入测试代码:caffe.reset_all


 

12.5.2 python配置:

编译python支持库后,你还需要执行如下之一才能在python里使用:

设置环境变量 PythonPath,值为 <caffe_root>\Build\x64\Release\pycaffe,或者
复制目录 <caffe_root>\Build\x64\Release\pycaffe\caffe 到 <python_root>\lib\site-packages 目录

python测试,打开Windows的dos窗口

输出python,试着引用caffe :import caffe

会出现

ImportError: No module named google.protobuf.internal

则需要安装protobuf,使用pip进行安装,在dos窗口输入(注意:不要使用conda的命令,未安装成功)

pip install protobuf

如果又有

ImportError: No module named yaml

pip install pyyaml

安装成功后,在打开python试着引用caffe


恭喜你,装完了。