caffe(cpu)配置之终极成功版哈哈哈

版权声明:学无止境,好好学习 https://blog.csdn.net/m0_38116269/article/details/88919184

前言

历经几十次的caffe安装经历,终于对它的安装过程有了更深的理解,碰到一些bug也知道如何避过。我先重启一下,如果还能正常进入ubuntu那咱们就把配置过程详细叙述一下(因为之前也配置成功做,重启后连ubunu都进不去了,愿上天保佑我!)
好的,我重启了一下,成功回来了,看来这一次是真真正正的配置好了。

配置要点

总结来看,你想成功配置好,
1)我觉得最最重要的,应该对环境变量有一定理解。
2)要知道自己的opencv安装在哪儿,因为caffe里面有些函数需要调用opencv库。
3)你应该知道每一行终端命令执行的是干嘛用的,如make all。
我的配置:
系统:ubuntu18.04 LTS(其他版本也可)
OpenCV版本:2.4.13(opencv4我没试,恐怕与caffe不兼容)
Caffe来源:https://github.com/BVLC/caffe 到官方这里下载

配置准备

1.参考caffe官网安装指导,下载好相应的依赖项。

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

这里值得一提的是,如果你的系统版本是跟我一样ubuntu18的,那么在apt install里面人家集成了caffe的包,可以自己下载安装,这样好处是非常方便,你安装完之后,想测试的话,终端输入python3进入python编程环境,然后就可以import caffe了,但是,目前以我的水平,只能利用它做caffe的python相关编程,C++下,caffe包老是导入不进去,我姑且就认为,这种方式,只能适合Python环境下用caffe. 如果想用从c++版本的caffe,或者想清清楚楚看看caffe的代码结构,还是老老实实从源码安装吧。
2. 源码编译安装Opencv
为什么要下载源码呢,毕竟前面已经sudo apt install libopencv-dev了呀( ⊙ o ⊙ )!因为这个自动下载的包不好,首先,你即使侥幸配置好了,会发现,有些功能如显示图片和视频功能用不了,因为上面的包是阉割版的!所以乖乖源码编译安装Opencv。版本2和3都可以,但是4可能用在caffe上面不行,因为其Makefile.config里面Opencv选项只有2和3。
opencv官方下载网站,下载到自己电脑里面,然后参考Opencv 官方安装指导。这里啰嗦一句,官方安装指导才是最好的,别瞎找一篇博客就干,多数搞得一团糟。
默认的opencv安装位置是,/usr/local,按照默认挺好的,这样后面Makefile.config就简单一些,cafe能容易找到你这个安装的位置。
我就比较折腾了,opencv2的安装位置是,/usr/opencv2_13/
这是我的安装(不要自己瞎折腾):

cd ~/my path to/opencv
mkdir release
cd release
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/opencv2_13 ..
make
sudo make install

这里的make install 就会把各种库文件安装到你的预安装位置上。安装完亲自去那个目录里面看看,原本空空的,现在有了一些东西了。

Makefile.config编写

cp Makefile.config.example Makefile.config产生个Makefile.config文件,根据自己的需要进行修改,这里面写的如何直接决定你caffe能够成功安装,非常重要。
我的需求是,暂时不需要python接口,所以可以先把关于Python的都注释掉。后面需要再重新编译再说。
这里得说一下,caffe官网的安装说明有许多的bug,我基本上都遇到过,最终生成了我独一无二的Makefile.config, 可作参考。

## Refer to http://caffe.berkeleyvision.org/installation.html
# Contributions simplifying and improving our build system are welcome!

# cuDNN acceleration switch (uncomment to build with cuDNN).
# USE_CUDNN := 1 #因为不适用GPU,所以不配

# CPU-only switch (uncomment to build without GPU support).
CPU_ONLY := 1 #配置cpu版本的caffe必须要打开

# uncomment to disable IO dependencies and corresponding data layers
# USE_OPENCV := 0 #这意思是=0就是不用啊,不用那里面一些函数咋整,可能有些操作不用opencv也能实现吧。但opencv挺方便的
# USE_LEVELDB := 0 #
# USE_LMDB := 0 #这个你以后需要将图片转成这种LMDB格式,还是要用的
# This code is taken from https://github.com/sh1r0/caffe-android-lib
# USE_HDF5 := 0 

# uncomment to allow MDB_NOLOCK when reading LMDB files (only if necessary)
#	You should not set this flag if you will be reading LMDBs with any
#	possibility of simultaneous read and write
# ALLOW_LMDB_NOLOCK := 1

# Uncomment if you're using OpenCV 3
#OPENCV_VERSION := 3 #如果你的是opencv3版本,就得把这个打开

# To customize your choice of compiler, uncomment and set the following.
# N.B. the default for Linux is g++ and the default for OSX is clang++
# CUSTOM_CXX := g++

