Caffe-SegNet安装笔记

一、安装

1. 下载SegNet:https://github.com/alexgkendall/caffe-segnet

2. 解压

3. 因为它是给予caffe实现的,所以先编译过程和要求与caffe相同

    (1)安装通用依赖:

 sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compiler
 sudo apt-get install --no-install-recommends libboost-all-dev

    (2)注意到上面安装了libopencv-dev,安装之前查看这个包的信息,感觉可以,进行安装

sudo apt-cache show libopencv-dev

显示结果如下:

Package: libopencv-dev
Priority: optional
Section: universe/libdevel
Installed-Size: 657
Maintainer: Kubuntu Developers <kubuntu-devel@lists.ubuntu.com>
Original-Maintainer: Debian Science Team <debian-science-maintainers@lists.alioth.debian.org>
Architecture: amd64
Source: opencv
Version: 2.4.9.1+dfsg-1.5ubuntu1
Depends: libc6 (>= 2.14), libgcc1 (>= 1:3.0), libopencv-calib3d2.4v5, libopencv-core2.4v5, libopencv-highgui2.4v5, libopencv-imgproc2.4v5, libopencv-ml2.4v5, libopencv-objdetect2.4v5, libstdc++6 (>= 5.2), libopencv-core-dev (= 2.4.9.1+dfsg-1.5ubuntu1), libopencv-ml-dev (= 2.4.9.1+dfsg-1.5ubuntu1), libopencv-imgproc-dev (= 2.4.9.1+dfsg-1.5ubuntu1), libopencv-video-dev (= 2.4.9.1+dfsg-1.5ubuntu1), libopencv-objdetect-dev (= 2.4.9.1+dfsg-1.5ubuntu1), libopencv-highgui-dev (= 2.4.9.1+dfsg-1.5ubuntu1), libopencv-calib3d-dev (= 2.4.9.1+dfsg-1.5ubuntu1), libopencv-flann-dev (= 2.4.9.1+dfsg-1.5ubuntu1), libopencv-features2d-dev (= 2.4.9.1+dfsg-1.5ubuntu1), libopencv-legacy-dev (= 2.4.9.1+dfsg-1.5ubuntu1), libopencv-contrib-dev (= 2.4.9.1+dfsg-1.5ubuntu1), libopencv-ts-dev (= 2.4.9.1+dfsg-1.5ubuntu1), libopencv-photo-dev (= 2.4.9.1+dfsg-1.5ubuntu1), libopencv-videostab-dev (= 2.4.9.1+dfsg-1.5ubuntu1), libopencv-stitching-dev (= 2.4.9.1+dfsg-1.5ubuntu1), libopencv-gpu-dev (= 2.4.9.1+dfsg-1.5ubuntu1), libopencv-superres-dev (= 2.4.9.1+dfsg-1.5ubuntu1), libopencv-ocl-dev (= 2.4.9.1+dfsg-1.5ubuntu1), libopencv2.4-java (= 2.4.9.1+dfsg-1.5ubuntu1), libopencv2.4-jni (= 2.4.9.1+dfsg-1.5ubuntu1), libcv-dev (= 2.4.9.1+dfsg-1.5ubuntu1), libhighgui-dev (= 2.4.9.1+dfsg-1.5ubuntu1), libcvaux-dev (= 2.4.9.1+dfsg-1.5ubuntu1), pkg-config
Recommends: opencv-data
Breaks: libopencv-core-dev (<= 2.3.1-8)
Filename: pool/universe/o/opencv/libopencv-dev_2.4.9.1+dfsg-1.5ubuntu1_amd64.deb
Size: 168612
MD5sum: ab6f095040684dba7c59452293d76733
SHA1: 639f0eb5434c9e58cd6dc7d463cf3678ebe0ec6b
SHA256: 298ea7a4d354317df60b0cb9bfd0aa2c090c93743c3e178564f709f3226e0cb0
Description-en: development files for opencv
 This is a metapackage providing development package necessary for
 development of OpenCV (Open Computer Vision).
 .
 The Open Computer Vision Library is a collection of algorithms and sample
 code for various computer vision problems. The library is compatible with
 IPL (Intel's Image Processing Library) and, if available, can use IPP
 (Intel's Integrated Performance Primitives) for better performance.
 .
 OpenCV provides low level portable data types and operators, and a set
 of high level functionalities for video acquisition, image processing and
 analysis, structural analysis, motion analysis and object tracking, object
 recognition, camera calibration and 3D reconstruction.
Description-md5: f9dc67381f1013c39fe59842c79cbddf
Homepage: http://opencv.org/
Bugs: https://bugs.launchpad.net/ubuntu/+filebug
Origin: Ubuntu
Supported: 9m

4. 安装需要用到的库:

sudo apt-get install python-matplotlib
sudo apt-get install python-scipy
sudo apt-get install python-opencv
sudo apt-get install python-protobuf
wget https://bootstrap.pypa.io/get-pip.py  --no-check-certificate
sudo python get-pip.py
sudo pip install -U scikit-image

5. 编译:

(1)进入主目录

(2)终端输入:

cp Makefile.config.example Makefile.config

(3)修改Makefile.config,将WITH_PYTHON_LAYER:=1 前的注释去掉。

(4)终端输入:

make all
make pycaffe
make test

二、运行Webcam Demo

1. 下载目录并解压:https://github.com/alexgkendall/SegNet-Tutorial

2. 下载对应的权重参数:http://mi.eng.cam.ac.uk/~agk34/resources/SegNet/

3. 修改Scripts/webcam_demo.py的14行为你安装的SegNet,我的为:

 

caffe_root = '/home/gph/Desktop/caffe-segnet-segnet-cleaned

4. 调用命令即可运行:

 

python Scripts/webcam_demo.py --model Example_Models/segnet_model_driving_webdemo.prototxt --weights /Example_Models/segnet_weights_driving_webdemo.caffemodel --colours /Scripts/camvid12.png

三、安装过程中遇到的问题:

1. make all 时报错:

 

CXX src/caffe/data_transformer.cpp
In file included from src/caffe/data_transformer.cpp:7:0:
./include/caffe/util/io.hpp:8:18: fatal error: hdf5.h: 没有那个文件或目录
compilation terminated.
Makefile:526: recipe for target '.build_release/src/caffe/data_transformer.o' failed
make: *** [.build_release/src/caffe/data_transformer.o] Error 1

解决办法:用配置过的Makefile和Makefile.config文件,替换现有的。

 

2. make all 时报错:

 

CXX src/caffe/data_transformer.cpp
In file included from ./include/caffe/util/device_alternate.hpp:40:0,
                 from ./include/caffe/common.hpp:19,
                 from ./include/caffe/blob.hpp:8,
                 from ./include/caffe/data_transformer.hpp:6,
                 from src/caffe/data_transformer.cpp:6:
./include/caffe/util/cudnn.hpp: In function ‘void caffe::cudnn::createPoolingDesc(cudnnPoolingStruct**, caffe::PoolingParameter_PoolMethod, cudnnPoolingMode_t*, int, int, int, int, int, int)’:
./include/caffe/util/cudnn.hpp:124:41: error: too few arguments to function ‘cudnnStatus_t cudnnSetPooling2dDescriptor(cudnnPoolingDescriptor_t, cudnnPoolingMode_t, cudnnNanPropagation_t, int, int, int, int, int, int)’
         pad_h, pad_w, stride_h, stride_w));
                                         ^
