caffe 編譯bug匯總

1.安裝CUDA的時候不安裝顯卡驅動;

2.最後安裝好caffe,運行程序時,將相關配置文件改為CPU運行模式,而不是GPU運行模式。

首先,先安裝一個git,在這之前要進行依賴源的更新

$sudo apt-get update

然後進行git的安裝(可以使用git --version對是否安裝了git進行查看)

$sudo apt-get install git

接著進行依賴源的安裝

$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

$sudo apt-get install libatlas-base-dev

接下來,跟著這個博客無鬧apt!!!裝裝裝

https://blog.csdn.net/Zmoudong/article/details/77914395?

blog.csdn.net

Kali新手喝咖啡(Caffe)的艱辛之路 - CSDN博客Kali新手喝咖啡(Caffe)的艱辛之路 - CSDN博客?

blog.csdn.net

需要安裝的東西:

snappy

Snappy 是一個 C++

的用來壓縮和解壓縮的開發包。其目標不是最大限度壓縮或者兼容其他壓縮格式,而是旨在提供高速壓縮速度和合理的壓縮率。Snappy 比 zlib

更快,但文件相對要大 20% 到 100%。在 64位模式的 Core i7 處理器上,可達每秒 250~500兆的壓縮速度。

leveldb

Leveldb是一個google實現的非常高效的kv資料庫,目前的版本1.2能夠支持billion級別的數據量了。 在這個數量級別下還有著非常高的性能,主要歸功於它的良好的設計。特別是LSM演算法.

gflags

gflags是google的一個開源的處理命令行參數的庫,使用c++開發,具備python介面,可以替代getopt。

gflags使用起來比getopt方便,但是不支持參數的簡寫。

glog

Google Glog 是一個C++語言的應用級日誌記錄框架,提供了 C++ 風格的流操作和各種助手宏。

szip

szip是一個快速,優良,跨平台的開源數據壓縮程序。

lmdb

lmdb是openLDAP項目開發的嵌入式(作為一個庫嵌入到宿主程序)存儲引擎。

hdf5

Hierarchical Data Format(HDF),可以存儲不同類型的圖像和數碼數據的文件格式,並且可以在不同類型的機器上傳輸,同時還有統一處理這種文件格式的函數庫。大多數普通計算機都支持這種文件格式。

opencv

OpenCV的全稱是:Open Source Computer Vision

Library。OpenCV是一個基於BSD許可(開源)發行的跨平台計算機視覺庫,可以運行在Linux、Windows、Android和Mac

OS操作系統上。它輕量級而且高效——由一系列 C 函數和少量 C++

類構成,同時提供了Python、Ruby、MATLAB等語言的介面,實現了圖像處理和計算機視覺方面的很多通用演算法。

OpenCV用C++語言編寫,它的主要介面也是C++語言,但是依然保留了大量的C語言介面。該庫也有大量的Python, Java and

MATLAB/OCTAVE (版本2.5)的介面。這些語言的API介面函數可以通過在線文檔獲得。如今也提供對於C#,Ch, Ruby的支持。

protobuf

protocolbuffer是google 的一種數據交換的格式,它獨立於語言,獨立於平台。google

提供了多種語言的實現:java、c#、c++、go 和

python,每一種實現都包含了相應語言的編譯器以及庫文件。由於它是一種二進位的格式,比使用 xml

進行數據交換快許多。可以把它用於分散式應用之間的數據通信或者異構環境下的數據交換。作為一種效率和兼容性都很優秀的二進位數據傳輸格式,可以用於諸如網路傳輸、配置文件、數據存儲等諸多領域。

Boost

Boost庫是為C++語言標準庫提供擴展的一些C++程序庫的總稱。

好了在編譯的時候,你可能會遇到的問題!!

  • 安裝protobuf

PROTOC src/caffe/proto/caffe.proto

make: protoc: Command not found

Makefile:638: recipe for target .build_release/src/caffe/proto/caffe.pb.cc failed

make: *** [.build_release/src/caffe/proto/caffe.pb.cc] Error 127

...........

下載安裝:github.com/google/proto

./autogen.sh: 4: ./autogen.sh: autoreconf: not found

上網查了查說是我的版本沒有安裝automake工具。解決方法如下

先後執行命令:

1. sudo apt-get install autoconf

2. sudo apt-get install automake

3.sudo apt-get install libtool

再次執行OK了。

./autogen.sh

./configure

make -j 24

sudo make install

  • 安裝glog和gflags

安裝glog和gflags - blackwall - 博客園?

www.cnblogs.com

  • 安裝hdf5

https://blog.csdn.net/luoying_1993/article/details/53228473?

blog.csdn.net

Linux安裝HDF5及遇到的問題總結 - CSDN博客

Linux安裝HDF5及遇到的問題總結 - CSDN博客?

blog.csdn.net

「fatal error: hdf5.h: 沒有那個文件或目錄」解決方法

參考自blog.csdn.net/hongye000

Step 1

Makefile.config文件的第85行,添加/usr/include/hdf5/serial/INCLUDE_DIRS,也就是把下面第一行代碼改為第二行代碼。

INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/includeINCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/include/hdf5/serial/

Step 2

Makefile文件的第173行,把 hdf5_hl 和hdf5修改為hdf5_serial_hlhdf5_serial,也就是把下面第一行代碼改為第二行代碼。

LIBRARIES += glog gflags protobuf boost_system boost_filesystem m hdf5_hl hdf5LIBRARIES += glog gflags protobuf boost_system boost_filesystem m hdf5_serial_hl hdf5_serial

NVCC src/caffe/layers/hdf5_output_layer.cu

nvcc fatal : Unsupported gpu architecture compute_20

Makefile:594: recipe for target .build_release/cuda/src/caffe/layers/hdf5_output_layer.o failed

make: *** [.build_release/cuda/src/caffe/layers/hdf5_output_layer.o] Error 1

注釋掉:

-gencode arch=compute_20,code=sm_20

-gencode arch=compute_20,code=sm_21

錯誤類型

LD -o .build_release/lib/libcaffe.so

/usr/bin/ld:/usr/local/lib/libgflags.a(gflags.cc.o):

relocation R_X86_64_32S against`.rodata can not be used when making a

shared object; recompile with -fPIC

/usr/local/lib/libgflags.a: error addingsymbols: Bad value

collect2: error: ld returned 1 exit status

make: *** [.build_release/lib/libcaffe.so]Error 1

解決:

這東西真的是每次編譯都會遇到各種問題,心累。

如果還有問題,那就加QQ群:745224003

目前群人數較少,希望後面慢慢壯大,想加微信,入群私聊~

推薦閱讀:

採用HALCON機器視覺軟體及C#語言檢測工件位置的方法 (之一)
《Learning Video Object Segmentation with Visual Memory》論文筆記
相關濾波之基礎框架——MOSSE
【小林的OpenCV基礎課 10】Canny邊緣檢測
[CVPR2018筆記]Convolutional Neural Networks with Alternately Updated Clique

TAG:Caffe深度學習框架 | 深度學習DeepLearning | 計算機視覺 |