一、安装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
>>>
表示安装成功。