一、安裝Protobuf
1、安裝依賴庫
sudo apt install -y autoconf automake libtool curl make g++ git python-dev python-setuptools unzip
2、下載protobuf3.2
git clone https//github.com/google/protobuf ~/protobuf -b '3.2.x'
3、編譯安裝
cd ~/protobuf sudo ./autogen.sh sudo ./configure sudo make -j6 sudo make install sudo ldconfig cd python sudo python setup.py install --cpp_implementation
安裝完後顯示Finished processing dependencies for protobuf==3.2.0 說明安裝成功
二、安裝NVIDIA Caffe
1、安裝各種依賴庫
sudo apt install -y build-essential cmake git gfortran libopenblas-dev libboost-all-dev libgflags-dev libgoogle-glog-dev libhdf5-serial-dev libleveldb-dev liblmdb-dev libopencv-dev libsnappy-dev python-all-dev python-dev python-h5py python-matplotlib python-numpy python-opencv python-pil python-pip python-pydot python-scipy python-skimage python-sklearn libturbojpeg0-dev libfreetype6-dev
2、下載NVIDIA Caffe
這裏最好下載最新版本,git clone https://github.com/NVIDIA/caffe
3、安裝Python運行庫
sudo apt install python-leveldb
gedit ~/caffe/python/requirements.txt
刪除文件中“leveldb>=0.191”行
sudo -H install -r ~/caffe/python/requirements.txt
4、編譯NVIDIA Caffe
cd ~/caffe mkdir build cd build cmake .. sudo make -j6 sudo make install
不過不幸的是,由於nano系統中自帶的是opencv4.x而caffe-ssd的作者是根據opencv2.0版本寫的,所以會出現很多錯誤。
如下圖所示:
錯誤(1):
/src/caffe/layers/video_data_layer.cpp:55:30: error: ‘CV_CAP_PROP_FRAME_COUNT’ was not declared in this scope
total_frames_ = cap_.get(CV_CAP_PROP_FRAME_COUNT);
解決方法:
//加上一個頭文件
#include <opencv2/videoio.hpp>
//加上cv命名空間
using namespace cv;
//去掉CV_CAP_PROP_FRAME_COUNT,CV_CAP_PROP_POS_FRAMES前面的CV_
不過建議還是在文件頭部進行宏定義:
#define CV_CAP_PROP_FRAME_COUNT CAP_PROP_FRAME_COUNT
#define CV_CAP_PROP_POS_FRAMES CAP_PROP_POS_FRAMES
錯誤(2):
caffe/src/caffe/layers/window_data_layer.cpp:293:42: error: ‘CV_LOAD_IMAGE_COLOR’ was not declared in this scope
cv_img = cv::imread(image.first, CV_LOAD_IMAGE_COLOR);
解決方法:cv::IMREAD_COLOR 代替 CV_LOAD_IMAGE_COLOR
錯誤(3):
/home/neuron-drop/workspace/caffe/src/caffe/util/bbox_util.cpp:2186:42: error: ‘CV_FILLED’ was not declared in this scope
CV_RGB(255, 255, 255), CV_FILLED);
解決方法:
//修改CV_RGB爲cv::Scalar,但應該注意兩者的區別,前者爲RGB,後者爲BGR
//修改CV_FILLED爲cv::FILLED
錯誤(四):
caffe/src/caffe/util/bbox_util.cpp:2221:48: error: there are no arguments to ‘CV_FOURCC’ that depend on a template parameter, so a declaration of ‘CV_FOURCC’ must be available [-fpermissive]
cv::VideoWriter outputVideo(save_file, CV_FOURCC('D', 'I', 'V', 'X'),
解決方法:
cv::VideoWriter writer;
// 修改CV_FOURCC爲writer.fourcc
錯誤(5):
caffe/src/caffe/util/im_transforms.cpp:246:39: error: ‘CV_BGR2GRAY’ was not declared in this scope
cv::cvtColor(in_img, in_img_gray, CV_BGR2GRAY);
解決方法:
註釋掉代碼對opencv版本的if判斷,並加上以下
#define CV_BGR2HSV cv::COLOR_BGR2HSV
#define CV_HSV2BGR cv::COLOR_HSV2BGR
#define CV_BGR2Lab cv::COLOR_BGR2Lab
錯誤(6):
caffe/src/caffe/util/io.cpp:86:34: error: ‘CV_LOAD_IMAGE_COLOR’ was not declared in this scope
int cv_read_flag = (is_color ? CV_LOAD_IMAGE_COLOR :
/home/neuron-drop/workspace/caffe/src/caffe/util/io.cpp:87:5: error: ‘CV_LOAD_IMAGE_GRAYSCALE’ was not declared in this scope
CV_LOAD_IMAGE_GRAYSCALE);
解決方法:加上
#define CV_LOAD_IMAGE_COLOR cv::IMREAD_COLOR
#define CV_LOAD_IMAGE_GRAYSCALE cv::IMREAD_GRAYSCALE
錯誤(7):CV_INTER_LINEAR was not declared in this scope
解決方法 : cv::INTER_LINEAR 替換 CV_INTER_LINEAR
5、配置環境變量
在 ~/.bashrc 中添加 export PYTHONPATH=/home/nvidai/caffe/python
source ~/.barshrc
命令行中輸入
python
>>>import caffe
>>>
表示安裝成功。