Ubuntu16.04 caffe py-faster-rcnn安装以及训练自己的数据

Ubunt 16.04安装caffepyfasterrcnn,以及用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,系统是64Linux,我们根据提示选择(.run)文件,如图:


点 右下角的SEARCH





点击
DOWNLOAD

我们下载的驱动是:NVIDIA-Linux-x86_64-384.98.run,放在根目录(home/xxx)目录下。


2)安装驱动;

在终端下输入:sudogedit /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的信息列表则表示驱动安装成功。如下图:


3)安装CUDA

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
将以下内容写入到~/.bashrc尾部:export PATH=/usr/local/cuda-8.0/bin${PATH:+:${PATH}}export LD_LIBRARY_PATH=/usr/local/cuda8.0

/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}vim用法,按i插入,按esc退出编译,按输入wq保存退出)

4)测试CUDAsamples输入:cd /usr/local/cuda-8.0/samples/1_Utilities/deviceQuerysudomakesudo ./deviceQuery如图所示表示安装cuda成功:



4
)配置cudnn
首先去官网https://developer.nvidia.com/rdp/cudnn-download下载cuDNN,需要注册一个账号才能下载。下载版本号如下图:


下载完成后,解压:
sudotar -zxvf ./cudnn-8.0-linux-x64-v5.1.tgz解压后进行如下操作: a.复制头文件:cd cuda/includesudocp cudnn.h /usr/local/cuda/include  #复制头文件 b.建立软连接

这一步可能要多次执行)
cdcudasudo 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 -D
CMAKE_INSTALL_PREFIX=/usr/local ..因为opecv3.0cuda8.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配置成功
	7MNIST数据集测试:
		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里的MakefileMakefile.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"

7make-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新建AnnotationsImageSets/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.ptstage1_fast_rcnn_train.pt

stage2_rpn_train.ptstage2_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_scorenum_outputnum_class:1+n(识别n+背景1类)

bbox_prednum_outputnum_class:1+n×4(识别n+背景1类)

(2)修改lib/datasets/pascal_voc.py

self._classes=('__background__',#alwaysindex 0

'people')(写上自己训练的类别)

(3) 修改lib/datasets/imdb.pyappend_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.pyimdb.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.csdn.net/princepaul3/article/details/52313582



  


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值