Caffe + CUDA8.0 + CuDNNv5.1 + OpenCV3.1 + Ubuntu14.04 配置参考文献
---- Wang Xiao AnHui University CVPR Group 2017-05-27
Warning: Please make sure the cuda is installed correctly, before you reboot your PC, or you may stucked and can not open your system.
Check in your terminal: nvidia-smi
If it shown you the following image, it means you have successfully installed cuda and you can reboot your PC safely.
wangxiao@AHU:~$ nvidia-smi
Sun Jul 24 13:53:05 2016
+------------------------------------------------------+
| NVIDIA-SMI 352.63 Driver Version: 352.63 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
|===============================+======================+======================|
| 0 GeForce GTX 960M Off | 0000:01:00.0 Off | N/A |
| N/A 46C P8 N/A / N/A | 204MiB / 2047MiB | 0% Default |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Processes: GPU Memory |
| GPU PID Type Process name Usage |
|=============================================================================|
| 0 1198 G /usr/bin/X 159MiB |
| 0 2025 G compiz 37MiB |
+-----------------------------------------------------------------------------+
wangxiao@AHU:~$
Install CUDA until this appeared in your screen !
Q1: Some times, it warning you that your Nvidia-driver can not communitcate with your GPU, what can you do ?
A1: Well, the only thing you could do is install your cuda in the right way, and reboot your PC. It will be OK.
1. 首先安装 cuda :
sudo apt-get update
sudo dpkg -i cuda-repo-<distro>_<version>_<architecture>.deb
sudo apt-get install cuda
2. 安装基本依赖项:
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 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 python-skimage ipython python-pil python-h5py ipython python-gflags python-yaml
sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev
3. 设置环境变量:
export PATH=/usr/local/cuda-8.0/bin:$PATH export LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64:$LD_LIBRARY_PATH
也可以在 /etc/profile中进行编辑, 在最后加入:
exportPATH=/usr/local/cuda-8.0/bin:$PATH exportLD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64:$LD_LIBRARY_PATH
4. 设置CUDA-7.5 SAMPLES:
cuda-install-samples-8.0.sh ~ cd ~/NVIDIA_CUDA-8.0_Samples cd 1_Utilities/deviceQuery make
进入NVIDIA_CUDA-8.0_Samples 会编译很长时间,耐心等待。
执行测试代码: deviceQuery,如果成功结尾会是Result = PASS
此处,可能因为gcc或者g++版本问题,导致无法编译。重新安装一个较老的版本gcc-4.7,然后添加对应的软连接即可编译:
sudo apt-get install -y gcc-4.7sudo apt-get install -y g++-4.7 cd /usr/binsudo rm gcc sudo ln -s gcc-4.7 gcc sudo rm g++ sudo ln -s g++-4.7 g++ #### check it's success or not ? ls -al gcc g++ gcc --versiong++ --version
5. 安装BLAS:
sudo apt-get install libatlas-base-dev
6. 安装其他依赖项:
sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev
7. 安装opencv:
#[compiler] sudo apt-get install build-essential #[required] sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev #[optional] sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev
8. 安装cudnn:
解压cudnn的包(官网得申请,用网盘搜索能找到最新的),有include和lib64,里面文件复制到对应/usr/local/cuda/对应文件夹里
#进到对应文件夹 sudo cp cudnn.h /usr/local/cuda/include/ #进到对应文件夹 sudo cp lib* /usr/local/cuda/lib64/ #进行一次 sudo ldconfig -v
9. 安装caffe:
Caffe git clone https://github.com/BVLC/caffe.git cp Makefile.config.example Makefile.config 修改Makefile.config,去掉cudnn的注释,其他的在当前应用场景可不变。 make all make test make runtest
10. 安装matlab:
Many Tutorials online, we just ignore this part here.
11. can not find "hdf5.h":
# 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
12. 编译caffe的时候,提示:
CXX examples/cifar10/convert_cifar_data.cpp
CXX examples/siamese/convert_mnist_siamese_data.cpp
AR -o .build_release/lib/libcaffe.a
LD -o .build_release/lib/libcaffe.so.1.0.0-rc3
/usr/bin/ld: cannot find -lhdf5_hl
/usr/bin/ld: cannot find -lhdf5
collect2: error: ld returned 1 exit status
Makefile:563: recipe for target '.build_release/lib/libcaffe.so.1.0.0-rc3' failed
make: *** [.build_release/lib/libcaffe.so.1.0.0-rc3] Error 1
wangxiao@GTX980:~/Downloads/caffe-master$
-------------------
怎么破?
do as issue 12. Change the Makefile.config:
# 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
13. 安装 MKL:
MKL与CUDA的环境设置 1. 新建intel_mkl.conf, 并编辑之: $ sudo gedit /etc/ld.so.conf.d/intel_mkl.conf /opt/intel/lib/intel64 /opt/intel/mkl/lib/intel64 2. 新建cuda.conf,并编辑之: $ sudo gedit /etc/ld.so.conf.d/cuda.conf /usr/local/cuda/lib64 /lib 3. 完成lib文件的链接操作,执行: $ sudo ldconfig –v
15. 可能需要添加的东西:
配置Makefile文件(实现对OpenCV3.x的支持) 查找“Derive include and lib directories”一节,修改“LIBRARIES +=”的最后一行,增加opencv_imgcodecs opencv_core opencv_highgui opencv_imgproc opencv_imgcodecs
16. 运行caffe案例:
1. 数据预处理 $ sudo shdata/mnist/get_mnist.sh 2. 重建lmdb文件。Caffe支持三种数据格式输入网络,包括Image(.jpg, .png等),leveldb,lmdb,根据自己需要选择不同输入吧。 $sudo shexamples/mnist/create_mnist.sh 生成mnist-train-lmdb 和 mnist-train-lmdb文件夹,这里包含了lmdb格式的数据集 注:我执行此命令的时候报告说not in gzformat,后来发现是联网下载的mnist数据有问题,然后我就去网上了下载了mnist数据集,后在ubuntu上手动解压的,再执行后面的命令。 3. 训练mnist $ sudo shexamples/mnist/train_lenet.sh
17. when compile caffe:
1 wangxiao@GTX980:~/Downloads/35attribute_caffe_master_$ make -j8 2 CXX/LD -o .build_release/tools/upgrade_net_proto_binary.bin 3 CXX/LD -o .build_release/tools/upgrade_solver_proto_text.bin 4 CXX/LD -o .build_release/tools/compute_image_mean.bin 5 CXX/LD -o .build_release/tools/caffe.bin 6 CXX/LD -o .build_release/tools/convert_imageset.bin 7 CXX/LD -o .build_release/tools/upgrade_net_proto_text.bin 8 CXX/LD -o .build_release/examples/mnist/convert_mnist_data.bin 9 CXX/LD -o .build_release/tools/extract_features.bin 10 .build_release/lib/libcaffe.so: undefined reference to `H5LTget_dataset_ndims' 11 .build_release/lib/libcaffe.so: undefined reference to `H5Fcreate' 12 .build_release/lib/libcaffe.so: undefined reference to `H5check_version' 13 .build_release/lib/libcaffe.so: undefined reference to `H5Lget_name_by_idx' 14 .build_release/lib/libcaffe.so: undefined reference to `google::base::CheckOpMessageBuilder::NewString()' 15 .build_release/lib/libcaffe.so: undefined reference to `H5LTmake_dataset_double' 16 .build_release/lib/libcaffe.so: undefined reference to `H5LTmake_dataset_int' 17 .build_release/lib/libcaffe.so: undefined reference to `H5LTread_dataset_float' 18 .build_release/lib/libcaffe.so: undefined reference to `H5LTmake_dataset_float' 19 .build_release/lib/libcaffe.so: undefined reference to `H5Gget_info' 20 .build_release/lib/libcaffe.so: undefined reference to `H5Gopen2' 21 .build_release/lib/libcaffe.so: undefined reference to `google::protobuf::internal::NameOfEnum(google::protobuf::EnumDescriptor const*, int)' 22 .build_release/lib/libcaffe.so: undefined reference to `H5LTread_dataset_double' 23 .build_release/lib/libcaffe.so: undefined reference to `H5LTmake_dataset_string' 24 .build_release/lib/libcaffe.so: undefined reference to `H5LTread_dataset_int' 25 .build_release/lib/libcaffe.so: undefined reference to `H5Fclose' 26 .build_release/lib/libcaffe.so: undefined reference to `H5Gclose' 27 .build_release/lib/libcaffe.so: undefined reference to `H5LTfind_dataset' 28 .build_release/lib/libcaffe.so: undefined reference to `caffe::BlockingQueue<caffe::Batch<double>*>::pop(std::string const&)' 29 .build_release/lib/libcaffe.so: undefined reference to `H5Lexists' 30 .build_release/lib/libcaffe.so: undefined reference to `H5Gcreate2' 31 .build_release/lib/libcaffe.so: undefined reference to `H5LTget_dataset_info' 32 .build_release/lib/libcaffe.so: undefined reference to `H5LTread_dataset_string' 33 .build_release/lib/libcaffe.so: undefined reference to `caffe::BlockingQueue<caffe::Batch<float>*>::pop(std::string const&)' 34 .build_release/lib/libcaffe.so: undefined reference to `H5Fopen' 35 collect2: error: ld returned 1 exit status 36 Makefile:616: recipe for target '.build_release/tools/caffe.bin' failed 37 make: *** [.build_release/tools/caffe.bin] Error 1 38 make: *** Waiting for unfinished jobs.... 39 .build_release/lib/libcaffe.so: undefined reference to `H5LTget_dataset_ndims' 40 .build_release/lib/libcaffe.so: undefined reference to `H5Fcreate' 41 .build_release/lib/libcaffe.so: undefined reference to `H5check_version' 42 .build_release/lib/libcaffe.so: undefined reference to `H5Lget_name_by_idx' 43 .build_release/lib/libcaffe.so: undefined reference to `google::base::CheckOpMessageBuilder::NewString()' 44 .build_release/lib/libcaffe.so: undefined reference to `H5LTmake_dataset_double' 45 .build_release/lib/libcaffe.so: undefined reference to `H5LTmake_dataset_int' 46 .build_release/lib/libcaffe.so: undefined reference to `H5LTread_dataset_float' 47 .build_release/lib/libcaffe.so: undefined reference to `H5LTmake_dataset_float' 48 .build_release/lib/libcaffe.so: undefined reference to `H5Gget_info' 49 .build_release/lib/libcaffe.so: undefined reference to `H5Gopen2' 50 .build_release/lib/libcaffe.so: undefined reference to `google::protobuf::internal::NameOfEnum(google::protobuf::EnumDescriptor const*, int)' 51 .build_release/lib/libcaffe.so: undefined reference to `H5LTread_dataset_double' 52 .build_release/lib/libcaffe.so: undefined reference to `H5LTmake_dataset_string' 53 .build_release/lib/libcaffe.so: undefined reference to `H5LTread_dataset_int' 54 .build_release/lib/libcaffe.so: undefined reference to `H5Fclose' 55 .build_release/lib/libcaffe.so: undefined reference to `H5Gclose' 56 .build_release/lib/libcaffe.so: undefined reference to `H5LTfind_dataset' 57 .build_release/lib/libcaffe.so: undefined reference to `caffe::BlockingQueue<caffe::Batch<double>*>::pop(std::string const&)' 58 .build_release/lib/libcaffe.so: undefined reference to `H5Lexists' 59 .build_release/lib/libcaffe.so: undefined reference to `H5Gcreate2' 60 .build_release/lib/libcaffe.so: undefined reference to `H5LTget_dataset_info' 61 .build_release/lib/libcaffe.so: undefined reference to `H5LTread_dataset_string' 62 .build_release/lib/libcaffe.so: undefined reference to `caffe::BlockingQueue<caffe::Batch<float>*>::pop(std::string const&)' 63 .build_release/lib/libcaffe.so: undefined reference to `H5Fopen' 64 collect2: error: ld returned 1 exit status 65 Makefile:616: recipe for target '.build_release/tools/upgrade_net_proto_text.bin' failed 66 make: *** [.build_release/tools/upgrade_net_proto_text.bin] Error 1 67 .build_release/lib/libcaffe.so: undefined reference to `H5LTget_dataset_ndims' 68 .build_release/lib/libcaffe.so: undefined reference to `H5Fcreate' 69 .build_release/lib/libcaffe.so: undefined reference to `H5check_version' 70 .build_release/lib/libcaffe.so: undefined reference to `H5Lget_name_by_idx' 71 .build_release/lib/libcaffe.so: undefined reference to `google::base::CheckOpMessageBuilder::NewString()' 72 .build_release/lib/libcaffe.so: undefined reference to `H5LTmake_dataset_double' 73 .build_release/lib/libcaffe.so: undefined reference to `H5LTmake_dataset_int' 74 .build_release/lib/libcaffe.so: undefined reference to `H5LTread_dataset_float' 75 .build_release/lib/libcaffe.so: undefined reference to `H5LTmake_dataset_float' 76 .build_release/lib/libcaffe.so: undefined reference to `H5Gget_info' 77 .build_release/lib/libcaffe.so: undefined reference to `H5Gopen2' 78 .build_release/lib/libcaffe.so: undefined reference to `google::protobuf::internal::NameOfEnum(google::protobuf::EnumDescriptor const*, int)' 79 .build_release/lib/libcaffe.so: undefined reference to `H5LTread_dataset_double' 80 .build_release/lib/libcaffe.so: undefined reference to `H5LTmake_dataset_string' 81 .build_release/lib/libcaffe.so: undefined reference to `H5LTread_dataset_int' 82 .build_release/lib/libcaffe.so: undefined reference to `H5Fclose' 83 .build_release/lib/libcaffe.so: undefined reference to `H5Gclose' 84 .build_release/lib/libcaffe.so: undefined reference to `H5LTfind_dataset' 85 .build_release/lib/libcaffe.so: undefined reference to `caffe::BlockingQueue<caffe::Batch<double>*>::pop(std::string const&)' 86 .build_release/lib/libcaffe.so: undefined reference to `H5Lexists' 87 .build_release/lib/libcaffe.so: undefined reference to `H5Gcreate2' 88 .build_release/lib/libcaffe.so: undefined reference to `H5LTget_dataset_info' 89 .build_release/lib/libcaffe.so: undefined reference to `H5LTread_dataset_string' 90 .build_release/lib/libcaffe.so: undefined reference to `caffe::BlockingQueue<caffe::Batch<float>*>::pop(std::string const&)' 91 .build_release/lib/libcaffe.so: undefined reference to `H5Fopen' 92 collect2: error: ld returned 1 exit status 93 Makefile:616: recipe for target '.build_release/tools/upgrade_solver_proto_text.bin' failed 94 make: *** [.build_release/tools/upgrade_solver_proto_text.bin] Error 1 95 .build_release/lib/libcaffe.so: undefined reference to `H5LTget_dataset_ndims' 96 .build_release/lib/libcaffe.so: undefined reference to `H5Fcreate' 97 .build_release/lib/libcaffe.so: undefined reference to `H5check_version' 98 .build_release/lib/libcaffe.so: undefined reference to `H5Lget_name_by_idx' 99 .build_release/lib/libcaffe.so: undefined reference to `google::base::CheckOpMessageBuilder::NewString()' 100 .build_release/lib/libcaffe.so: undefined reference to `H5LTmake_dataset_double' 101 .build_release/lib/libcaffe.so: undefined reference to `H5LTmake_dataset_int' 102 .build_release/lib/libcaffe.so: undefined reference to `H5LTread_dataset_float' 103 .build_release/lib/libcaffe.so: undefined reference to `H5LTmake_dataset_float' 104 .build_release/lib/libcaffe.so: undefined reference to `H5Gget_info' 105 .build_release/lib/libcaffe.so: undefined reference to `H5Gopen2' 106 .build_release/lib/libcaffe.so: undefined reference to `google::protobuf::internal::NameOfEnum(google::protobuf::EnumDescriptor const*, int)' 107 .build_release/lib/libcaffe.so: undefined reference to `H5LTread_dataset_double' 108 .build_release/lib/libcaffe.so: undefined reference to `H5LTmake_dataset_string' 109 .build_release/lib/libcaffe.so: undefined reference to `H5LTread_dataset_int' 110 .build_release/lib/libcaffe.so: undefined reference to `H5Fclose' 111 .build_release/lib/libcaffe.so: undefined reference to `H5Gclose' 112 .build_release/lib/libcaffe.so: undefined reference to `H5LTfind_dataset' 113 .build_release/lib/libcaffe.so: undefined reference to `caffe::BlockingQueue<caffe::Batch<double>*>::pop(std::string const&)' 114 .build_release/lib/libcaffe.so: undefined reference to `H5Lexists' 115 .build_release/lib/libcaffe.so: undefined reference to `H5Gcreate2' 116 .build_release/lib/libcaffe.so: undefined reference to `H5LTget_dataset_info' 117 .build_release/lib/libcaffe.so: undefined reference to `H5LTread_dataset_string' 118 .build_release/lib/libcaffe.so: undefined reference to `caffe::BlockingQueue<caffe::Batch<float>*>::pop(std::string const&)' 119 .build_release/lib/libcaffe.so: undefined reference to `H5Fopen' 120 collect2: error: ld returned 1 exit status 121 Makefile:616: recipe for target '.build_release/tools/convert_imageset.bin' failed 122 make: *** [.build_release/tools/convert_imageset.bin] Error 1 123 .build_release/lib/libcaffe.so: undefined reference to `H5LTget_dataset_ndims' 124 .build_release/lib/libcaffe.so: undefined reference to `H5Fcreate' 125 .build_release/lib/libcaffe.so: undefined reference to `H5check_version' 126 .build_release/lib/libcaffe.so: undefined reference to `H5Lget_name_by_idx' 127 .build_release/lib/libcaffe.so: undefined reference to `google::base::CheckOpMessageBuilder::NewString()' 128 .build_release/lib/libcaffe.so: undefined reference to `H5LTmake_dataset_double' 129 .build_release/lib/libcaffe.so: undefined reference to `H5LTmake_dataset_int' 130 .build_release/lib/libcaffe.so: undefined reference to `H5LTread_dataset_float' 131 .build_release/lib/libcaffe.so: undefined reference to `H5LTmake_dataset_float' 132 .build_release/lib/libcaffe.so: undefined reference to `H5Gget_info' 133 .build_release/lib/libcaffe.so: undefined reference to `H5Gopen2' 134 .build_release/lib/libcaffe.so: undefined reference to `google::protobuf::internal::NameOfEnum(google::protobuf::EnumDescriptor const*, int)' 135 .build_release/lib/libcaffe.so: undefined reference to `H5LTread_dataset_double' 136 .build_release/lib/libcaffe.so: undefined reference to `H5LTmake_dataset_string' 137 .build_release/lib/libcaffe.so: undefined reference to `H5LTread_dataset_int' 138 .build_release/lib/libcaffe.so: undefined reference to `H5Fclose' 139 .build_release/lib/libcaffe.so: undefined reference to `H5Gclose' 140 .build_release/lib/libcaffe.so: undefined reference to `H5LTfind_dataset' 141 .build_release/lib/libcaffe.so: undefined reference to `caffe::BlockingQueue<caffe::Batch<double>*>::pop(std::string const&)' 142 .build_release/lib/libcaffe.so: undefined reference to `H5Lexists' 143 .build_release/lib/libcaffe.so: undefined reference to `H5Gcreate2' 144 .build_release/lib/libcaffe.so: undefined reference to `H5LTget_dataset_info' 145 .build_release/lib/libcaffe.so: undefined reference to `H5LTread_dataset_string' 146 .build_release/lib/libcaffe.so: undefined reference to `caffe::BlockingQueue<caffe::Batch<float>*>::pop(std::string const&)' 147 .build_release/lib/libcaffe.so: undefined reference to `H5Fopen' 148 collect2: error: ld returned 1 exit status 149 Makefile:621: recipe for target '.build_release/examples/mnist/convert_mnist_data.bin' failed 150 make: *** [.build_release/examples/mnist/convert_mnist_data.bin] Error 1 151 .build_release/lib/libcaffe.so: undefined reference to `H5LTget_dataset_ndims' 152 .build_release/lib/libcaffe.so: undefined reference to `H5Fcreate' 153 .build_release/lib/libcaffe.so: undefined reference to `H5check_version' 154 .build_release/lib/libcaffe.so: undefined reference to `H5Lget_name_by_idx' 155 .build_release/lib/libcaffe.so: undefined reference to `google::base::CheckOpMessageBuilder::NewString()' 156 .build_release/lib/libcaffe.so: undefined reference to `H5LTmake_dataset_double' 157 .build_release/lib/libcaffe.so: undefined reference to `H5LTmake_dataset_int' 158 .build_release/lib/libcaffe.so: undefined reference to `H5LTread_dataset_float' 159 .build_release/lib/libcaffe.so: undefined reference to `H5LTmake_dataset_float' 160 .build_release/lib/libcaffe.so: undefined reference to `H5Gget_info' 161 .build_release/lib/libcaffe.so: undefined reference to `H5Gopen2' 162 .build_release/lib/libcaffe.so: undefined reference to `google::protobuf::internal::NameOfEnum(google::protobuf::EnumDescriptor const*, int)' 163 .build_release/lib/libcaffe.so: undefined reference to `H5LTread_dataset_double' 164 .build_release/lib/libcaffe.so: undefined reference to `H5LTmake_dataset_string' 165 .build_release/lib/libcaffe.so: undefined reference to `H5LTread_dataset_int' 166 .build_release/lib/libcaffe.so: undefined reference to `H5Fclose' 167 .build_release/lib/libcaffe.so: undefined reference to `H5Gclose' 168 .build_release/lib/libcaffe.so: undefined reference to `H5LTfind_dataset' 169 .build_release/lib/libcaffe.so: undefined reference to `caffe::BlockingQueue<caffe::Batch<double>*>::pop(std::string const&)' 170 .build_release/lib/libcaffe.so: undefined reference to `H5Lexists' 171 .build_release/lib/libcaffe.so: undefined reference to `H5Gcreate2' 172 .build_release/lib/libcaffe.so: undefined reference to `H5LTget_dataset_info' 173 .build_release/lib/libcaffe.so: undefined reference to `H5LTread_dataset_string' 174 .build_release/lib/libcaffe.so: undefined reference to `caffe::BlockingQueue<caffe::Batch<float>*>::pop(std::string const&)' 175 .build_release/lib/libcaffe.so: undefined reference to `H5Fopen' 176 collect2: error: ld returned 1 exit status 177 Makefile:616: recipe for target '.build_release/tools/extract_features.bin' failed 178 make: *** [.build_release/tools/extract_features.bin] Error 1 179 .build_release/lib/libcaffe.so: undefined reference to `H5LTget_dataset_ndims' 180 .build_release/lib/libcaffe.so: undefined reference to `H5Fcreate' 181 .build_release/lib/libcaffe.so: undefined reference to `H5check_version' 182 .build_release/lib/libcaffe.so: undefined reference to `H5Lget_name_by_idx' 183 .build_release/lib/libcaffe.so: undefined reference to `google::base::CheckOpMessageBuilder::NewString()' 184 .build_release/lib/libcaffe.so: undefined reference to `H5LTmake_dataset_double' 185 .build_release/lib/libcaffe.so: undefined reference to `H5LTmake_dataset_int' 186 .build_release/lib/libcaffe.so: undefined reference to `H5LTread_dataset_float' 187 .build_release/lib/libcaffe.so: undefined reference to `H5LTmake_dataset_float' 188 .build_release/lib/libcaffe.so: undefined reference to `H5Gget_info' 189 .build_release/lib/libcaffe.so: undefined reference to `H5Gopen2' 190 .build_release/lib/libcaffe.so: undefined reference to `google::protobuf::internal::NameOfEnum(google::protobuf::EnumDescriptor const*, int)' 191 .build_release/lib/libcaffe.so: undefined reference to `H5LTread_dataset_double' 192 .build_release/lib/libcaffe.so: undefined reference to `H5LTmake_dataset_string' 193 .build_release/lib/libcaffe.so: undefined reference to `H5LTread_dataset_int' 194 .build_release/lib/libcaffe.so: undefined reference to `H5Fclose' 195 .build_release/lib/libcaffe.so: undefined reference to `H5Gclose' 196 .build_release/lib/libcaffe.so: undefined reference to `H5LTfind_dataset' 197 .build_release/lib/libcaffe.so: undefined reference to `caffe::BlockingQueue<caffe::Batch<double>*>::pop(std::string const&)' 198 .build_release/lib/libcaffe.so: undefined reference to `H5Lexists' 199 .build_release/lib/libcaffe.so: undefined reference to `H5Gcreate2' 200 .build_release/lib/libcaffe.so: undefined reference to `H5LTget_dataset_info' 201 .build_release/lib/libcaffe.so: undefined reference to `H5LTread_dataset_string' 202 .build_release/lib/libcaffe.so: undefined reference to `caffe::BlockingQueue<caffe::Batch<float>*>::pop(std::string const&)' 203 .build_release/lib/libcaffe.so: undefined reference to `H5Fopen' 204 collect2: error: ld returned 1 exit status 205 Makefile:616: recipe for target '.build_release/tools/compute_image_mean.bin' failed 206 make: *** [.build_release/tools/compute_image_mean.bin] Error 1 207 .build_release/lib/libcaffe.so: undefined reference to `H5LTget_dataset_ndims' 208 .build_release/lib/libcaffe.so: undefined reference to `H5Fcreate' 209 .build_release/lib/libcaffe.so: undefined reference to `H5check_version' 210 .build_release/lib/libcaffe.so: undefined reference to `H5Lget_name_by_idx' 211 .build_release/lib/libcaffe.so: undefined reference to `google::base::CheckOpMessageBuilder::NewString()' 212 .build_release/lib/libcaffe.so: undefined reference to `H5LTmake_dataset_double' 213 .build_release/lib/libcaffe.so: undefined reference to `H5LTmake_dataset_int' 214 .build_release/lib/libcaffe.so: undefined reference to `H5LTread_dataset_float' 215 .build_release/lib/libcaffe.so: undefined reference to `H5LTmake_dataset_float' 216 .build_release/lib/libcaffe.so: undefined reference to `H5Gget_info' 217 .build_release/lib/libcaffe.so: undefined reference to `H5Gopen2' 218 .build_release/lib/libcaffe.so: undefined reference to `google::protobuf::internal::NameOfEnum(google::protobuf::EnumDescriptor const*, int)' 219 .build_release/lib/libcaffe.so: undefined reference to `H5LTread_dataset_double' 220 .build_release/lib/libcaffe.so: undefined reference to `H5LTmake_dataset_string' 221 .build_release/lib/libcaffe.so: undefined reference to `H5LTread_dataset_int' 222 .build_release/lib/libcaffe.so: undefined reference to `H5Fclose' 223 .build_release/lib/libcaffe.so: undefined reference to `H5Gclose' 224 .build_release/lib/libcaffe.so: undefined reference to `H5LTfind_dataset' 225 .build_release/lib/libcaffe.so: undefined reference to `caffe::BlockingQueue<caffe::Batch<double>*>::pop(std::string const&)' 226 .build_release/lib/libcaffe.so: undefined reference to `H5Lexists' 227 .build_release/lib/libcaffe.so: undefined reference to `H5Gcreate2' 228 .build_release/lib/libcaffe.so: undefined reference to `H5LTget_dataset_info' 229 .build_release/lib/libcaffe.so: undefined reference to `H5LTread_dataset_string' 230 .build_release/lib/libcaffe.so: undefined reference to `caffe::BlockingQueue<caffe::Batch<float>*>::pop(std::string const&)' 231 .build_release/lib/libcaffe.so: undefined reference to `H5Fopen' 232 collect2: error: ld returned 1 exit status 233 Makefile:616: recipe for target '.build_release/tools/upgrade_net_proto_binary.bin' failed 234 make: *** [.build_release/tools/upgrade_net_proto_binary.bin] Error 1 235 wangxiao@GTX980:~/Downloads/35attribute_caffe_master_$
View Code
what the fuck :::
...
OK, 改为ubuntu Kylic版本了,哎,还是麒麟好用啊。。。坑逼
18. when use the matlab demo from caffe file:
after make matcaffe, and it warning me it's OK. and when run the demo, it shown me the errors like this:
Invalid MEX-file '/home/wangxiao/Downloads/caltech_256_caffe_master/matlab/+caffe/private/caffe_.mexa64': libcudart.so.7.5: cannot open shared object file: No such file or directory
What should I do for this ??
You must remember the following operation, because it really worked well ! Yeah !!!
error while loading shared libraries: libcudart.so.7.5: cannot open shared object file: No such file or directory
32-bit: sudo ldconfig /usr/local/cuda/lib
64-bit: sudo ldconfig /usr/local/cuda/lib64
今天悲剧的发现, 执行了 64-bit 之后出现错误:
wangxiao@AHU:~/Downloads/caffe-master$ sudo ldconfig /usr/local/cuda/lib64
/sbin/ldconfig.real: /usr/local/cuda/lib64/libcudnn.so.5 is not a symbolic link
不知道问题何在啊?怎么解决???
############################################## ## 有时候需要更新软链接: cd /usr/local/cuda/lib64/ sudo rm -rf libcudnn.so libcudnn.so.7.5 sudo ln -s libcudnn.so.7.5.48 libcudnn.so.7.5 sudo ln -s libcudnn.so.7.5 libcudnn.so
19. When compile caffe, some times it always shown you a mistake like this:
CXX src/caffe/util/db_leveldb.cpp
In file included from src/caffe/util/signal_handler.cpp:7:0:
./include/caffe/util/signal_handler.h:4:34: fatal error: caffe/proto/caffe.pb.h: No such file or directory
#include "caffe/proto/caffe.pb.h"
^
compilation terminated.
The bug is not reproducible, so it is likely a hardware or OS problem.
make: *** [.build_release/src/caffe/util/signal_handler.o] Error 1
make: *** Waiting for unfinished jobs....
^Cmake: *** [.build_release/src/caffe/util/math_functions.o] Interrupt
make: *** [.build_release/src/caffe/net.o] Interrupt
make: *** wait: No child processes. Stop.
Do you how to solve this problem ??? Just becase the lost of the file : caffe.pb.h, and this file is actually generated from the process of compile. Do the following operation will help you solve the problem:
Just input make in your terminal: make
Then, press ctrl+c to stop it, and input: make -j8
All process will be normal now !
Here is a figure to help you understand this all process.
20. You also maybe meet a error like this:
CXX/LD -o .build_release/tools/net_speed_benchmark.bin .build_release/lib/libcaffe.so: undefined reference to `cv::imread(cv::String const&, int)' .build_release/lib/libcaffe.so: undefined reference to `cv::imencode(cv::String 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::imdecode(cv::_InputArray const&, int)' collect2: error: ld returned 1 exit status make: *** [.build_release/tools/upgrade_solver_proto_text.bin] Error 1 make: *** Waiting for unfinished jobs.... .build_release/lib/libcaffe.so: undefined reference to `cv::imread(cv::String const&, int)' .build_release/lib/libcaffe.so: undefined reference to `cv::imencode(cv::String 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::imdecode(cv::_InputArray const&, int)' collect2: error: ld returned 1 exit status make: *** [.build_release/tools/extract_features.bin] Error 1 .build_release/lib/libcaffe.so: undefined reference to `cv::imread(cv::String const&, int)' .build_release/lib/libcaffe.so: undefined reference to `cv::imencode(cv::String 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::imdecode(cv::_InputArray const&, int)' collect2: error: ld returned 1 exit status make: *** [.build_release/tools/caffe.bin] Error 1 .build_release/lib/libcaffe.so: undefined reference to `cv::imread(cv::String const&, int)' .build_release/lib/libcaffe.so: undefined reference to `cv::imencode(cv::String 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::imdecode(cv::_InputArray const&, int)' collect2: error: ld returned 1 exit status make: *** [.build_release/tools/upgrade_net_proto_binary.bin] Error 1 .build_release/lib/libcaffe.so: undefined reference to `cv::imread(cv::String const&, int)' .build_release/lib/libcaffe.so: undefined reference to `cv::imencode(cv::String 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::imdecode(cv::_InputArray const&, int)' collect2: error: ld returned 1 exit status make: *** [.build_release/tools/convert_imageset.bin] Error 1 .build_release/lib/libcaffe.so: undefined reference to `cv::imread(cv::String const&, int)' .build_release/lib/libcaffe.so: undefined reference to `cv::imencode(cv::String 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::imdecode(cv::_InputArray const&, int)' collect2: error: ld returned 1 exit status make: *** [.build_release/tools/compute_image_mean.bin] Error 1 .build_release/lib/libcaffe.so: undefined reference to `cv::imread(cv::String const&, int)' .build_release/lib/libcaffe.so: undefined reference to `cv::imencode(cv::String 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::imdecode(cv::_InputArray const&, int)' collect2: error: ld returned 1 exit status make: *** [.build_release/tools/upgrade_net_proto_text.bin] Error 1
Just add a word in you Makefile, following:
LIBRARIES += opencv_core opencv_highgui opencv_imgproc opencv_imgcodecs
21. 利用caffe 的matlab借口提取feature的时候:碰到了这个问题:怎么破 ?
Undefined function 'caffe_' for input arguments of type 'char'.
Error in caffe.set_mode_gpu (line 5)
caffe_('set_mode_gpu');
Error in Copy_of_Label_all_ (line 11)
caffe.set_mode_gpu();
答:因为没有编译matlab接口,即:make matcaffe 执行这句,完了之后,你就发现,yeah,可以了。。。
22. protobuf 的问题: protobuf-2.5.0.tar.gz的下载与安装
采样自: http://blog.csdn.net/huguoping830623/article/details/45482725
1.下载 hadoop使用protocol buffer进行通信,需要下载和安装 protobuf-2.5.0.tar.gz。由于 现在 protobuf-2.5.0.tar.gz已经无法在官网 https://code.google.com/p/protobuf/downloads/list中 下载了,本人将 protobuf-2.5.0.tar.gz上传到百度云盘供大家下载,地址: http://pan.baidu.com/s/1pJlZubT 。 2.安装 使用tar -zxf protobuf-2.5.0.tar.gz命令解压后得到是 protobuf-2.5.0的源码, cd protobuf-2.5.0 进入目录 假如 你希望编译成功后输出的目录 为 /home/work /protobuf/ 则输入如下两条命令: ./configure --prefix=/home/work /protobuf/ make && make install 编译成功后将export PATH= /home/work /protobuf/bin:$PATH加入到环境变量中 最后输入 protoc --version命令,如显示libprotoc 2.5.0则安装成功
23. 将 wide residual network 的 python 脚本生成 其对应的 protext 文件,出现问题:
wangxiao@AHU:~/Downloads/caffe-master$ python ./python/wide_residual_network.py
Traceback (most recent call last):
File "./python/wide_residual_network.py", line 62, in <module>
make_net(tgt_file)
File "./python/wide_residual_network.py", line 58, in make_net
print(resnet_cifar(depth=16, widen_factor=8), file=f)
File "./python/wide_residual_network.py", line 53, in resnet_cifar
return to_proto(loss, acc)
File "/home/wangxiao/Downloads/caffe-master/python/caffe/net_spec.py", line 50, in to_proto
top.fn._to_proto(layers, {}, autonames)
--------------------- 类似这种转换 ------- 此处略写 -----------------------
inp._to_proto(layers, names, autonames)
File "/home/wangxiao/Downloads/caffe-master/python/caffe/net_spec.py", line 97, in _to_proto
return self.fn._to_proto(layers, names, autonames)
File "/home/wangxiao/Downloads/caffe-master/python/caffe/net_spec.py", line 136, in _to_proto
inp._to_proto(layers, names, autonames)
AttributeError: 'NoneType' object has no attribute '_to_proto'
wangxiao@AHU:~/Downloads/caffe-master$
搜到一个答案,但是不知所云:
http://stackoverflow.com/questions/15232832/python-regex-attributeerror-nonetype-object-has-no-attribute-groups
哎 坑啊 ...
24. 要用 CUDNN,因为训练速度会提升好几倍!!!
25. 编译 caffe 出现:
XX src/caffe/layers/cudnn_sigmoid_layer.cpp
CXX src/caffe/layers/deconv_layer.cpp
src/caffe/net.cpp:8:18: fatal error: hdf5.h: No such file or directory
#include "hdf5.h"
^
compilation terminated.
Makefile:572: recipe for target '.build_release/src/caffe/net.o' failed
make: *** [.build_release/src/caffe/net.o] Error 1
make: *** Waiting for unfinished jobs....
wangxiao@csdl:~/pedestrian_attributes/43_attribute_caffe_master_$ ^C
wangxiao@csdl:~/pedestrian_attributes/43_attribute_caffe_master_$
那么,怎么解决这个问题?添加两行路径:
/usr/include/hdf5/serial
/usr/lib/x86_64-linux-gnu/hdf5/serial
26. caffe 配置 python 环境变量: 参考博文:http://blog.csdn.net/yingyujianmo/article/details/51014440
添加环境变量 vim ~/.bashrc
将export PYTHONPATH=/home/wanghh/caffe/python:$PYTHONPATH
添加到文件中。 source ~/.bashrc
这样,在其他地方打开python,也可以import caffe了。
27. caffe 配置 python, some times, it shown us: no module named caffe:
at this moment, maybe you should add those codes into your file, like :
then, you can check it again. It will be OK.
28. when install new softwares, I find this error:
You might want to run 'apt-get -f install' to correct these:
The following packages have unmet dependencies:
kate : Depends: kdelibs4c2a (>= 4:3.5.9) but it is not going to be installed
Depends: libqt3-mt (>= 3:3.3.8b) but it is not going to be installed
Recommends: kregexpeditor but it is not installable
kscope : Depends: kdelibs4c2a (>= 4:3.5.7-1) but it is not going to be installed
Depends: libaudio2 but it is not going to be installed
Depends: libqt3-mt (>= 3:3.3.8really3.3.7) but it is not going to be installed
Depends: cscope but it is not going to be installed
Depends: exuberant-ctags but it is not going to be installed
Depends: graphviz but it is not going to be installed
E: Unmet dependencies. Try 'apt-get -f install' with no packages (or specify a solution).
try this operation on the terminal, it will solve this issue:
==>> $: apt-get -f install
29. when compile matconvnet, it shown me error like this:
>> vl_compilenn('enableGpu', true, 'cudamethod','nvcc') Warning: Function labindex has the same name as a MATLAB builtin. We suggest you rename the function to avoid a potential name conflict. Warning: Function numlabs has the same name as a MATLAB builtin. We suggest you rename the function to avoid a potential name conflict. Warning: Function labindex has the same name as a MATLAB builtin. We suggest you rename the function to avoid a potential name conflict. > In path at 109 In addpath at 86 In vl_compilenn at 144 Warning: Function numlabs has the same name as a MATLAB builtin. We suggest you rename the function to avoid a potential name conflict. > In path at 109 In addpath at 86 In vl_compilenn at 144 Warning: Function labindex has the same name as a MATLAB builtin. We suggest you rename the function to avoid a potential name conflict. > In path at 109 In addpath at 86 In vl_compilenn at 144 Warning: Function numlabs has the same name as a MATLAB builtin. We suggest you rename the function to avoid a potential name conflict. > In path at 109 In addpath at 86 In vl_compilenn at 144 vl_compilenn: CUDA: MEX config file: '/home/wangxiao/Downloads/siamese-fc-master/matconvnet-1.0-beta20/matlab/src/config/mex_CUDA_glnxa64.xml' Building with 'g++'. MEX completed successfully. Building with 'g++'. MEX completed successfully. Building with 'g++'. MEX completed successfully. Building with 'g++'. MEX completed successfully. Building with 'g++'. MEX completed successfully. Building with 'g++'. MEX completed successfully. Building with 'g++'. MEX completed successfully. Building with 'g++'. MEX completed successfully. Building with 'g++'. MEX completed successfully. /home/wangxiao/Downloads/siamese-fc-master/matconvnet-1.0-beta20/matlab/src/bits/impl/pooling_gpu.cu(163): error: function "atomicAdd(double *, double)" has already been defined 1 error detected in the compilation of "/tmp/tmpxft_000034d7_00000000-7_pooling_gpu.cpp1.ii". Error using vl_compilenn>nvcc_compile (line 521) Command "/usr/local/cuda-8.0/bin/nvcc" -c "/home/wangxiao/Downloads/siamese-fc-master/matconvnet-1.0-beta20/matlab/src/bits/impl/pooling_gpu.cu" -DNDEBUG -DENABLE_GPU -DENABLE_DOUBLE -gencode=arch=compute_61,code=\"sm_61,compute_61\" -I"/usr/local/MATLAB/R2014b/extern/include" -I"/usr/local/MATLAB/R2014b/toolbox/distcomp/gpu/extern/include" -gencode=arch=compute_61,code=\"sm_61,compute_61\" -Xcompiler -fPIC -o "/home/wangxiao/Downloads/siamese-fc-master/matconvnet-1.0-beta20/matlab/mex/.build/bits/impl/pooling_gpu.o" failed. Error in vl_compilenn (line 466) nvcc_compile(opts, srcs{i}, objfile, flags.nvcc) ;
==>> Update your MatConvnet version. It indeed contain such errors in this version.
30. json_parser_read.hpp:257:264: error: ‘type name’ declared as function returning an array escape
when compile caffe file in SSD, it shown me the error like this:
json_parser_read.hpp:257:264: error: ‘type name’ declared as function returning an array escape
Just like this blog said, you need do this:
修改json_parser_read.hpp:打开文件夹Document,选中computer,在搜索json_parser_read.hpp,找到该文件的路径之后用如下命令打开
sudo gedit /usr/include/boost/property_tree/detail/json_parser_read.hpp
将257行开始的escape代码段注释掉即可,如下:
/*escape
= chset_p(detail::widen<Ch>("\"\\/bfnrt").c_str())
[typename Context::a_escape(self.c)]
| 'u' >> uint_parser<unsigned long, 16, 4, 4>()
[typename Context::a_unicode(self.c)]
;*/
31. ImportError: No module named caffe.proto
wangxiao@AHU:~/Documents/caffe$ ./data/VOC0712/create_data.sh
Traceback (most recent call last):
File "/home/wangxiao/Documents/caffe/data/VOC0712/../../scripts/create_annoset.py", line 7, in <module>
from caffe.proto import caffe_pb2
ImportError: No module named caffe.proto
Traceback (most recent call last):
File "/home/wangxiao/Documents/caffe/data/VOC0712/../../scripts/create_annoset.py", line 7, in <module>
from caffe.proto import caffe_pb2
ImportError: No module named caffe.proto
Solution: export PYTHONPATH=/home/wangxiao/Documents/caffe/python:$PYTHONPATH
then, run: ./data/VOC0712/create_data.sh
it will be OK.
32. ImportError: No Module named caffe:
import sys
sys.path.append("/(你的caffe-master路径)/caffe-master/python")
sys.path.append("/(你的caffe-master路径)/caffe-master/python/caffe")
33. OpenCV Error:
OpenCV Error: Unspecified error (The function is not implemented. Rebuild the library with Windows, GTK+ 2.x or Carbon support. If you are on Ubuntu or Debian, install libgtk2.0-dev and pkg-config, then re-run cmake or configure script) in cvShowImage, file /io/opencv/modules/highgui/src/window.cpp, line 583 Traceback (most recent call last): File "./show_tracker_vot.py", line 30, in <module> objTrackerVis.trackAll(0, 1) File "/home/wangxiao/Downloads/goTURN-tensorflow/PY-GOTURN-master/src/tracker_manager.py", line 55, in trackAll cv2.imshow('input', sMatImage) cv2.error: /io/opencv/modules/highgui/src/window.cpp:583: error: (-2) The function is not implemented. Rebuild the library with Windows, GTK+ 2.x or Carbon support. If you are on Ubuntu or Debian, install libgtk2.0-dev and pkg-config, then re-run cmake or configure script in function cvShowImage
==>> do the following opeartions:
1.Remove installed OpenCV version to avoid mess up later pip3 uninstall opencv-python 2.Lower you python version to 3.5(current version 3.6 has different problems with conda, which we will use to install OpenCV) conda install python=3.5 3.Finally use conda, to install working version of OpenCV conda install -c menpo opencv3 sudo apt-get install libgtk-3-dev
34. when running a tensorflow code, it shown me a error:
ImportError: libcudnn.so.6: cannot open shared object file: No such file or directory
Failed to load the native TensorFlow runtime.
==>> well, this is because the version of tensorflow. Currently, the most recent tensorflow is version 1.3.0, and it need cudnn v6+. but my machine still use the cudnn v5.1.
Thus the error occured. You can sovle this problem by install tensorflow v1.2.0, as following:
sudo pip install --user tensorflow==1.2.0
35. How to install keras with specific version, not the newest one ???
sudo pip install keras==1.2
36. ankit@Ankit:~/caffe$ make all
CXX/LD -o .build_release/tools/convert_imageset.bin
.build_release/lib/libcaffe.so: undefined reference to cv::imread(cv::String const&, int)' .build_release/lib/libcaffe.so: undefined reference to
cv::imencode(cv::String const&, cv::_InputArray const&, std::vector<unsigned char, std::allocator >&, std::vector<int, std::allocator > const&)'
.build_release/lib/libcaffe.so: undefined reference to `cv::imdecode(cv::_InputArray const&, int)'
collect2: error: ld returned 1 exit status
make: *** [.build_release/tools/convert_imageset.bin] Error 1
Solution:
1. add "opencv_imgcodecs" in Makefile.(opencv_core opencv_highgui opencv_imgproc opencv_imgcodecs) 2. delete all the file in build(rm -rf ./build/*) before "make all".