Caffe 工程的一些编译错误以及解决方案
来源:互联网 发布:ct图像重建算法matlab 编辑:程序博客网 时间:2024/06/03 22:05
以SSD代码为例,
1.主要文件夹的用途
- examples/ssd/,存放了训练,测试的脚本,是主要操作的脚本
- data/,存放了训练、验证和测试所需的数据和代码
- python/caffe/model_libs.py,存放了生成网络主体的代码
- models/,存放了Proto文件,是由 examples/ssd/中的脚本生成
jobs/,存放了训练、测试文件,是由 examples/ssd/中的脚本生成
# Modify Makefile.config according to your Caffe installation.cp Makefile.config.example Makefile.configmake -j8# Make sure to include $CAFFE_ROOT/python to your PYTHONPATH.make pymake test -j8make runtest -j8
编译遇到的问题:
可以通过命令 export PYTHONPATH=$CAFFE_ROOT/python:$PYTHONPATH 实现。 ($CAFFE_ROOT为该代码当前所在路径)
设置PYTHON路径方法
export PYTHONPATH=/home/username/caffe/python
查看路径
echo $PYTHONPATH
3. learning@learning-virtual-machine:~/caffe$ make all 时出现问题:
learning@learning-virtual-machine:~/caffe$ make allPROTOC src/caffe/proto/caffe.protoCXX .build_release/src/caffe/proto/caffe.pb.ccCXX src/caffe/data_transformer.cppCXX src/caffe/common.cppCXX src/caffe/internal_thread.cppCXX src/caffe/blob.cppCXX src/caffe/data_reader.cppCXX src/caffe/parallel.cppCXX src/caffe/util/hdf5.cppIn file included from src/caffe/util/hdf5.cpp:1:0:./include/caffe/util/hdf5.hpp:6:18: fatal error: hdf5.h: No such file or directorycompilation terminated.Makefile:572: recipe for target '.build_release/src/caffe/util/hdf5.o' failedmake: *** [.build_release/src/caffe/util/hdf5.o] Error 1learning@learning-virtual-machine:~/caffe$ 1
解决:
在Makefile.config文件中,
修改INCLUDE_DIRS ,添加路径 /usr/include/hdf5/serial/
在Makefile 文件中,
修改LIBRARIES ,hdf5_hl hdf5 改为 hdf5_serial_hl hdf5_serial
4. 问题:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
首先,我是已经配置过了opencv的,可以这样查询安装版本:
- 1
因为编译好了,理所当然,输出结果是3.1.0
所以出现上面的错误,应该是opencv_imgcodecs
链接的问题,比较有效的解决方案是,把opencv需要的lib添加到Makefile
文件中,找到LIBRARIES
(在PYTHON_LIBRARIES := boost_python python2.7
前一行)并修改为:
- 1
- 2
- 3
5. 问题:undefined reference tocv::VideoCapture::get(int) const’
解决:adding opencv_videoio to LIBRARIES in the Makefile
3 make
二、针对VOC数据集的训练
- 预训练模型下载
下载地址:
链接:http://pan.baidu.com/s/1slpaEO9
密码:loxo
在caffe/models文件夹下新建文件夹,命名为VGGNet,将刚刚下载下来的文件放入这个VGGNet文件夹当中; 下载VOC2007和VOC2012
在主文件夹下(即/home/**(服务器的名字)/)新建文件夹,命名为data;
终端输入:- 1
- 2
- 3
- 4
- 5
解压文件:
- 1
- 2
- 3
- 4
- 5
生成训练所需的LMDB文件:
- 1
- 2
- 3
- 4
若出现no module named caffe或者是no module named caffe.proto,则在终端输入:
- 1
- 2
3. 训练与测试
- 训练:
打开caffe-ssd/examples/ssd/ssd_pascal.py这个文件,找到gpus=’0,1,2,3’这一行,如果您的服务器有一块显卡,则将123删去,如果有两个显卡,则删去23,以此类推。如果您服务器没有gpu支持,则注销以下几行,程序会以cpu形式训练。(这个是解决问题cudasuccess(10vs0)的方法)
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
如果出现问题cudasuccess(2vs0)则说明您的显卡计算量有限,再次打开caffe/examples/ssd/ssd_pascal.py这个文件,找到batch_size =32这一行,修改数字32,可以修改为16,或者8,甚至为4,保存后再次终端运行python examples/ssd/ssd_pascal.py。
测试
终端输入:- 1
- 2
三、利用自己的数据集训练检测模型
1. 将数据集做成VOC2007格式,可参考博文(http://blog.csdn.net/ yudiemiaomiao/article/details/71635257)假定数据集名称为MyDataSet,则在MyDataSet目录下需包含Annotations、ImageSets、JPEGImages三个文件夹:
ImageSet目录下包含Main文件下,在ImageSets\Main里有四个txt文件:test.txt train.txt trainval.txt val.txt;
txt文件中的内容为图片名字(无后缀)。
在caffe-ssd/data目录下创建一个自己的文件夹MyDataSet:
- 1
- 2
- 3
把data/VOC0712目录下的create_list.sh 、create_data.sh、labelmap_voc.prototxt 这三个文件拷贝到MyDataSet下:
- 1
- 2
- 3
- 4
在/home/**(服务器的名字)/data目录下创建MyDataSet, 并放入自己的数据集;
在caffe-ssd/examples下创建MyDataSet文件夹:
- 1
- 2
用于存放后续生成的lmdb文件;
修改labelmap_voc.prototxt文件(改成自己的类别),以及create_list.sh和create_data.sh文件中的相关路径;
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
运行命令:
- 1
- 2
- 3
此时,在examples/mydataset/文件夹下可以看到两个子文件夹, mydataset_trainval_lmdb, mydataset_test_lmdb;里面均包含data.dmb和lock.dmb;
到此为止,我们的数据集就做好了。接下来就开始训练了。训练程序为/examples/ssd/ssd_pascal.py,运行之前,我们需要修改相关路径代码,ssd_pascal.py作如下修改:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
另外, 如果你只有一个GPU, 需要修改285行: gpus=”0,1,2,3” ===> 改为”0”
否则,训练的时候会出错。
修改完后运行- 1
- 2
四、出现的错误总结
在训练的过程中,从迭代开始一直显示 mbox_loss = 0 (* 1 = 0 loss);
原因是数据集制作错误,如果使用VOC作为参考,需要严格按照其格式,包括数据类型,例如bndbox:- 1
- 2
- 3
- 4
- 5
- 6
- 7
解决方法:
bndbox参数必须为整数,如果是小数60.0,运行时不会报错,但是训练模型不会成功,持续是loss=0。
- Caffe 工程的一些编译错误以及解决方案
- Caffe 工程的一些编译错误以及解决方案
- Caffe 工程的一些编译错误以及解决方案
- Caffe 工程的一些编译错误以及解决方案(undefined reference to cv::imread)
- caffe安装过程中碰到的一些问题以及解决方案
- caffe编译出现的一些错误及解决方法(仅供参考)
- Cython的安装以及编译错误的解决方案
- R语言学习遇到的一些错误以及解决方案
- ubuntu编译android源码会出的错误以及解决方案
- Ubuntu上编译Caffe和拓展应用(faster-rcnn, pvanet)的错误及解决方案
- Windows下编译caffe,建立caffe的vs工程
- 关于CppUnit单元测试的一些编译错误以及改正
- tensorflow 源码编译安装以及遇到的一些错误
- 编译glibc(gcc)以及过程中遇到的一些错误
- VS一些设置及编译时候的一些问题以及解决方案
- caffe编译成功之后的一些步骤
- 编译caffe / PSPnet遇到的一些坑
- caffe中编译python一些错误及其解决方法
- OneinStack自动部署Let's Encrypt证书
- 7-11 关键活动(30 分)
- springMVC重定向时参数传递及中文参数乱码问题
- ELK日志采集系统搭建
- java.net.ConnectException: Connection refused: no further information
- Caffe 工程的一些编译错误以及解决方案
- arm平台编译adb
- 怎么设定目标(六)如何时刻保持在目标的正确轨道上
- 定时器
- 修改redo log 大小的记录:
- DJANGO_PART4
- Leetcode Num.38 -- Count and Say
- 后台开发
- java 操作hdfs api