語義分割學習系列(九)caffe segnet代碼的編譯

前言

segnet語義分割模型是一種經典的Encoder-Decoder的全卷積網絡模型。github上有比較多使用pytorch框架來該模型的實現。而論文作者Alex是基於caffe框架來對它進行復現。 、

我們這裏考慮是後者,其對應的github地址爲https://github.com/alexgkendall/caffe-segnet

代碼下載及準備

首先下載代碼,如下圖所示。 網絡不好時,容易下載失敗。有時明明直接下載zip包成功,但是解壓縮失敗。總之多試幾次。

2)依賴包的安裝

sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libboost-all-dev 

編譯過程

1)在caffe-segnet根目錄下, cp Makefile.config.example Makefile.config  然後對Makefile.config進行修改,如下所示。

2)編譯遇到的第一個問題:protoc: Command not found 如下圖所示 

解決方法:需要安裝protoc-c

sudo apt-get install protobuf-c-compiler protobuf-compiler

3)gflags.h找不到的錯誤,如下所示 

./include/caffe/common.hpp:5:10: fatal error: gflags/gflags.h: 沒有那個文件或目錄
 #include <gflags/gflags.h>

解決思路:

sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev

4)cblas.h找不到的錯誤

./include/caffe/util/mkl_alternate.hpp:11:10: fatal error: cblas.h: 沒有那個文件或目錄
 #include <cblas.h>

解決方法:

sudo apt-get install libblas-dev

5)找不到hdf5.h文件

./include/caffe/data_layers.hpp:9:10: fatal error: hdf5.h: 沒有那個文件或目錄
 #include "hdf5.h"

解決方法:

sudo apt-get install libhdf5-serial-dev

6)不支持 compuer_20的CUDA架構

nvcc fatal   : Unsupported gpu architecture 'compute_20'
Makefile:539: recipe for target '.build_release/cuda/src/caffe/layers/mvn_layer.o' failed
解決辦法,如上面截圖所示,就是將Makefile.confg中的computer_20,computer_21給注掉。

7)鏈接時找不到 atlas庫

LD -o .build_release/lib/libcaffe.so
/usr/bin/ld: 找不到 -lcblas
/usr/bin/ld: 找不到 -latlas

解決辦法:
 

sudo apt-get install libatlas-base-dev

8)最後一個鏈接錯誤是,找不到imread之類的opencv APIs.

build_release/lib/libcaffe.so:對‘cv::imread(cv::String const&, int)’未定義的引用

解決方法是 在Makefile裏面 將libopencv_imgcodecs.so庫鏈接進來

結束語

 終於可以  make all -j8  以及 make pycaffe -j8成功了。這其實就是在一個比較乾淨的ubuntu18.04上面想要編譯caffe代碼通過的程。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章