# CUDA directory contains bin/ and lib/ directories that we need.
CUDA_DIR := /usr/local/cuda #这个不注释掉也没事,因为前面已经是cpu_only了
# On Ubuntu 14.04, if cuda tools are installed via
# "sudo apt-get install nvidia-cuda-toolkit" then use this instead:
# CUDA_DIR := /usr

# CUDA architecture setting: going with all of them.
# For CUDA < 6.0, comment the *_50 through *_61 lines for compatibility.
# For CUDA < 8.0, comment the *_60 and *_61 lines for compatibility.
# For CUDA >= 9.0, comment the *_20 and *_21 lines for compatibility.
CUDA_ARCH := -gencode arch=compute_20,code=sm_20 \
		-gencode arch=compute_20,code=sm_21 \
		-gencode arch=compute_30,code=sm_30 \
		-gencode arch=compute_35,code=sm_35 \
		-gencode arch=compute_50,code=sm_50 \
		-gencode arch=compute_52,code=sm_52 \
		-gencode arch=compute_60,code=sm_60 \
		-gencode arch=compute_61,code=sm_61 \
		-gencode arch=compute_61,code=compute_61

# BLAS choice:
# atlas for ATLAS (default)
# mkl for MKL
# open for OpenBlas
BLAS := atlas
# Custom (MKL/ATLAS/OpenBLAS) include and lib directories.
# Leave commented to accept the defaults for your choice of BLAS
# (which should work)!
# BLAS_INCLUDE := /path/to/your/blas
# BLAS_LIB := /path/to/your/blas

# Homebrew puts openblas in a directory that is not on the standard search path
# BLAS_INCLUDE := $(shell brew --prefix openblas)/include
# BLAS_LIB := $(shell brew --prefix openblas)/lib

# This is required only if you will compile the matlab interface.
# MATLAB directory should contain the mex binary in /bin.
# MATLAB_DIR := /usr/local
# MATLAB_DIR := /Applications/MATLAB_R2012b.app

# NOTE: this is required only if you will compile the python interface.
# We need to be able to find Python.h and numpy/arrayobject.h.

#这里我注释掉了,暂时不用Python训练测试
#PYTHON_INCLUDE := /usr/include/python3.6 \
#		/usr/lib/python3/dist-packages/numpy/core/include
# Anaconda Python distribution is quite popular. Include path:
# Verify anaconda location, sometimes it's in root.

#强烈建议不要打开,anaconda和系统默认环境有许多库有冲突,打开的话,选择环境变量会很头疼,我就试过。
#ANACONDA_HOME := $(HOME)/anaconda3
#PYTHON_INCLUDE := $(ANACONDA_HOME)/include \
#		 $(ANACONDA_HOME)/include/python3.7m \
#		 $(ANACONDA_HOME)/lib/python3.7/site-packages/numpy/core/include

# Uncomment to use Python 3 (default is Python 2)
# PYTHON_LIBRARIES := boost_python3 python3.5m
# PYTHON_INCLUDE := /usr/include/python3.5m \
#                 /usr/lib/python3.5/dist-packages/numpy/core/include

# We need to be able to find libpythonX.X.so or .dylib.
#PYTHON_LIB := /usr/lib
#PYTHON_LIB := $(ANACONDA_HOME)/lib

# Homebrew installs numpy in a non standard path (keg only)
# PYTHON_INCLUDE += $(dir $(shell python -c 'import numpy.core; print(numpy.core.__file__)'))/include
# PYTHON_LIB += $(shell brew --prefix numpy)/lib

# Uncomment to support layers written in Python (will link against Python libs)
# WITH_PYTHON_LAYER := 1

# Whatever else you find you need goes here.
#INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/include/hdf5/serial 
#LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib /usr/lib/x86_64-linux-gnu/hdf5/serial 

#这两个地方非常重要,你能不能成功避开各种坑,成功配置caffe,95%要看这里
INCLUDE_DIRS := /usr/opencv2_13/include /usr/local/include /usr/include/hdf5/serial
LIBRARY_DIRS := /usr/opencv2_13/lib /usr/local/lib /usr/lib /usr/lib/x86_64-linux-gnu/hdf5/serial 

# If Homebrew is installed at a non standard location (for example your home directory) and you use it for general dependencies
# INCLUDE_DIRS += $(shell brew --prefix)/include
# LIBRARY_DIRS += $(shell brew --prefix)/lib

# NCCL acceleration switch (uncomment to build with NCCL)
# https://github.com/NVIDIA/nccl (last tested version: v1.2.3-1+cuda8.0)
# USE_NCCL := 1

# Uncomment to use `pkg-config` to specify OpenCV library paths.
# (Usually not necessary -- OpenCV libraries are normally installed in one of the above $LIBRARY_DIRS.)
#USE_PKG_CONFIG := 1
#LIBRARIES += glog gflags protobuf leveldb snappy \
        lmdb boost_system hdf5_hl hdf5 m \
        opencv_core opencv_highgui opencv_imgproc opencv_imgcodecs