./include/caffe/util/cudnn.hpp:12:28: note: in definition of macro ‘CUDNN_CHECK’
     cudnnStatus_t status = condition; \
                            ^
In file included from ./include/caffe/util/cudnn.hpp:5:0,
                 from ./include/caffe/util/device_alternate.hpp:40,
                 from ./include/caffe/common.hpp:19,
                 from ./include/caffe/blob.hpp:8,
                 from ./include/caffe/data_transformer.hpp:6,
                 from src/caffe/data_transformer.cpp:6:
/usr/local/cuda/include/cudnn.h:803:27: note: declared here
 cudnnStatus_t CUDNNWINAPI cudnnSetPooling2dDescriptor(
                           ^
Makefile:572: recipe for target '.build_release/src/caffe/data_transformer.o' failed
make: *** [.build_release/src/caffe/data_transformer.o] Error 1

解决办法:

(1)下载最新版的caffe的cudnn:https://github.com/TimoSaemann/caffe-segnet-cudnn5

(2)将./include/caffe/util/cudnn.hpp换成最新版的caffe中的cudnn的实现,也就是相应的cudnn.hpp

(3)将./src/caffe/layers里所有的以cudnn开头的文件,全部换成最新版的caffe里的同名文件。

3. make all报错:

 

CXX src/caffe/layers/cudnn_relu_layer.cpp
src/caffe/layers/cudnn_relu_layer.cpp:4:45: fatal error: caffe/layers/cudnn_relu_layer.hpp: 没有那个文件或目录
compilation terminated.
Makefile:572: recipe for target '.build_release/src/caffe/layers/cudnn_relu_layer.o' failed
make: *** [.build_release/src/caffe/layers/cudnn_relu_layer.o] Error 1


解决办法:从下载的最新版的cudnn中查找,并复制粘贴到src/caffe/layers/中。

 

注:下面类似的也是这样处理。

3. make all报错:

CXX/LD -o .build_release/tools/upgrade_net_proto_binary.bin
.build_release/lib/libcaffe.so:对‘caffe::CuDNNReLULayer<float>::Reshape(std::vector<caffe::Blob<float>*, std::allocator<caffe::Blob<float>*> > const&, std::vector<caffe::Blob<float>*, std::allocator<caffe::Blob<float>*> > const&)’未定义的引用
.build_release/lib/libcaffe.so:对‘caffe::CuDNNReLULayer<double>::LayerSetUp(std::vector<caffe::Blob<double>*, std::allocator<caffe::Blob<double>*> > const&, std::vector<caffe::Blob<double>*, std::allocator<caffe::Blob<double>*> > const&)’未定义的引用
.build_release/lib/libcaffe.so:对‘caffe::CuDNNReLULayer<double>::~CuDNNReLULayer()’未定义的引用
.build_release/lib/libcaffe.so:对‘caffe::CuDNNReLULayer<double>::~CuDNNReLULayer()’未定义的引用
.build_release/lib/libcaffe.so:对‘caffe::CuDNNReLULayer<float>::~CuDNNReLULayer()’未定义的引用
.build_release/lib/libcaffe.so:对‘caffe::CuDNNReLULayer<float>::LayerSetUp(std::vector<caffe::Blob<float>*, std::allocator<caffe::Blob<float>*> > const&, std::vector<caffe::Blob<float>*, std::allocator<caffe::Blob<float>*> > const&)’未定义的引用
.build_release/lib/libcaffe.so:对‘caffe::CuDNNReLULayer<double>::Reshape(std::vector<caffe::Blob<double>*, std::allocator<caffe::Blob<double>*> > const&, std::vector<caffe::Blob<double>*, std::allocator<caffe::Blob<double>*> > const&)’未定义的引用
.build_release/lib/libcaffe.so:对‘caffe::CuDNNReLULayer<float>::~CuDNNReLULayer()’未定义的引用
collect2: error: ld returned 1 exit status
Makefile:616: recipe for target '.build_release/tools/upgrade_net_proto_binary.bin' failed
make: *** [.build_release/tools/upgrade_net_proto_binary.bin] Error 

原因:可能是因为cudnn的版本不匹配

解决办法:进入Makefile.comfig文件中,将USE_CUDNN := 1注释掉

3.  make pycaffe时报错:

make: *** No rule to make target 'include/caffe/layers/python_layer.hpp', needed by 'python/caffe/_caffe.so'。 停止。

原因:caffe版本不同导致

解决办法:将include/caffe/layers/文件夹中的python_layer.hpp复制到include/caffe/文件夹下

 

 

 

 

 

 

 

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值