Ubunt 16.04安装caffe,pyfasterrcnn,以及用rcnn训练自己的数据
1.安装caffe
1)安装相关依赖项
sudoapt-getinstall libprotobuf-devlibleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-devprotobuf-compiler
sudoapt-getinstall --no-install-recommendslibboost-all-dev
sudoapt-getinstalllibopenblas-dev liblapack-dev libatlas-base-dev
sudoapt-getinstalllibgflags-dev libgoogle-glog-dev liblmdb-dev
sudoapt-get install libprotobuf-dev libleveldb-dev libsnappy-devlibopencv-dev libhdf5-serial-dev protobuf-compiler
sudo apt-get install --no-install-recommends libboost-all-dev
sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev
sudo apt-get install python-skimage
sudo apt-get install python-protobuf
sudo apt-get install python-yaml
sudo pip install cython
sudo pip install easydict
2)安装NVIDIA驱动
(1)首先去官网 (http://www.nvidia.com/Download/index.aspx?lang=en-us )查看适合自己显卡的驱动并下载:
比如咱们的电脑的显卡是泰坦X,系统是64位Linux,我们根据提示选择(.run)文件,如图:
点击DOWNLOAD;
我们下载的驱动是:NVIDIA-Linux-x86_64-384.98.run,放在根目录(home/xxx)目录下。
(2)安装驱动;
在终端下输入:
sudo
gedit /etc/
modprobe
.d/blacklist.conf
输入
密码后在最后一行加上blacklistnouveau
.这里是将Ubuntu自带的显卡驱动加入黑名单。在终
端输入: sudoupdate-initramfs -u;重启电脑(reboot)这里要尤其注意,安装显卡驱动要先切换到文字界面(tty),(按Ctrl+Alt+F1~F6(咱们的电脑按
Ctrl+Alt+F1)),输入自己电脑的Name,然后输入密码。输入命令sudoservice lightdm stop,回到自己的根目录:
cd~,输入命令:sudo(sh)./NVIDIA-Linux-x86_64-384.98.run,根据提示安装驱动。安装结束,重启(reboot)。
安装完成之后输入以下指令进行验证: sudonvidia-smi ,若列出了GPU的信息列表则表示驱动安装成功。如下图:
(1)下载CUDA,首先在官网上(https://developer.nvidia.com/cuda-80-ga2-download-archive)下载CUDA:
(2)下载完成后(将下载好的cuda_8.0.61_375.26_linux.run文件放在home目录下)执行以下命令:
sudo chmod777cuda_8.0.61_375.26_linux.run
sudo ./cuda_8.0.61_375.26_linux.run
注意:执行后会有一系列提示让你确认,但是注意,有个让你选择是否安装nvidia375驱动 时,一定要选择否:
Install NVIDIA Accelerated Graphics Driver for Linux-x86_64 375.48?
因为前面我们已经安装了更加新的nvidia384,所以这里不要选择安装。其余的都直接默认 或者选择是即可。
(3)配置环境变量:
打开~/.bashrc文件:sudo vim ~/.bashrc
/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}(vim用法,按i插入,按esc退出编译,按:输入wq保存退出)
(4)测试CUDA的samples:输入:cd /usr/local/cuda-8.0/samples/1_Utilities/deviceQuerysudomakesudo ./deviceQuery如图所示表示安装cuda成功:
4)配置cudnn:
(这一步可能要多次执行)cdcuda
sudo cp lib64/libcudnn.* /usr/local/lib
#复制动态链接库cd/usr/local/cuda/lib64/sudorm -rf libcudnn.so libcudnn.so.5 #删除原有动态文件sudoln -s libcudnn.so.5.0.5 libcudnn.so.5 #生成软衔接sudoln -s libcudnn.so.5 libcudnn.so #生成软链接 5)安装opencv从官网(http://opencv.org/downloads.html)下载
Opencv,并解压home目录下:unzip opencv-3.1.0.zipsudo mv opencv-3.1.0 opencv编译安装opencvcd ~/opencv&&mkdir build&&cd buildsudo aptinstall cmakesudo cmake
-D CMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr/local ..因为opecv3.0与cuda8.0不兼容。需要修改~/opencv/modules/cudalegacy/src/graphcuts.cpp
文件内容,如图:
其中,#if !defined (HAVE_CUDA) || defined (CUDA_DISABLER)||(CUDART_VERSION>=8000)是修改完的部分,原来的被注释掉了。
Sudo make -j8
sudo make install
6)配置caffe
(1)下载caffe:
git clone https://github.com/BVLC/caffe.git
(
2
)修改
Makefile
文件
a.
将:
NVCCFLAGS +=-ccbin=$(CXX) -Xcompiler-fPIC $(COMMON_FLAGS)
替换为:
NVCCFLAGS += -D_FORCE_INLINES -ccbin=$(CXX) -Xcompiler -fPIC $(COMMON_FLAGS)
b.
将:
LIBRARIES += glog gflags protobuf boost_system boost_filesystem m hdf5_hl hdf5
改为:
LIBRARIES += glog gflags protobuf boost_system boost_filesystem m hdf5_serial_hl hdf5_serial
(3)
sudo
cp
Makefile.config.example Makefile.config
修改
Makefile.config
文件:
a.
将
:
#USE_CUDNN := 1
修改成:
USE_CUDNN := 1
b.
若使用的
opencv
版本是
3
的,则
将
:
#OPENCV_VERSION := 3
修改为
OPENCV_VERSION := 3
c.
若要使用
python
来编写
layer
,则将
#WITH_PYTHON_LAYER :=
1
修改为
WITH_PYTHON_LAYER :=
1
d.
重要的一项
:
将
# Whatever
else
you
find
you need goes here.
下面的
1 INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include
2 LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib
修改为:
1 INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/include/hdf5/serial 2 LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib /usr/lib/x86_64-linux-gnu /usr/lib/x86_64-linux-gnu/hdf5/serial(4)
make -j8
&&
make test
&&
make runtest
注意:
make
过程中如遇到有关
libcudnn
的问题,需要重新进行上面提及的
软连接
操作
如图:
说明caffe配置成功 7)MNIST数据集测试: cd ~/caffe 下载MNIST数据库并解压缩:./data/mnist/get_mnist.sh 将其转换成Lmdb数据库格式:./examples/mnist/create_mnist.sh 训练网络:./examples/mnist/train_lenet.sh 完成训练。 2.安装配置Py-faster-rcnn 1)下载Py-faster-rcnn:
git clone --recursive
https://github.com/rbgirshick/py-faster-rcnn.git
2
)安装相关依赖项:
pip install cython
sudo apt-get install python-opencv
pip install easydict
3)编译Cythonmodules
cdpy-faster-rcnn/lib&&make
4)修改有关cudnn文件(因为py-faster-rcnn里的cudnn的版本过旧):
将:
/home/zxj/py-faster-rcnn/caffe-fast-rcnn/include/caffe/util/
/home/zxj/py-faster-rcnn/caffe-fast-rcnn/include/caffe/layers/
/home/zxj/py-faster-rcnn/caffe-fast-rcnn/src/caffe/layers/
/home/zxj/py-faster-rcnn/caffe-fast-rcnn/src/caffe/util/
中所有有关cudnn的文件替换成我们刚编译的新caffe里相对应的文件。
5)将新编译的caffe里的Makefile与Makefile.config文件复制到/home/zxj/py-faster-rcnn/caffe-fast- rcnn/目录下。
6)修改文件:
py-faster-rcnn/caffe-fast-rcnn/src/caffe/test/test_smooth_L1_loss_layer.cpp
删除或者注释第十一行:
#include"caffe/vision_layers.hpp"
7)make-j8
&&
make test
&&
makeruntest
注意:
make
过程中如遇到有关
libcudnn
的问题,需要重新进行上面提及的
软连接
操作
如图
:
make pycaffe
安装成功。
8
)
测试:
cdpy-faster-rcnn
./tools/demo.py
如图:
安装成功。
3.py-faster-rcnn
训练自己的数据
1
)
制作数据集目录格式
下载
下载VOC2007数据集,附:http://pan.baidu.com/s/1gfdSFRX
删除:
data/VOCdevkit2007/VOC2007下所有文件
新建
在./data/VOCdevkit2007/VOC2007新建Annotations;ImageSets/Main;JPEGImages
说明:
Annotations:保存标签txt转换的xml文件
JPEGImages:图片文件
ImageSets/Main:文件名列表(不含后缀)
训练集:train.txt
训练验证集:trainval.txt
测试集:test.txt
验证集:val.txt
2)训练前的一些修改
(1)修改prototxt配置文件:
models/pascal_voc/ZF(VGG)/faster_rcnn_alt_opt文件夹下的5个文件,分别为:(a)stage1_rpn_train.pt、stage1_fast_rcnn_train.pt
stage2_rpn_train.pt、stage2_fast_rcnn_train.pt
(b) fast_rcnn_test.pt
rpn_train.pt文件修改:num_class:1+n(识别1类+背景n类)
ast_rcnn_train.pt文件修改:
num_class:1+n(识别n类+背景1类)
cls_score中num_output:num_class:1+n(识别n类+背景1类)
bbox_pred中num_output:num_class:(1+n)×4(识别n类+背景1类)
(2)修改lib/datasets/pascal_voc.py
self._classes=('__background__',#alwaysindex 0
'people')(写上自己训练的类别)
(3) 修改lib/datasets/imdb.py的append_flipped_images(self)函数
在boxes[:,2] = widths[i] - oldx1 - 1下加入代码:
forb in range(len(boxes)):
if boxes[b][2]<boxes[b][0]:
boxes[b][0] = 0
(4) 修改完pascal_voc.py和imdb.py后进入lib/datasets目录下删除原来的pascal_voc.pyc和 imdb.pyc文件,重新生成这两个文件,因为这两个文件是python编译后的文件,系统会直接调用
终端进入lib/datasets文件目录输入:
importpy_compile
py_compile.compile(r'imdb.py')
py_compile.compile(r'pascal_voc.py')
(5)删除缓存文件
①删除output/
②删除py-faster-rcnn/data/cache中的文件和
py-faster-rcnn/data/VOCdevkit2007/annotations_cache中的文件删除。
(6)调参
① 学习率等之类的设置:
py-faster-rcnn/models/pascal_voc/ZF/faster_rcnn_alt_opt中的solve文件设置
② 迭代次数:
py-faster-rcnn/tools/train_faster_rcnn_alt_opt.py中修改
py-faster-rcnn/models/pascal_voc/ZF/faster_rcnn_alt_opt里对应的solver文件(有4个)也修改,stepsize小于上面修改的数值。
(7)训练
./experiments/scripts/faster_rcnn_alt_opt.sh0 ZF pascal_voc
引用文章:http://blog.youkuaiyun.com/princepaul3/article/details/52313582