# N.B. both build and distribute dirs are cleared on `make clean`
BUILD_DIR := build
DISTRIBUTE_DIR := distribute

# Uncomment for debugging. Does not work on OSX due to https://github.com/BVLC/caffe/issues/171
# DEBUG := 1

# The ID of the GPU that 'make runtest' will use to run unit tests.
TEST_GPUID := 0

# enable pretty build (comment to see full commands)
Q ?= @

其中找Include和libs的两行代码非常重要,我是这样写的:
INCLUDE_DIRS := /usr/opencv2_13/include /usr/local/include /usr/include/hdf5/serial
LIBRARY_DIRS := /usr/opencv2_13/lib /usr/local/lib /usr/lib /usr/lib/x86_64-linux-gnu/hdf5/serial
因为我的opencv2是安装在/usr/opencv2_13目录里面的,一定要放在最前面,让编译器最先寻找这个路径才可以找到,我试过,放在后面就失败了。因为编译器比较笨,多个opencv版本容易犯冲突。首先系统在sudo apt install libopencv-dev时安装在了默认/usr/local目录了,毕竟这个阉割版本的嘛,一看有某些东西没有,就给我报错了,所以把我的安装目录放在最前面,好堵住编译器的嘴。另外那个hdf5的目录也要给包括进去,这个不冲突,所以放在后面没事问题。

具体实践去安装吧

常见错误:

CXX/LD -o .build_release/tools/extract_features.bin
CXX/LD -o .build_release/tools/convert_imageset.bin
CXX/LD -o .build_release/tools/upgrade_net_proto_binary.bin
CXX/LD -o .build_release/tools/compute_image_mean.bin
.build_release/lib/libcaffe.so: undefined reference to `cv::_OutputArray::_OutputArray(cv::Mat&)'
.build_release/lib/libcaffe.so: undefined reference to `cv::_InputArray::_InputArray(cv::Mat const&)'
.build_release/lib/libcaffe.so: undefined reference to `cv::imdecode(cv::_InputArray const&, int)'
.build_release/lib/libcaffe.so: undefined reference to `cv::imencode(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, cv::_InputArray const&, std::vector<unsigned char, std::allocator<unsigned char> >&, std::vector<int, std::allocator<int> > const&)'
.build_release/lib/libcaffe.so: undefined reference to `cv::imread(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int)'
.build_release/lib/libcaffe.so: undefined reference to `vtable for cv::_InputArray'
collect2: error: ld returned 1 exit status
Makefile:635: recipe for target '.build_release/tools/upgrade_net_proto_binary.bin' failed
make: *** [.build_release/tools/upgrade_net_proto_binary.bin] Error 1
make: *** Waiting for unfinished jobs....
.build_release/lib/libcaffe.so: undefined reference to `cv::_OutputArray::_OutputArray(cv::Mat&)'
.build_release/lib/libcaffe.so: undefined reference to `cv::_InputArray::_InputArray(cv::Mat const&)'
.build_release/lib/libcaffe.so: undefined reference to `cv::imdecode(cv::_InputArray const&, int)'
.build_release/lib/libcaffe.so: undefined reference to `cv::imencode(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, cv::_InputArray const&, std::vector<unsigned char, std::allocator<unsigned char> >&, std::vector<int, std::allocator<int> > const&)'
.build_release/lib/libcaffe.so: undefined reference to `cv::imread(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int)'
.build_release/lib/libcaffe.so: undefined reference to `vtable for cv::_InputArray'
collect2: error: ld returned 1 exit status
.build_release/lib/libcaffe.so: undefined reference to `cv::_OutputArray::_OutputArray(cv::MatMakefile:635: recipe for target '.build_release/tools/extract_features.bin' failed
&make: *** [.build_release/tools/extract_features.bin] Error 1
)'
.build_release/lib/libcaffe.so: undefined reference to `cv::_InputArray::_InputArray(cv::Mat const&)'
.build_release/lib/libcaffe.so: undefined reference to `cv::imdecode(cv::_InputArray const&, int)'
.build_release/lib/libcaffe.so: undefined reference to `cv::imencode(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, cv::_InputArray const&, std::vector<unsigned char, std::allocator<unsigned char> >&, std::vector<int, std::allocator<int> > const&)'
.build_release/lib/libcaffe.so: undefined reference to `cv::imread(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int)'
.build_release/lib/libcaffe.so: undefined reference to `vtable for cv::_InputArray'
collect2: error: ld returned 1 exit status
Makefile:635: recipe for target '.build_release/tools/compute_image_mean.bin' failed
make: *** [.build_release/tools/compute_image_mean.bin] Error 1
.build_release/lib/libcaffe.so: undefined reference to `cv::_OutputArray::_OutputArray(cv::Mat&)'
.build_release/lib/libcaffe.so: undefined reference to `cv::_InputArray::_InputArray(cv::Mat const&)'
.build_release/lib/libcaffe.so: undefined reference to `cv::imdecode(cv::_InputArray const&, int)'
.build_release/lib/libcaffe.so: undefined reference to `cv::imencode(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, cv::_InputArray const&, std::vector<unsigned char, std::allocator<unsigned char> >&, std::vector<int, std::allocator<int> > const&)'
.build_release/lib/libcaffe.so: undefined reference to `cv::imread(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int)'
.build_release/lib/libcaffe.so: undefined reference to `vtable for cv::_InputArray'
collect2: error: ld returned 1 exit status
Makefile:635: recipe for target '.build_release/tools/convert_imageset.bin' failed
make: *** [.build_release/tools/convert_imageset.bin] Error 1

