最近需要用c++写caffe的代码,笔者希望使用codeblocks调试caffe。然而自己十分小白,所以折腾了很长一段时间才出来。在这篇博客
里我会总结一下从安装caffe到成功在codeblocks上运行官方提供的cpp例程的全过程。希望可以帮到大家。
笔者开始调试时,已经有了配置好的ubuntu14.04和Opencv3.1.0。使用的是CPU_ONLY的模式。
1.caffe的安装
这里不得不说caffe官网上说的十分详细。基本照这他来就不会出问题。
首先是caffe的下载,笔者是从caffe的github上克隆下来的。
git clonehttps://github.com/BVLC/caffe
下载好后参考caffe官网上的Installation部分
先安装依赖项
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
再安装BLAS和Python(笔者用Python进行模型的训练)
BLAS:
sudo apt-get install libatlas-base-dev
Python:
笔者下载并安装了
ipthon notebook
CUDA:
笔者装了
CUDA8.0,
不过其实根本就不需要装。我用
CPU_ONLY
,我装个蛋蛋。
更可恶的是,可能是由于我电脑没有独立显卡得缘故。我装完竟然登陆不了系统了
w(
゚
Д
゚
)w
最后我才发现是更改了环境变量的原因,并且用了这篇博客上的说明解决了问题,感谢这位博主
http://www.cnblogs.com/zhcncn/p/3989572.html
然后进入编译环节。首先打开
Makefile.config.example
。由于我的是
CPU_ONLY
,
OPENCV
使用的是
3.1.0
版本。于是需要将里面得
CPU_ONLY:= 1
和
OPENCV_VERSION:= 3
取消注释。
然后
cd
到你克隆下来的
caffe
中。执行下列命令
cp Makefile.config.example Makefile.config
make all
make test
make runtest
如果
runtest
通过了,就完成了。但是如果没过的话,就需要在网上根据
bug
找解决方案了。不过不用担心,网上资源还是很足的。
为了使用
python
,需要运行
make pycaffe
最后,按照官网上的说明,运行
make distribute
到此为止,
caffe
就安装完成了。
2.
codeblocks
的配置
有关
codeblocks
的配置的资源网上比较少,主要是需要配置编译器。由于笔者先前使用
codeblocks
进行
opencv
的编译。关于
opencv
在
codeblocks
中的配置不再赘述。有需要的同学可以参考网上的博客,有很多写的很棒。
(
๑•
̀
ㅂ•
́)
و✧
笔者首先在
ipython
上运行了
00-classification.ipynb,
一来是把运行
cpp
例程的一些文件下载下来,二来是确认一下
caffer
是好使的。
现在,先创建一个
opencv
的
project
。把其中的
main
函数换为官方提供的
.cpp
例程。为了在
codeblocks
中直接运行。我将需要的文件拷贝到了
这个
project
的文件夹下,并且将
main
函数前几句稍微改了一下
int main(int argc, char** argv) {
if (argc != 1) {
std::cerr << "Usage: " << argv[0]
<< " deploy.prototxt network.caffemodel"
<< " mean.binaryproto labels.txt img.jpg" << std::endl;
return 1;
}
::google::InitGoogleLogging(argv[0]);
string model_file = "deploy.prototxt";
string trained_file = "bvlc_reference_caffenet.caffemodel";
string mean_file = "imagenet_mean.binaryproto";
string label_file = "synset_words.txt";
然后我开始配置
codeblocks
的编译器,我搜到了一个比较不错的博客,虽然完全按照这种方法我没能成功,但是这篇博客还是帮了我很多。
http://blog.csdn.net/u012938704/article/details/52885879
好了,废话不多说,直接上配置方法
1)头文件的搜索位置
在
Searchdirectories ->Compile
中添加:
(CAFFE_ROOT)/include
(CAFFE_ROOT)/build/src (caffe.pb.h 的位置)
2)链接库的搜索位置
在
Searchdirectories ->Linker
中添加:
(CAFFE_ROOT)/build/lib (libcaffe 的位置)
3)添加需要的链接库名
在
Linkersettings->linker libraries
中添加:
(CAFFE_ROOT)/build/lib/libcaffe.so
在Linkersettings->Other linker options中添加:
-pthread
-lcaffe -lglog -lgflags -lprotobuf -lboost_system -lboost_filesystem
-lm -lhdf5_hl -lhdf5 -lleveldb -lsnappy -llmdb -lboost_thread
-lstdc++ -lcblas -latlas
4.添加相关宏定义
在
Compilesettings->#defines
中添加:
CPU_ONLY USE_OPENCV USE_LEVELDB USE_LMDB
注意,我的配置方法和原博有出入。首先第三步需要添加
libcaffe.so
其次,第四步中不能写。
-lopencv_core -lopencv_highgui -lopencv_imgproc
最后,不需要添加任何cpp文件到自己的工程中
现在可以编译通过了。运行,发现还是有错误
error while loading shared libraries: cannot open shared object file: No such file or director
参考这篇博文即可解决问题
http://blog.csdn.net/sahusoft/article/details/7388617
最后,运行成功φ(≧ω≦*)♪
最后,运行成功φ(≧ω≦*)♪
第一次编辑博文,排版好麻烦 TAT