开始本文阅读之前,推荐阅读“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( 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