这个是提示opencv库找不到。按照我上面说的写好Makefile.config就不会有问题了。

成功make all:

wwh@wwh-Lenovo-YOGA-710-14IKB:~/Documents/caffe$ make all -j4
PROTOC src/caffe/proto/caffe.proto
CXX .build_release/src/caffe/proto/caffe.pb.cc
CXX src/caffe/solvers/nesterov_solver.cpp
CXX src/caffe/solvers/rmsprop_solver.cpp
CXX src/caffe/solvers/adagrad_solver.cpp
CXX src/caffe/solvers/adam_solver.cpp
CXX src/caffe/solvers/adadelta_solver.cpp
CXX src/caffe/solvers/sgd_solver.cpp
CXX src/caffe/blob.cpp
CXX src/caffe/common.cpp
CXX src/caffe/util/db_lmdb.cpp
CXX src/caffe/util/upgrade_proto.cpp
CXX src/caffe/util/benchmark.cpp
CXX src/caffe/util/im2col.cpp
CXX src/caffe/util/db.cpp
CXX src/caffe/util/db_leveldb.cpp
CXX src/caffe/util/hdf5.cpp
CXX src/caffe/util/blocking_queue.cpp
CXX src/caffe/util/cudnn.cpp
CXX src/caffe/util/math_functions.cpp
CXX src/caffe/util/signal_handler.cpp
CXX src/caffe/util/insert_splits.cpp
CXX src/caffe/util/io.cpp
CXX src/caffe/layers/tanh_layer.cpp
CXX src/caffe/layers/split_layer.cpp
CXX src/caffe/layers/spp_layer.cpp
CXX src/caffe/layers/window_data_layer.cpp
CXX src/caffe/layers/dropout_layer.cpp
CXX src/caffe/layers/prelu_layer.cpp
CXX src/caffe/layers/tile_layer.cpp
CXX src/caffe/layers/loss_layer.cpp
CXX src/caffe/layers/crop_layer.cpp
CXX src/caffe/layers/batch_reindex_layer.cpp
CXX src/caffe/layers/lstm_layer.cpp
CXX src/caffe/layers/hdf5_data_layer.cpp
CXX src/caffe/layers/cudnn_lcn_layer.cpp
CXX src/caffe/layers/scale_layer.cpp
CXX src/caffe/layers/cudnn_lrn_layer.cpp
CXX src/caffe/layers/swish_layer.cpp
CXX src/caffe/layers/softmax_loss_layer.cpp
CXX src/caffe/layers/cudnn_deconv_layer.cpp
CXX src/caffe/layers/hdf5_output_layer.cpp
CXX src/caffe/layers/absval_layer.cpp
CXX src/caffe/layers/flatten_layer.cpp
CXX src/caffe/layers/accuracy_layer.cpp
CXX src/caffe/layers/lrn_layer.cpp
CXX src/caffe/layers/exp_layer.cpp
CXX src/caffe/layers/filter_layer.cpp
CXX src/caffe/layers/euclidean_loss_layer.cpp
CXX src/caffe/layers/deconv_layer.cpp
CXX src/caffe/layers/base_data_layer.cpp
CXX src/caffe/layers/batch_norm_layer.cpp
CXX src/caffe/layers/memory_data_layer.cpp
CXX src/caffe/layers/base_conv_layer.cpp
CXX src/caffe/layers/embed_layer.cpp
CXX src/caffe/layers/cudnn_sigmoid_layer.cpp
CXX src/caffe/layers/pooling_layer.cpp
CXX src/caffe/layers/cudnn_tanh_layer.cpp
CXX src/caffe/layers/parameter_layer.cpp
CXX src/caffe/layers/data_layer.cpp
CXX src/caffe/layers/mvn_layer.cpp
CXX src/caffe/layers/input_layer.cpp
CXX src/caffe/layers/image_data_layer.cpp
CXX src/caffe/layers/eltwise_layer.cpp
CXX src/caffe/layers/hinge_loss_layer.cpp
CXX src/caffe/layers/bias_layer.cpp
CXX src/caffe/layers/power_layer.cpp
CXX src/caffe/layers/clip_layer.cpp
CXX src/caffe/layers/softmax_layer.cpp
CXX src/caffe/layers/relu_layer.cpp
CXX src/caffe/layers/im2col_layer.cpp
CXX src/caffe/layers/conv_layer.cpp
CXX src/caffe/layers/inner_product_layer.cpp
CXX src/caffe/layers/cudnn_conv_layer.cpp
CXX src/caffe/layers/argmax_layer.cpp
CXX src/caffe/layers/reshape_layer.cpp
CXX src/caffe/layers/log_layer.cpp
CXX src/caffe/layers/contrastive_loss_layer.cpp
CXX src/caffe/layers/cudnn_pooling_layer.cpp
CXX src/caffe/layers/bnll_layer.cpp
CXX src/caffe/layers/infogain_loss_layer.cpp
CXX src/caffe/layers/neuron_layer.cpp
CXX src/caffe/layers/cudnn_softmax_layer.cpp
CXX src/caffe/layers/multinomial_logistic_loss_layer.cpp
CXX src/caffe/layers/threshold_layer.cpp
CXX src/caffe/layers/silence_layer.cpp
CXX src/caffe/layers/sigmoid_layer.cpp
CXX src/caffe/layers/concat_layer.cpp
CXX src/caffe/layers/rnn_layer.cpp
CXX src/caffe/layers/slice_layer.cpp
CXX src/caffe/layers/dummy_data_layer.cpp
CXX src/caffe/layers/recurrent_layer.cpp
CXX src/caffe/layers/sigmoid_cross_entropy_loss_layer.cpp
CXX src/caffe/layers/reduction_layer.cpp
CXX src/caffe/layers/elu_layer.cpp
CXX src/caffe/layers/cudnn_relu_layer.cpp
CXX src/caffe/layers/lstm_unit_layer.cpp
CXX src/caffe/syncedmem.cpp
CXX src/caffe/layer_factory.cpp
CXX src/caffe/layer.cpp
CXX src/caffe/solver.cpp
CXX src/caffe/internal_thread.cpp
CXX src/caffe/net.cpp
CXX src/caffe/parallel.cpp
CXX src/caffe/data_transformer.cpp
CXX tools/extract_features.cpp
CXX tools/convert_imageset.cpp
CXX tools/upgrade_net_proto_binary.cpp
CXX tools/compute_image_mean.cpp
CXX tools/upgrade_solver_proto_text.cpp
CXX tools/caffe.cpp
CXX tools/upgrade_net_proto_text.cpp
CXX examples/cpp_classification/classification.cpp
CXX examples/cifar10/convert_cifar_data.cpp
CXX examples/siamese/convert_mnist_siamese_data.cpp
CXX examples/mnist/convert_mnist_data.cpp
AR -o .build_release/lib/libcaffe.a
LD -o .build_release/lib/libcaffe.so.1.0.0
CXX/LD -o .build_release/tools/extract_features.bin
CXX/LD -o .build_release/tools/convert_imageset.bin
CXX/LD -o .build_release/tools/upgrade_net_proto_binary.bin
CXX/LD -o .build_release/tools/compute_image_mean.bin
CXX/LD -o .build_release/tools/upgrade_solver_proto_text.bin
CXX/LD -o .build_release/tools/caffe.bin
CXX/LD -o .build_release/tools/upgrade_net_proto_text.bin
CXX/LD -o .build_release/examples/cpp_classification/classification.bin
CXX/LD -o .build_release/examples/cifar10/convert_cifar_data.bin
CXX/LD -o .build_release/examples/siamese/convert_mnist_siamese_data.bin
CXX/LD -o .build_release/examples/mnist/convert_mnist_data.bin

