Caffe-ssd版本在windows 10下环境搭建及模型训练

1.配置环境

  • 系统:windows 10 64位
  • GPU:GTX1080
  • CUDA:9.0
  • cudnn:7.0
  • Python:Anaconda 2.7 version
  • 编译:Visual Studio 2013

2.安装CUDA和cudnn

  • CUDA可以直接在官网下载,并按照安装程序一步步默认即可
  • cudnn官网下载之后解压会有一个cuda文件夹,解压即可
CUDA各个版本下载地址:https://developer.nvidia.com/cuda-toolkit-archive

cudnn下载地址:https://developer.nvidia.com/cudnn

3.下载并编译caffe-ssd-microsoft

网上很多是通过caffe-windows编译修改成ssd版本,这里推荐使用caffe-ssd-microsoft版本

下载地址:https://github.com/conner99/caffe //选择ssd-microsoft分支

Caffe-ssd版本在windows 10下环境搭建及模型训练_第1张图片

a. 配置修改

  • 打卡windows文件夹,找到CommonSettings.props.example文件,备份,然后更改文件名为CommonSettings.props,然后使用VS2013打开Caffe.sln文件;
    Caffe-ssd版本在windows 10下环境搭建及模型训练_第2张图片
  • VS中打开CommonSettings.props配置文件,然后修改以下配置,其中第24行为先将下载的cuDNN文件解压得到cuda文件夹,此行为cuda文件夹路径,第48行为Anaconda2安装文件夹路径;
    Caffe-ssd版本在windows 10下环境搭建及模型训练_第3张图片
    Caffe-ssd版本在windows 10下环境搭建及模型训练_第4张图片
  • 此时若发现libcaffe & test_all未加载成功,关闭VS,然后打开CUDA安装路径下的MSbuildExtensions文件夹,拷贝该文件夹下的所有文件到C 盘 / Program File(x86) /MSBuild /Microsoft.Cpp /v4.0(这里取决于你安装的版本) /V120 / BuildCustomizations 文件夹,替换目标中的文件;
    Caffe-ssd版本在windows 10下环境搭建及模型训练_第5张图片
    Caffe-ssd版本在windows 10下环境搭建及模型训练_第6张图片
    Caffe-ssd版本在windows 10下环境搭建及模型训练_第7张图片
  • 重新打开VS即可看到加载成功

b. 编译

  • 首先编译libcaffe,设置libcaffe的属性页如下图所示:
    Caffe-ssd版本在windows 10下环境搭建及模型训练_第8张图片
  • 编译libcaffe,会出现与boost相关的regex正则表达式库问题,项目中不需要,注释掉即可,即进入libcaffe中,搜索detection_output_layer.hpp /detection_output_layer.cpp /detection_output_layer.cu文件中所有的含有regex和rv的代码注释掉
  • 可能会出现expected an identifier in caffe.pb.h,出现与thrust相关的问题,打开bbox_util.cu文件,搜索并注释掉所有含thrust的语句
  • 在路径.\caffe-ssd-microsoft\include\caffe\3rdparty\下添加hungarian.h文件,在路径.\caffe-ssd-microsoft \src \caffe \3rdparty \下添加hungarian.cpp文件;在这里找这个文件,链接:http://pan.baidu.com/s/1mhYuf7y 密码:3jp2
  • 另外在编译过程中可能会出现一些依赖包的问题,常见的是opencv和gflags的问题显示为:

error MSB4062: 未能从程序集 D:\NugetPackages\OpenCV.2.4.10\build\native\private\coapp.NuGetNativeMSBuildTasks.dll 加载任务“NuGetPackageOverlay”。未能加载文件或程序集“file:///E:\NugetPackages\OpenCV.2.4.10\build\native\private\coapp.NuGetNativeMSBuildTasks.dll”或它的某一个依赖项。系统找不到指定的文件。 请确认 声明正确,该程序集及其所有依赖项都可用,并且该任务包含实现 Microsoft.Build.Framework.ITask 的公共类。D:\NugetPackages\OpenCV.2.4.11\build\native\OpenCV.targets1115 5 libcaffe

  • 我在解决opencv问题时候发现解决这个问题的方法可能会是多种的,我的问题是在Github的issue中找到的解决方法,设置最大运行和编译数量为1
https://github.com/BVLC/caffe/issues/4788 //我使用了最后一个解决方法

