Caffe编译和图像训练测试

来源:互联网 发布:unity3d ios 红色问号 编辑:程序博客网 时间:2024/05/17 17:58

开始本文阅读之前,推荐阅读“CAFFE源代码解释与依赖项”:http://write.blog.csdn.net/postedit/76684030

CAFFE程序是用C++写的,Caffe支持Matlab和PYTHON接口

1.首先是下载源码

https://github.com/BVLC/caffe(官网源码)

https://github.com/weiliu89/caffe/tree/ssd(支持SSD)

使用CAFFE前建议做以下事情:

了解一下CAFFE 的文件结构

了解一下深度学习(神经网络)和图像原理:

了解一下C++编译原理(CMake, Make,Make Install)

PYTHON有灵活的编程方式,尤其在科学计算上有明显优势,因此建议再c++编译之后,使用python调用。

(CAFFE中很多依赖需要下载安装,必需安装pip)网上有教程,

两个步骤/命令:sudo apt-get install python-pip python-dev

sudo apt-get upgrade

Ubuntu强大的第三方依赖下载功能,因此建议使用Ubuntu进行编译。

推荐环境:Ubuntu16.04 Python2.7.12

2.然后是CAFFE依赖项目:

cmake python-numpy python-scipy python-matplotlib python-sklearn python-skimage python-h5py python-protobuf python-leveldb libhdf5-serial-dev libboost-all-dev libopenblas-dev  liblapack-dev libatlas-base-dev libgflags-dev libgoogle-glog-dev scikit-image python-networkx python-nose python-pandas python-gflags Cython ipython jupyter-notebook

CAFFE2的依赖项目基本包括了CAFFE的依赖项,也可以参考,CAFFE2依赖项:http://blog.csdn.net/yan_joy/article/details/70241319

上面所有插件使用apt-get或者pip进行安装

eg sudo apt-get install python-protobuf

或者sudo pip install python-protobuf

上面安装都是自动下载并安装的

安装完使用sudo apt-get install&&update python-protobuf

或者udo pip install python-protobuf --upgrade

进行依赖升级,如果不能安装成功,如下面安装:

其他未能下载的使用第三种方法:源码安装

分为deb,whl,bin或者tar.gz/zip等压缩文件。

deb,双击安装,

whl:文件路径,开启终端,使用pip安装 sudo pip install xxxxx.whl

bin:文件路径打开终端,再输入 sudo chmod u+x a.bin 按回车,提示输入密码,输入登录密码,回车;此行给文件执行权限,然后 sudo ./a.bin 就可以开始安装了

tar.gz/zip等压缩文件,要看文件是什么类型,如果是源文件,按照官网帮助安装;如果存在编译文件cmake,CmakeLists.txt,Makefile.config使用编译安装:cmake,make,make install。

编译卸载方法:部分未安装成功的,使用make uninstall卸载,rm -r build删除编译文件(并将/usr/lib和/usr/bin的软链接删除干净,使用find / -name xxxx.so删除同名文件)。

3.编译源码

再Caffe根目录下,新建build文件夹

并且修改CMakeLists.txt和Makefile.Config这两个文件,根据需求修改Python路径以及对依赖项的支持情况

可以参考以下配置:

CMakeList.txt

# ---[ Options

caffe_option(CPU_ONLY  "Build Caffe without CUDA support" ON) # TODO: rename to USE_CUDA
caffe_option(USE_CUDNN "Build Caffe with cuDNN library support" OFF)
caffe_option(BUILD_SHARED_LIBS "Build shared libraries" ON)
caffe_option(BUILD_python "Build Python wrapper" ON)
set(python_version "2" CACHE STRING "Specify which Python version to use")
caffe_option(BUILD_matlab "Build Matlab wrapper" OFF)
caffe_option(BUILD_docs   "Build documentation" ON)
caffe_option(BUILD_python_layer "Build the Caffe Python layer" ON)
caffe_option(USE_OPENCV "Build with OpenCV support" ON)
caffe_option(USE_LEVELDB "Build with levelDB" OFF)
caffe_option(USE_LMDB "Build with lmdb" ON)
caffe_option(ALLOW_LMDB_NOLOCK "Allow MDB_NOLOCK when reading LMDB files (only if necessary)" OFF)

Makefile.config

 BLAS := atlas
# Custom (MKL/ATLAS/OpenBLAS) include and lib directories.
# Leave commented to accept the defaults for your choice of BLAS
# (which should work)!
 BLAS_INCLUDE := /usr/include/atlas
 BLAS_LIB := /usr/lib/atlas-base/atlas

# NOTE: this is required only if you will compile the python interface.
# We need to be able to find Python.h and numpy/arrayobject.h.
PYTHON_INCLUDE := /usr/include/python2.7 \
        /usr/lib/python2.7/dist-packages/numpy/core/include

# Whatever else you find you need goes here.
INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/include/hdf5/serial/
LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib /usr/lib/x86_64-linux-gnu /usr/lib/x86_64-linux-gnu/hdf5/serial /home/wiener/Downloads/caffe-ssd/python

# The ID of the GPU that 'make runtest' will use to run unit tests.
#TEST_GPUID := 0

注意:GPU 模式需要将CPU-ONLY相关的选项都OFF掉,反之需要将GPU项目注释掉。

修改后编译中应该没有错误,否则检查3或者依赖项是否正确安装。

正确的编译步骤为:

首先进入build文件夹(CAFFE根目录下面):打开终端,执行cmake ..(中间是空格,最后是两个点点)

然后进行Caffe根目录,打开终端,依次执行:

sudo make all

sudo make pycaffe

sudo make test

sudo make runtest

其中前两个为必需项,用来生成待调用caffe和_caffe模块,如果最后的python脚本执行过程中报没有Caffe或者_Caffe模块,就是两个的编译问题。错误:no module name _caffe

上面命令可以加核心数加速编译,如:sudo make all -j8

编译成功后,就可以开始测试或者训练了。

4。训练和测试模型

1)测试 一般是用python demo.py(再example下)测试图像识别效果,部分需要用jupyter notebook下载,参照网上案例(例如可以参考SSD检测单张图像:http://blog.csdn.net/jesse_mx/article/details/52965281),需要制定图像路径和模型路径。

模型是.caffemodel后缀,可以再网上案例下载。

测试图像一般放在example的image文件夹中,或者再网上下载任意图像

2)训练

将数据放在制定文件夹,或者使用软链接再文件夹建立快捷方式。

首先将文件转化为LMDB(LEVELDB运行效率慢就不推荐了),根据教程,载入creat_xxx.sh(再文件夹中打开终端运行 .create_xxxx.sh或者bash .create_xxxx.sh)

然后,使用tran_xxxx.sh进行训练(再example里找)

最后生成.caffemodel文件。

测试训练其他步骤:http://suanfazu.com/t/caffe/281