成功make test

wwh@wwh-Lenovo-YOGA-710-14IKB:~/Documents/caffe$ make test
CXX src/caffe/test/test_tile_layer.cpp
CXX src/caffe/test/test_rnn_layer.cpp
CXX src/caffe/test/test_flatten_layer.cpp
CXX src/caffe/test/test_db.cpp
CXX src/caffe/test/test_pooling_layer.cpp
CXX src/caffe/test/test_reduction_layer.cpp
CXX src/caffe/test/test_net.cpp
CXX src/caffe/test/test_euclidean_loss_layer.cpp
CXX src/caffe/test/test_data_transformer.cpp
CXX src/caffe/test/test_power_layer.cpp
CXX src/caffe/test/test_threshold_layer.cpp
CXX src/caffe/test/test_convolution_layer.cpp
CXX src/caffe/test/test_softmax_layer.cpp
CXX src/caffe/test/test_hdf5data_layer.cpp
CXX src/caffe/test/test_infogain_loss_layer.cpp
CXX src/caffe/test/test_common.cpp
CXX src/caffe/test/test_random_number_generator.cpp
CXX src/caffe/test/test_filter_layer.cpp
CXX src/caffe/test/test_dummy_data_layer.cpp
CXX src/caffe/test/test_softmax_with_loss_layer.cpp
CXX src/caffe/test/test_filler.cpp
CXX src/caffe/test/test_stochastic_pooling.cpp
CXX src/caffe/test/test_solver.cpp
CXX src/caffe/test/test_inner_product_layer.cpp
CXX src/caffe/test/test_mvn_layer.cpp
CXX src/caffe/test/test_hinge_loss_layer.cpp
CXX src/caffe/test/test_reshape_layer.cpp
CXX src/caffe/test/test_maxpool_dropout_layers.cpp
CXX src/caffe/test/test_layer_factory.cpp
CXX src/caffe/test/test_lrn_layer.cpp
CXX src/caffe/test/test_gradient_based_solver.cpp
CXX src/caffe/test/test_im2col_layer.cpp
CXX src/caffe/test/test_data_layer.cpp
CXX src/caffe/test/test_protobuf.cpp
CXX src/caffe/test/test_solver_factory.cpp
CXX src/caffe/test/test_split_layer.cpp
CXX src/caffe/test/test_lstm_layer.cpp
CXX src/caffe/test/test_multinomial_logistic_loss_layer.cpp
CXX src/caffe/test/test_sigmoid_cross_entropy_loss_layer.cpp
CXX src/caffe/test/test_concat_layer.cpp
CXX src/caffe/test/test_spp_layer.cpp
CXX src/caffe/test/test_platform.cpp
CXX src/caffe/test/test_math_functions.cpp
CXX src/caffe/test/test_internal_thread.cpp
CXX src/caffe/test/test_deconvolution_layer.cpp
CXX src/caffe/test/test_hdf5_output_layer.cpp
CXX src/caffe/test/test_bias_layer.cpp
CXX src/caffe/test/test_eltwise_layer.cpp
CXX src/caffe/test/test_slice_layer.cpp
CXX src/caffe/test/test_memory_data_layer.cpp
CXX src/caffe/test/test_accuracy_layer.cpp
CXX src/caffe/test/test_scale_layer.cpp
CXX src/caffe/test/test_contrastive_loss_layer.cpp
CXX src/caffe/test/test_batch_norm_layer.cpp
CXX src/caffe/test/test_argmax_layer.cpp
CXX src/caffe/test/test_benchmark.cpp
CXX src/caffe/test/test_tanh_layer.cpp
CXX src/caffe/test/test_embed_layer.cpp
CXX src/caffe/test/test_neuron_layer.cpp
CXX src/caffe/test/test_io.cpp
CXX src/caffe/test/test_crop_layer.cpp
CXX src/caffe/test/test_batch_reindex_layer.cpp
CXX src/caffe/test/test_upgrade_proto.cpp
CXX src/caffe/test/test_blob.cpp
CXX src/caffe/test/test_image_data_layer.cpp
CXX src/caffe/test/test_syncedmem.cpp
CXX src/caffe/test/test_util_blas.cpp
CXX src/gtest/gtest-all.cpp
CXX/LD -o .build_release/test/test_all.testbin src/caffe/test/test_caffe_main.cpp
LD .build_release/src/caffe/test/test_tile_layer.o
LD .build_release/src/caffe/test/test_rnn_layer.o
LD .build_release/src/caffe/test/test_flatten_layer.o
LD .build_release/src/caffe/test/test_db.o
LD .build_release/src/caffe/test/test_pooling_layer.o
LD .build_release/src/caffe/test/test_reduction_layer.o
LD .build_release/src/caffe/test/test_net.o
LD .build_release/src/caffe/test/test_euclidean_loss_layer.o
LD .build_release/src/caffe/test/test_data_transformer.o
LD .build_release/src/caffe/test/test_power_layer.o
LD .build_release/src/caffe/test/test_threshold_layer.o
LD .build_release/src/caffe/test/test_convolution_layer.o
LD .build_release/src/caffe/test/test_softmax_layer.o
LD .build_release/src/caffe/test/test_hdf5data_layer.o
LD .build_release/src/caffe/test/test_infogain_loss_layer.o
LD .build_release/src/caffe/test/test_common.o
LD .build_release/src/caffe/test/test_random_number_generator.o
LD .build_release/src/caffe/test/test_filter_layer.o
LD .build_release/src/caffe/test/test_dummy_data_layer.o
LD .build_release/src/caffe/test/test_softmax_with_loss_layer.o
LD .build_release/src/caffe/test/test_filler.o
LD .build_release/src/caffe/test/test_stochastic_pooling.o
LD .build_release/src/caffe/test/test_solver.o
LD .build_release/src/caffe/test/test_inner_product_layer.o
LD .build_release/src/caffe/test/test_mvn_layer.o
LD .build_release/src/caffe/test/test_hinge_loss_layer.o
LD .build_release/src/caffe/test/test_reshape_layer.o
LD .build_release/src/caffe/test/test_maxpool_dropout_layers.o
LD .build_release/src/caffe/test/test_layer_factory.o
LD .build_release/src/caffe/test/test_lrn_layer.o
LD .build_release/src/caffe/test/test_gradient_based_solver.o
LD .build_release/src/caffe/test/test_im2col_layer.o
LD .build_release/src/caffe/test/test_data_layer.o
LD .build_release/src/caffe/test/test_protobuf.o
LD .build_release/src/caffe/test/test_solver_factory.o
LD .build_release/src/caffe/test/test_split_layer.o
LD .build_release/src/caffe/test/test_lstm_layer.o
LD .build_release/src/caffe/test/test_multinomial_logistic_loss_layer.o
LD .build_release/src/caffe/test/test_sigmoid_cross_entropy_loss_layer.o
LD .build_release/src/caffe/test/test_concat_layer.o
LD .build_release/src/caffe/test/test_spp_layer.o
LD .build_release/src/caffe/test/test_platform.o
LD .build_release/src/caffe/test/test_math_functions.o
LD .build_release/src/caffe/test/test_internal_thread.o
LD .build_release/src/caffe/test/test_deconvolution_layer.o
LD .build_release/src/caffe/test/test_hdf5_output_layer.o
LD .build_release/src/caffe/test/test_bias_layer.o
LD .build_release/src/caffe/test/test_eltwise_layer.o
LD .build_release/src/caffe/test/test_slice_layer.o
LD .build_release/src/caffe/test/test_memory_data_layer.o
LD .build_release/src/caffe/test/test_accuracy_layer.o
LD .build_release/src/caffe/test/test_scale_layer.o
LD .build_release/src/caffe/test/test_contrastive_loss_layer.o
LD .build_release/src/caffe/test/test_batch_norm_layer.o
LD .build_release/src/caffe/test/test_argmax_layer.o
LD .build_release/src/caffe/test/test_benchmark.o
LD .build_release/src/caffe/test/test_tanh_layer.o
LD .build_release/src/caffe/test/test_embed_layer.o
LD .build_release/src/caffe/test/test_neuron_layer.o
LD .build_release/src/caffe/test/test_io.o
LD .build_release/src/caffe/test/test_crop_layer.o
LD .build_release/src/caffe/test/test_batch_reindex_layer.o
LD .build_release/src/caffe/test/test_upgrade_proto.o
LD .build_release/src/caffe/test/test_blob.o
LD .build_release/src/caffe/test/test_image_data_layer.o
LD .build_release/src/caffe/test/test_syncedmem.o
LD .build_release/src/caffe/test/test_util_blas.o

