环境:
ubuntu16.04
opencv4.2
cuda-10.0
cudnn 7.6.4
一、安装依赖项
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
sudo apt-get install -y python-numpy python-scipy python-matplotlib python-sklearn python-skimage python-h5py python-protobuf python-leveldb python-networkx python-nose python-pandas python-gflags cython ipython
sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev
sudo apt-get install git
二、caffe安装
在主文件下终端输入(即/home/***(您的服务器名字)这个目录):
git clonehttps://github.com/weiliu89/caffe.git
cd caffe
git checkout ssd(出现“分支”则说明copy-check成功)
进入caffe,将Makefile.config.example 文件复制一份并更名为Makefile.config
sudo cp Makefile.config.example Makefile.config
修改该配置文件:
将
#USE_CUDNN := 1
修改成:
USE_CUDNN := 1
将
#OPENCV_VERSION := 3
修改为:
OPENCV_VERSION := 3
将
#WITH_PYTHON_LAYER:= 1
修改为
WITH_PYTHON_LAYER :=1
INCLUDE_DIRS :=$(PYTHON_INCLUDE) /usr/local/include
LIBRARY_DIRS :=$(PYTHON_LIB) /usr/local/lib /usr/lib
修改为:
INCLUDE_DIRS :=$(PYTHON_INCLUDE) /usr/local/include /usr/include/hdf5/serial
LIBRARY_DIRS :=$(PYTHON_LIB) /usr/local/lib/usr/lib/x86_64-linux-gnu/hdf5/serial
修改 caffe 目录下的Makefile 文件:
NVCCFLAGS+=-ccbin=$(CXX) -Xcompiler-fPIC $(COMMON_FLAGS)
替换为:
NVCCFLAGS +=-D_FORCE_INLINES -ccbin=$(CXX) -Xcompiler -fPIC $(COMMON_FLAGS)
将:
LIBRARIES += gloggflags protobuf boost_system boost_filesystem m hdf5_hl hdf5
改为:
LIBRARIES += gloggflags protobuf boost_system boost_filesystem m hdf5_serial_hl hdf5_serial
cd */caffe(进入caffe目录)
mkdir build
cd build
cmake ..
make -j8
make install
make pycaffe(编译pycaffe)
三、anaconda报错
错误1:
runtime library [libgstvideo-1.0.so.0] in /usr/lib/x86_64-linux-gnu may be hidden by files in:
/home/mzgong/anaconda3/lib
解决:
输入命令:
echo $PATH //(查看环境变量)
/home/mzgong/anaconda3/bin:/home/mzgong/anaconda3/condabin:/opt/hisi-linux/x86-arm/arm-hisiv300-linux/target/bin:/opt/hisi-linux/x86-arm/arm-himix200-linux/bin:/opt/hisi-linux/x86-arm/arm-hisiv400-linux/target/bin:/opt/hisi-linux/x86-arm/gcc-arm-none-eabi-4_9-2015q3/bin:/opt/hisi-linux/x86-arm/aarch64-himix100-linux/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
//去除带anaconda的环境变量,重设剩余环境变量
export PATH=/opt/hisi-linux/x86-arm/arm-hisiv300-linux/target/bin:/opt/hisi-linux/x86-arm/arm-himix200-linux/bin:/opt/hisi-linux/x86-arm/arm-hisiv400-linux/target/bin:/opt/hisi-linux/x86-arm/gcc-arm-none-eabi-4_9-2015q3/bin:/opt/hisi-linux/x86-arm/aarch64-himix100-linux/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
三、opencv4
错误1:
error "OpenCV 4.x+ requires enabled C++11 support"
解决:
报错的本质是需要c++11的支持。在CMakeLists.txt中加上这一句命令即可:
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -fPIC -O3 -std=c++11 -fopenmp")
错误2:
/home/mzgong/caffe/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);
解决:
/home/mzgong/caffe/src/caffe/layers/video_data_layer.cpp
//加上一个头文件
#include <opencv2/videoio.hpp>
//加上cv命名空间
using namespace cv;
// 加上宏定义
#define CV_CAP_PROP_FRAME_COUNT CAP_PROP_FRAME_COUNT
#define CV_CAP_PROP_POS_FRAMES CAP_PROP_POS_FRAMES
错误3:
/home/mzgong/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);
解决:
opencv4里的 CV_LOAD_IMAGE_COLOR 应该使用 cv::IMREAD_COLOR 来代替。
// 加上宏定义
#define CV_LOAD_IMAGE_COLOR cv::IMREAD_COLOR
错误4:
/home/mzgong/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);
解决:
/home/mzgong/caffe/src/caffe/util/bbox_util.cpp
//修改CV_RGB为cv::Scalar
//修改CV_FILLED为cv::FILLED
错误5:
/home/mzgong/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
错误6:
/home/mzgong/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
错误7:
/home/mzgong/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/mzgong/caffe/src/caffe/util/io.cpp:87:5: error: ‘CV_LOAD_IMAGE_GRAYSCALE’ was not declared in this scope
CV_LOAD_IMAGE_GRAYSCALE);
解决:
/home/mzgong/caffe/src/caffe/util/io.cpp
加上
#define CV_LOAD_IMAGE_COLOR cv::IMREAD_COLOR
#define CV_LOAD_IMAGE_GRAYSCALE cv::IMREAD_GRAYSCALE
错误7:
/home/mzgong/caffe/src/caffe/util/bbox_util.cpp:2212:20: error: ‘CV_FILLED’ was not declared in this scope
color, CV_FILLED);
解决:
/home/mzgong/caffe/src/caffe/util/bbox_util.cpp
//修改CV_RGB为cv::Scalar
//修改CV_FILLED为cv::FILLED