caffe学习笔记14(外篇)--使用CodeBlocks调试caffe代码

在这篇博客里,我来说一下如何使用CodeBlocks去执行和调试caffe的代码。

在之前的文章中,我们都是直接调用caffe中的代码,但是其内部是如何运行的,我们并没有看到,这里,我们将caffe代码放到codeblocks创建的工程中,就可以单步调试代码了。我们以运行examples/mnist/convert_mnist_data.cpp的代码为例。关于mnist的训练,请参考 点击链接

在mnist文件中,有一个cpp文件,即convert_mnist_data.cpp,这里的代码主要用于数据类型的转换。

一. 使用codeblocks运行caffe代码

首先,看一下如何在codeblocks下调试和调用这个函数(因为在ubuntu下不好截图,所以尽量把步骤写清楚一些):

在梳理caffe的配置文件中,我们提到将make的打印信息保存下来,参考http://blog.csdn.net/thystar/article/details/50837750结尾部分

因为在codeblock下需要配置一些链接,可以根据打印的文件的一些配置来做,在输出的文件中找到convert_mnist_data.cpp,结果如下:

CXX examples/mnist/convert_mnist_data.cpp
g++ examples/mnist/convert_mnist_data.cpp -MMD -MP -pthread -fPIC -DDEBUG -g -O0 -DUSE_OPENCV -DUSE_LEVELDB -DUSE_LMDB -I/usr/include/python2.7 -I/usr/lib/python2.7/dist-packages/numpy/core/include -I/usr/local/include -I.build_debug/src -I./src -I./include -I/usr/local/cuda-7.5/include -Wall -Wno-sign-compare -c -o .build_debug/examples/mnist/convert_mnist_data.o 2> .build_debug/examples/mnist/convert_mnist_data.o.warnings.txt \
		|| (cat .build_debug/examples/mnist/convert_mnist_data.o.warnings.txt; exit 1)
CXX/LD -o .build_debug/examples/mnist/convert_mnist_data.bin
g++ .build_debug/examples/mnist/convert_mnist_data.o -o .build_debug/examples/mnist/convert_mnist_data.bin -pthread -fPIC -DDEBUG -g -O0 -DUSE_OPENCV -DUSE_LEVELDB -DUSE_LMDB -I/usr/include/python2.7 -I/usr/lib/python2.7/dist-packages/numpy/core/include -I/usr/local/include -I.build_debug/src -I./src -I./include -I/usr/local/cuda-7.5/include -Wall -Wno-sign-compare -lcaffe -L/home/sindyz/anaconda/lib -L/usr/local/lib -L/usr/lib -L/usr/local/cuda-7.5/lib64 -L/usr/local/cuda-7.5/lib -L.build_debug/lib  -lcudart -lcublas -lcurand -lglog -lgflags -lprotobuf -lboost_system -lboost_filesystem -lm -lhdf5_hl -lhdf5 -lleveldb -lsnappy -llmdb -lopencv_core -lopencv_highgui -lopencv_imgproc -lboost_thread -lstdc++ -lcblas -latlas \
		-Wl,-rpath,\$ORIGIN/../../lib

按照上面的配置,

i. 右键项目,点击:properties...菜单-->build target标签-->build options按钮 -->Linker Settings标签,在右侧的空白处,把上面文档中的链接库帖进去。分别是:

-pthread -lcaffe -lcudart -lcublas -lcurand -lglog -lgflags -lprotobuf -lboost_system -lboost_filesystem -lm -lhdf5_hl -lhdf5 -lleveldb -lsnappy -llmdb -lopencv_core -lopencv_highgui -lopencv_imgproc -lboost_thread -lstdc++ -lcblas -latlas
另外,还有最后一句:-Wl,-rpath,\$ORIGIN/../../lib,将$CAFFE/build/lib的相对路径也添加进来。

ii, 在Search dictioneries-->Compile中添加搜索路径,就是上面-I后的路径,主要由三个:

$CAFFE/build/src

$CAFFE/include

如果使用gpu,需要添加:$CUDA/include, ($CUDA是cuda的安装路径,通常是(usr/local/cuda/include).

将这几个路径点击Add添加,其他的配置不用手动添加

iii. 在旁边的Linker标签下添加链接库的搜索路径:就是上面文本中-L开头的部分,也由三个:

$CAFFE/build/lib

$CUDA7.5/lib

$CUDA7.5/lib64

通过Add添加即可,其余也是不用手动添加的

iv. 在Compiler Settings标签下的#defines,把上面-D的部分贴进来:

USE_OPENCV
USE_LEVELDB
USE_LMDB

v. 最后,需要在other options下加入-Wno-sign-compare这句,就不会在编译过程中打印警告信息了

vi 将convert_mnist_data.cpp添加到工程中,在工程目录下创建data目录,把mnist数据帖到这个目录下,就可以编译了,如果没有报错,保存工程(右键工程名-->save project)

vii. 编译完成后,还需要向convert_mnist_data.cpp的主函数中输入参数。在$CAFFE/examples/mnist下的create_mnist.sh中有如下语句:

$BUILD/convert_mnist_data.bin $DATA/train-images-idx3-ubyte \
  $DATA/train-labels-idx1-ubyte $EXAMPLE/mnist_train_${BACKEND} --backend=${BACKEND}
将后面三个输入写入:Project-->Set programs` argument..-->program argument里面,路径要该成自己的路径,因为之前在工程下创建了data目录,因此,我添加的参数如下:
data/mnist/train-images-idx3-ubyte  data/mnist/train-labels-idx1-ubyte  mnist_train_lmdb  --backend=lmdb

运行文件,在工程目录下就会生成mnist_train_lmdb文件夹,并生成lmdb格式的数据文件。

这样,我们就可以用codeblocks调试caffe的代码了。其他代码的添加过程也是类似的。



评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值