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.7
sudo apt-get install -y g++-4.7
cd /usr/bin
sudo 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 --version
g++ --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_$
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://*.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".