Caffe-ssd版本在windows 10下环境搭建及模型训练_第9张图片

  • 你的问题说不定会在issue的其他解决方案中找到答案,另外有人提出在NugetPackages \OpenCV.2.4.10 \build \native \OpenCV.props文件中修改删除private前面的’\’可以解决,另外一个麻烦一点的解决方法是删除自动下载的opencv包,然后手动配置各个项目的opencv依赖,参考博客如下:
https://blog.csdn.net/qq_27278153/article/details/53667756
  • 对于gflags也可以参照opencv的做法来尝试解决
  • 编译libcaffe还遇到的一个问题是提示 error MSB3721: 命令“”C:\Program Files \NVIDIA GPU Computing Toolkit \CUDA \v6.5 \bin\nvcc.exe” 后面跟了一大堆参数,其实出现这个问题主要是由于另一个问题引起的,即too few arguments···,全局搜索找到cudnnSetConvolution2dDescriptor函数(位于cudnn.hpp),为该函数增加一个参数:
    Caffe-ssd版本在windows 10下环境搭建及模型训练_第10张图片
  • libcaffe编译成功之后,接下来就要编译caffe,编译caffe同样要设置属性页
    Caffe-ssd版本在windows 10下环境搭建及模型训练_第11张图片
  • caffe项目在编译过程中可能会出现cuda相关库找不到的问题,此时在caffe属性页将安装的cuda路径添加到VC++目录中去:
    Caffe-ssd版本在windows 10下环境搭建及模型训练_第12张图片
  • 编译完caffe项目之后即可编译pycaffe项目和convert_imageset项目,相应的也要设置属性页中的VC++目录

c.模型训练

  • 在编译完成之后就可以进行模型的训练过程,模型训练过程中可能还会有一些问题,遇到之后再回来更改重新编译
  • 首先准备好自己的数据集,图片和文本文件,然后新建一个bat文件,作用是将数据集转换成模型训练需要的lmdb格式,双击运行即可
D:\caffe\Build\x64\Release\convert_imageset.exe --resize_height=300 --resize_width=300 --shuffle --backend=leveldb D:\caffe-ssd-microsoft\data\VOC0712\train\ D:\caffe-ssd-microsoft\data\VOC0712\train.txt  D:\caffe-ssd-microsoft\examples\myfile\VOC0712_trainval_lmdb
D:\caffe\Build\x64\Release\convert_imageset.exe --resize_height=300 --resize_width=300 --shuffle --backend=leveldb D:\caffe-ssd-microsoft\data\VOC0712\test\ D:\caffe-ssd-microsoft\data\VOC0712\test.txt  D:\caffe-ssd-microsoft\examples\myfile\VOC0712_test_lmdb
  • lmdb文件生成之后,修改solver/test/train的三个网络文件,修改路径,然后新建一个bat文件,作用是训练数据生成模型,双击运行即可
SET GLOG_logtostderr=1
.\Build\x64\Release\caffe.exe train --solver=.\models\VGGNet\VOC0712\SSD_300x300\solver.prototxt
pause
  • 模型训练中会出现distort_param / expand_param等参数无法被解析,这是由于从linux系统移植到windows系统下出现的参数问题,我的解决方法是对照之前linux系统下的caffe.proto文件,将无法解析的参数部分复制过来添加到目前系统下的caffe.proto文件(位于./caffe-ssd-microsoft/src/caffe/proto),然后重新按顺序编译,之前看到博客有建议说直接将这个文件复制过来替换现在的文件,但是替换之后编译会在多个文件报错,需要把报错文件都替换,所以我的做法是对比只添加未能解析的参数,然后重新编译工程,这个过程可能会浪费一些时间尝试

d.Python图像识别

  • 训练生成模型之后,就可以通过模型文件来做图像识别,我主要用的是Python,通过python调用caffe包来做识别
  • 首先将之前工程生成的./Build/x64/Release/pycaffe文件夹下面的caffe文件夹复制到Python的包目录下,即./Anaconda2/Lib/site-packages下面,然后在命令行下输入python/import caffe,执行成功则说明pycaffe编译成功
  • 将原linux下的python程序移植到windows基本没遇到什么问题,需要修改一下路径,然后我遇到的一个问题是有一个包VDBSCAB在windows下无法安装,我的解决办法是直接通过原linux系统将该包复制过来添加到python的包目录下即可
  • 至此Caffe-ssd版本从linux系统下移植到windows完成。

你可能感兴趣的:(DeepLearning,caffe,windows,ssd,深度学习,框架)