make runtest
现在你如果直接make runtest的话,是不行的,会报这样的错误:

wwh@wwh-Lenovo-YOGA-710-14IKB:~/Documents/caffe$ make runtest
.build_release/tools/caffe
.build_release/tools/caffe: error while loading shared libraries: libopencv_core.so.2.4: cannot open shared object file: No such file or directory
Makefile:542: recipe for target 'runtest' failed
make: *** [runtest] Error 127

因为我们编译的opencv没有安装在默认目录,所以调用的时候,caffe找不到相关的opencv库了,自然会报错。那么怎么办呢?
简单的方法是先加入动态链接库,
export LD_LIBRARY_PATH=/usr/opencv2_13/lib
sudo ldconfig
这样caffe就能去动态链接库的目录里面寻找opencv啦。但是这样的不好处是,你每次运行前,都得export一下。毕竟这种方式的生命周期比较短,关掉终端,那这个动态链接库就消失了。如果想永久加入的话,自己去查一下好了。
然后make runtest,成功啦!

wwh@wwh-Lenovo-YOGA-710-14IKB:~/Documents/caffe$ make runtest
.build_release/tools/caffe
caffe: command line brew
usage: caffe <command> <args>

commands:
  train           train or finetune a model
  test            score a model
  device_query    show GPU diagnostic information
  time            benchmark model execution time

  Flags from tools/caffe.cpp:
    -gpu (Optional; run in GPU mode on given device IDs separated by ','.Use
      '-gpu all' to run on all available GPUs. The effective training batch
      size is multiplied by the number of devices.) type: string default: ""
    -iterations (The number of iterations to run.) type: int32 default: 50
    -level (Optional; network level.) type: int32 default: 0
    -model (The model definition protocol buffer text file.) type: string
      default: ""
    -phase (Optional; network phase (TRAIN or TEST). Only used for 'time'.)
      type: string default: ""
    -sighup_effect (Optional; action to take when a SIGHUP signal is received:
      snapshot, stop or none.) type: string default: "snapshot"
    -sigint_effect (Optional; action to take when a SIGINT signal is received:
      snapshot, stop or none.) type: string default: "stop"
    -snapshot (Optional; the snapshot solver state to resume training.)
      type: string default: ""
    -solver (The solver definition protocol buffer text file.) type: string
      default: ""
    -stage (Optional; network stages (not to be confused with phase), separated
      by ','.) type: string default: ""
    -weights (Optional; the pretrained weights to initialize finetuning,
      separated by ','. Cannot be set simultaneously with snapshot.)
      type: string default: ""
