Ubuntu 18.04 Caffe-CPU 一键安装
CPU的一条命令安装:
sudo apt install caffe-cpu
GPU的一条命令安装:
sudo apt install caffe-cuda
一条命令安装依赖:
sudo apt build-dep caffe-cpu # dependencies for CPU-only version
sudo apt build-dep caffe-cuda # dependencies for CUDA version
然后开启terminal,进入python,import caffe,如果没有报错,证明caffe环境配置成功。
那么caffe究竟被安装到什么路径下呢,其实安装在了 /usr/bin 路径下
Ubuntu 18.04 Caffe-CPU 命令行安装
安装教程: https://www.cnblogs.com/acgoto/p/11570188.html
(自认为是最详细的版本)
踩坑:
1. Makefile:635: recipe for target ‘.build_release/tools/compute_image_mean.bin’ failed
转载链接:https://blog.csdn.net/u011037837/article/details/78439377
.build_release/lib/libcaffe.so:对‘cv::_OutputArray::_OutputArray(cv::Mat&)’未定义的引用
.build_release/lib/libcaffe.so:对‘cv::_InputArray::_InputArray(cv::Mat const&)’未定义的引用
.build_release/lib/libcaffe.so:对‘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
解决办法:Makefile.config里的
#USE_PKG_CONFIG :=
这一行前面的#给去掉,然后在他下一行添加
LIBRARIES += glog gflags protobuf leveldb snappy \
lmdb boost_system hdf5_hl hdf5 m \
opencv_core opencv_highgui opencv_imgproc opencv_imgcodecs
2. caffe 编译出现protobuf
PROTOC src/caffe/proto/caffe.proto
CXX .build_release/src/caffe/proto/caffe.pb.cc
In file included from .build_release/src/caffe/proto/caffe.pb.cc:4:0:
.build_release/src/caffe/proto/caffe.pb.h:10:10: fatal error: google/protobuf/port_def.inc: 没有那个文件或目录
#include <google/protobuf/port_def.inc>
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
Makefile:570: recipe for target '.build_release/src/caffe/proto/caffe.pb.o' failed
make: *** [.build_release/src/caffe/proto/caffe.pb.o] Error 1
环境里安装过 protobuf,之前的caffe编译也成功了。这次在出现这个问题时,怀疑是没有找到对应的protobuf。
解决方法: 参考链接
可以在Makefile文件中直接指定protoc路径
命令 whereis protoc 可以查看哪些路径下安装了protoc
命令which protoc 可以查看默认选用protoc的路径
命令 protoc --version 可以查看当前protoc版本
指定protoc的版本可以在 Makefile文件内修改
在Makefile 中修改这两句:
$(Q)protoc --proto_path=$(PROTO_SRC_DIR) --cpp_out=$(PROTO_BUILD_DIR) $<
$(Q)protoc --proto_path=$(PROTO_SRC_DIR) --python_out=$(PY_PROTO_BUILD_DIR) $<
为
$(Q)/usr/bin/protoc --proto_path=$(PROTO_SRC_DIR) --cpp_out=$(PROTO_BUILD_DIR) $<
$(Q)/usr/bin/protoc --proto_path=$(PROTO_SRC_DIR) --python_out=$(PY_PROTO_BUILD_DIR) $<
即把开头的"protoc"补全路径即可 (/usr/bin/protoc即为自己向指定给的版本路径)
注:这种修改不会影响系统默认的protoc版本,只会在caffe编译的时候调用相应的proto版本
参考文献
- https://www.cnblogs.com/juluwangshier/p/12364519.html
- https://blog.csdn.net/sinat_38439143/article/details/97244296