目录
第四步:修改caffe里面Makefile.config和Makefile的配置,一定要修改:
第七部,是安装MLKP需要的python的环境和编译lib库
第九步,从百度云 BaiduYun 或者谷歌云 GoogleDrive
这个项目简直是神坑,巨坑。
项目一点都不详尽,缺胳膊少腿,给的代码还有错的。
晕,下面开始颠沛流离的调试吧。
项目地址,项目论文,项目论文翻译:(待续)
环境(这个必须严格要求):
- CUDA:8.0版(这个最好是8,7.5)
- CUDNN:5.0版(这个不是太硬需求)
- 接下来使用 protoc --version 确定 libprotoc的版本一定要2.6.1 (一般ubuntu16.04的libprotoc的版本都是2.6.1,一定要这个版本)
- 不使用anaconda,anaconda主要是编译的时候大多找不到路径,如果你看得懂配置文件,你可以一个一个改。
MLKP的测试步骤开始!!
下面说的所有建的*.sh脚本都在MLKP的根目录下
第一步下载MLKP代码集:
git clone https://github.com/Hwang64/MLKP.git
第二步,进入MLKP的路径,下载他推荐的caffe:
cd MLKP
git clone https://github.com/Hwang64/caffe-mlkp.git
第三步,准备开始编译caffe,这里开始就神坑了
(实在还有错,可以参考这里安装caffe部分):
cd caffe-mlkp
sudo cp Makefile.config.example Makefile.config
第四步:修改caffe里面Makefile.config和Makefile的配置,一定要修改:
sudo gedit Makefile.config
1)想修改python接口和cudnn支持,如果后面运行测试的时候,一直报
Check failed: data_ *** Check failure stack trace: *** Aborted (core dumped)这个错误,估计就是python接口没有打开。
# In your Makefile.config, make sure to have this line uncommented
WITH_PYTHON_LAYER := 1
# Unrelatedly, it's also recommended that you use CUDNN
USE_CUDNN := 1
2)这个hdf5错误,每次运行都碰到,还是改了舒心,这里要注意了,是改两个文件一个是Makefile,一个是Makefile.config。
step1:
在Makefile.config文件更改INCLUDE_DIRS和LIBRARY_DIRS的内容,添加/usr/include/hdf5/serial/ 到 INCLUDE_DIRS,也就是把下面第一行代码改为第二行代码。
#INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include
#LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib
改为
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
step2:
在Makefile文件的LIBRARIES,把 hdf5_hl 和hdf5修改为hdf5_serial_hl 和 hdf5_serial,也就是把下面第一行代码改为第二行代码。
#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
第五步,安装caffe的依赖和caffe的编译。
创建的一个caffe.sh把下面的脚本复制进去,使用sh caffe.sh可以快速将caffe的依赖安装好,里面包括编译。
#caffe的依赖
sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compiler -y
sudo apt-get install --no-install-recommends libboost-all-dev -y
sudo apt install protobuf-compiler libhdf5-serial-dev hdf5-helpers liblmdb-dev python-numpy libgflags-dev libblas-dev libgoogle-glog-dev libatlas-base-dev python-protobuf -y
sudo apt install liblmdb-dev -y
sudo apt-get install libgoogle-glog-dev -y
sudo apt install libatlas-base-dev -y
sudo apt-get install python-numpy -y
sudo cp caffe.mlkp.Makefile.config ./caffe-mlkp/Makefile.config
sudo cp caffe.mlkp.Makefile ./caffe-mlkp/Makefile
cd caffe-mlkp
make clean
make all -j16 && make pycaffe
#这里注意不一定要,我的caffe是由CUDA7.5编译的,我安装的是CUDA8可以兼容,所以直接复制
sudo cp /usr/local/cuda/lib64/libcudart.so.8.0 /usr/local/cuda/lib64/libcudart.so.7.5
第六部,本来按理是要把caffe加入环境里面的。
你可以试一下进入python
然后import caffe 看报错不。我这边不报错。
第七部,是安装MLKP需要的python的环境和编译lib库
创建的一个MLKP.sh把下面的脚本复制进去,使用sh MLKP.sh可以快速将MLKP的python库的依赖安装好,里面包括lib编译。
sudo apt-get install python-tk -y
sudo apt-get install python-yaml -y
sudo pip install easydict
sudo pip install numpy
sudo pip install opencv-python
sudo pip install 'networkx==2.2'
sudo pip install scikit-image
sudo pip install cython
cd lib
sudo rm utils/bbox.c
sudo rm nms/cpu_nms.c
sudo rm nms/gpu_nms.cpp
sudo rm pycocotools/_mask.c
make
第八步,接下来下载VOC2007的数据集
创建的一个VOC2007.sh把下面的脚本复制进去,使用sh VOC2007.sh可以快速将MLKP的VOC2007的库下载好
mkdir data
cd data
wget http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCtrainval_06-Nov-2007.tar
wget http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCtest_06-Nov-2007.tar
wget http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCdevkit_08-Jun-2007.tar
tar xvf VOCtrainval_06-Nov-2007.tar
tar xvf VOCtest_06-Nov-2007.tar
tar xvf VOCdevkit_08-Jun-2007.tar
ln -s VOCdevkit VOCdevkit2007
第九步,从百度云 BaiduYun 或者谷歌云 GoogleDrive
下载模型放在,MLKP的根目录的/output/
第十步,改模型的名字
可以看到测试代码中,modelObj=re.match(r'(.*)_faster_rcnn_(.*)_iter_(.*)',net.name,re.I),
他只识别这种->-> 类型__faster_rcnn_模型名字_iter_步数.caffemodel的形式。
我把左边改成右边这样
第十一步,运行测试代码,注意更改你已经更改好的模型名字
创建的一个test_VOC07_VGG16.sh把下面的脚本复制进去,使用sh test_VOC07_VGG16.sh可以快速运行MLKP的测试程序。
python ./tools/test_net.py --gpu 0\
--def models/VGG16/test.prototxt\
--net output/test_faster_rcnn_VGG16_iter_70000.caffemodel\
--imdb voc_2007_test\
--cfg experiments/cfgs/faster_rcnn_end2end.yml