.build_release/test/test_all.testbin 0 --gtest_shuffle --gtest_filter="-*GPU*"
Note: Google Test filter = -*GPU*
Note: Randomizing tests' orders with a seed of 21118 .
[==========] Running 1162 tests from 152 test cases.
[----------] Global test environment set-up.
[----------] 4 tests from ConstantFillerTest/0, where TypeParam = float
[ RUN      ] ConstantFillerTest/0.TestFill5D
[       OK ] ConstantFillerTest/0.TestFill5D (0 ms)
[ RUN      ] ConstantFillerTest/0.TestFill
[       OK ] ConstantFillerTest/0.TestFill (0 ms)
[ RUN      ] ConstantFillerTest/0.TestFill1D
[       OK ] ConstantFillerTest/0.TestFill1D (0 ms)
[ RUN      ] ConstantFillerTest/0.TestFill2D
[       OK ] ConstantFillerTest/0.TestFill2D (0 ms)
[----------] 4 tests from ConstantFillerTest/0 (0 ms total)
******************中间省略****************************************
[----------] 10 tests from PowerLayerTest/0, where TypeParam = caffe::CPUDevice<float>
[ RUN      ] PowerLayerTest/0.TestPowerOneGradient
[       OK ] PowerLayerTest/0.TestPowerOneGradient (1 ms)
[ RUN      ] PowerLayerTest/0.TestPowerGradientShiftZero
[       OK ] PowerLayerTest/0.TestPowerGradientShiftZero (1 ms)
[ RUN      ] PowerLayerTest/0.TestPowerZero
[       OK ] PowerLayerTest/0.TestPowerZero (0 ms)
[ RUN      ] PowerLayerTest/0.TestPowerTwo
[       OK ] PowerLayerTest/0.TestPowerTwo (0 ms)
[ RUN      ] PowerLayerTest/0.TestPower
[       OK ] PowerLayerTest/0.TestPower (0 ms)
[ RUN      ] PowerLayerTest/0.TestPowerTwoScaleHalfGradient
[       OK ] PowerLayerTest/0.TestPowerTwoScaleHalfGradient (1 ms)
[ RUN      ] PowerLayerTest/0.TestPowerTwoGradient
[       OK ] PowerLayerTest/0.TestPowerTwoGradient (2 ms)
[ RUN      ] PowerLayerTest/0.TestPowerGradient
[       OK ] PowerLayerTest/0.TestPowerGradient (1 ms)
[ RUN      ] PowerLayerTest/0.TestPowerZeroGradient
[       OK ] PowerLayerTest/0.TestPowerZeroGradient (1 ms)
[ RUN      ] PowerLayerTest/0.TestPowerOne
[       OK ] PowerLayerTest/0.TestPowerOne (0 ms)
[----------] 10 tests from PowerLayerTest/0 (8 ms total)

[----------] 4 tests from SoftmaxWithLossLayerTest/1, where TypeParam = caffe::CPUDevice<double>
[ RUN      ] SoftmaxWithLossLayerTest/1.TestGradient
[       OK ] SoftmaxWithLossLayerTest/1.TestGradient (6 ms)
[ RUN      ] SoftmaxWithLossLayerTest/1.TestForwardIgnoreLabel
[       OK ] SoftmaxWithLossLayerTest/1.TestForwardIgnoreLabel (0 ms)
[ RUN      ] SoftmaxWithLossLayerTest/1.TestGradientIgnoreLabel
[       OK ] SoftmaxWithLossLayerTest/1.TestGradientIgnoreLabel (8 ms)
[ RUN      ] SoftmaxWithLossLayerTest/1.TestGradientUnnormalized
[       OK ] SoftmaxWithLossLayerTest/1.TestGradientUnnormalized (6 ms)
[----------] 4 tests from SoftmaxWithLossLayerTest/1 (20 ms total)

[----------] Global test environment tear-down
[==========] 1162 tests from 152 test cases ran. (34731 ms total)
[  PASSED  ] 1162 tests.

注意,如果只是export LD_LIBRARY_PAYH的话,那么你每次运行caffe模型之前都得export一下。或者将这个写入CMakeLists.txt当中,当然,这是后话了,你懂得环境变量的知识自然懂。

猜你喜欢

转载自blog.csdn.net/m0_38116269/article/details/88919184
今日推荐