ubuntu18.04配置caffe并实现ssd的成功运行

配置caffe

  1. 按照https://blog.csdn.net/CAU_Ayao/article/details/83536320此网址安装依赖库(只安装依赖库就可以了),按照https://www.jianshu.com/p/4eaedaeafcb4此网址git clone caffe 和 ssd 。
   git clone https://github.com/weiliu89/caffe.git
   cd caffe
   git checkout ssd(出现“分支”则说明copy-check成功...作者caffe目录下有三个分支fcn/master/ssd,利用git checkout来切换分支,否则只有master目录下的文件)
  1. 然后修改Makefile和Makefile.onfig,修改在根目录下的Makefile.config文件,主要是关于使用GPU还是CPU,Cuda路径、cudnn路径、python路径以及matlab路径的设置。在这里我不讲解怎么具体去修改该文件我给出MakefileMakefile.config修改后的源码。
  2. 修改完之后执行代码进行make编译
cd ~caffe
sudo make clean
mkdir build
cd build
sudo cmake ..
cd ..
sudo make all
sudo make test
sudo make runtest
sudo make pycaffe (执行这句话之前一定将python路径添加到环境变量 export PYTHONPATH=/home/yh/caffe/python:$PYTHONPATH
 可根据你的caffe下的python路径进行修改)

在运行Make的时候可能会报错,我列出我遇见的错误:

错误1:
.build_release/lib/libcaffe.so: undefined reference to `boost::re_detail_106501::cpp_regex_traits_implementation<char>::transform(char const*, char const*) const'
.build_release/lib/libcaffe.so: undefined reference to `boost::re_detail_106501::cpp_regex_traits_implementation<char>::transform_primary(char const*, char const*) const'
collect2: error: ld returned 1 exit status
错误1的解决办法:

在caffe根目录下的Makefile文件最后添加以下代码:

ifeq ($(USE_OPENCV), 1)
    LIBRARIES += opencv_core opencv_imgproc opencv_videoio
 
    ifeq ($(OPENCV_VERSION), 3)
        LIBRARIES += opencv_imgcodecs opencv_videoio
    endif
 
endif

如果还是没有成功,按照 链接 (https://blog.csdn.net/CAU_Ayao/article/details/83899878) 重新编译boost,但是记住无需./b2 install --prefix=/usr 直接 ./b2 install 安装在默认的位置就好了。**

错误2:
.build_release/lib/libcaffe.so: undefined reference to `google::protobuf::io::CodedOutputStream::WriteVarint64ToArray(unsigned long long, unsigned char*)'未定义的引用
错误2的解决办法:

1.将Makefile.config中的INCLUDE_DIRS和LIBRARY_DIRS改成如下格式,此问题是因为存在多个版本的protobuf(自己安装了一个,anaconda中有一个),所以将$(PYTHON_INCLUDE)移动到 INCLUDE_DIRS的最后,这样就会先调用其他地方的protoc,而不是调用anaconda中的protoc就可以解决上面的问题了!!!!如果解决不了,在此基础上进行步骤2

INCLUDE_DIRS := /usr/local/include /usr/include/hdf5/serial $(PYTHON_INCLUDE) 
LIBRARY_DIRS := /usr/local/lib /usr/lib /usr/lib/x86_64-linux-gnu /usr/lib/x86_64-linux-gnu/hdf5/serial $(PYTHON_LIB)

2.用which protoc查看自己的protoc的位置是否是anaconda下的,如果是的话就重新安装一个非anaconda内部的protobuf,安装办法: 链接此办法在Ubuntu18.04下依旧适用。

make all 或者 make runtest的时候出现 错误3:
.build_release/tools/caffe
.build_release/tools/caffe: error while loading shared libraries: libcurand.so.9.0: cannot open shared object file: No such file or directory
Makefile:544: recipe for target 'runtest' failed
make: *** [runtest] Error 127

错误3解决办法:
sudo cp /usr/local/cuda-9.0/lib64/libcudart.so.9.0 /usr/local/lib/libcudart.so.9.0 && sudo ldconfig
sudo cp /usr/local/cuda-9.0/lib64/libcublas.so.9.0 /usr/local/lib/libcublas.so.9.0 && sudo ldconfig
sudo cp /usr/local/cuda-9.0/lib64/libcurand.so.9.0 /usr/local/lib/libcurand.so.9.0 && sudo ldconfig

如果是 cuda8.0 就将三句话里面的9.0换为8.0就可以了~~

其他的错误在网上都能很简单的搜索到解决办法。祝大家先编译成功。

数据集和模型准备

VOC数据集下载
VOC2007 VOC2012数据集下载
只需要下载如图所示的三个文件即可。
分别为:

  • VOC2012trainval
    VOC2007trainval
    VOC2007test
    在这里插入图片描述
#### Download the data.

wget http://host.robots.ox.ac.uk/pascal/VOC/voc2012/VOCtrainval_11-May-2012.tar
wget http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCtrainval_06-Nov-2007.tar
wget http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCtest_06-Nov-2007.tar

# Extract the data.
(先在根目录(注意是在根目录下也就是home目录下,这样我们不需要更改后面文件的路径了)下建立data文件夹夹,然后进入data文件夹,按照顺序解压下面三个文件到data文件夹
mkdir data
cd data
tar -xvf VOCtrainval_11-May-2012.tar
tar -xvf VOCtrainval_06-Nov-2007.tar
tar -xvf VOCtest_06-Nov-2007.tar
VGG-16预训练模型下载

VGG-16预训练模型下载
在这里插入图片描述

将此模型放在caffe/models/VGGNet下,如果没有就新建这个目录然后放入。

LMDB数据集制作

直接运行

cd /home/yh/caffe
sh ./data/VOC0712/create_list.sh
sh ./data/VOC0712/create_data.sh

create_list.shcreate_data.sh 文件链接点击查看。

可能会报错1
关于模型找不到的错误,具体代码我这就不贴出来了
解决办法:

在报错文件中加入caffe下面的python路径

import sys
sys.path.insert(0,'/home/yh/caffe/python')

此时数据集已经准备好了。

训练模型

首先需要修改/caffe/examples/ssd/ssd_pascal.py文件

注意:最后跑 ssd_pascal.py 必须在caffe目录下,用sudo python examples/ssd/ssd_pascal.py,因为 ssd_pascal.py 中有相应的路径查找必须从caffe目录开始查找。
因为我要跑原始的caffe ssd,所以这里只修改了gpus = "0,1,2,3"改为了gpus = "0"

错误报告1
模型找不到
错误1解决办法

在ssd_pascal.py文件的最上面加入

import sys
sys.path.insert(0,'/home/yh/caffe/python')
错误报告2
I1101 21:03:16.666795 10547 layer_factory.hpp:77] Creating layer data
I1101 21:03:16.666965 10547 net.cpp:100] Creating Layer data
I1101 21:03:16.666981 10547 net.cpp:408] data -> data
I1101 21:03:16.667016 10547 net.cpp:408] data -> label
F1101 21:03:16.668125 10578 db_lmdb.hpp:15] Check failed: mdb_status == 0 (13 vs. 0) Permission denied
*** Check failure stack trace: ***
    @     0x7f7481daa0cd  google::LogMessage::Fail()
    @     0x7f7481dabf33  google::LogMessage::SendToLog()
    @     0x7f7481da9c28  google::LogMessage::Flush()
    @     0x7f7481dac999  google::LogMessageFatal::~LogMessageFatal()
    @     0x7f74824c9890  caffe::db::LMDB::Open()
    @     0x7f74826a0416  caffe::DataReader<>::Body::InternalThreadEntry()
    @     0x7f748269c7c5  caffe::InternalThread::entry()
    @     0x7f74772df8d5  thread_proxy
    @     0x7f74630ae6db  start_thread
    @     0x7f748058988f  clone

错误2解决办法

从打印的日志文件看出:错误出现的原因是因为数据文件没有找到,这个时候可能是因为你根本没有生成数据文件,也可能是因为你的数据文件生成的时候用sudo,所以现在读取没用sudo就没有权限读取,所以解决办法是:sudo python examples/ssd/ssd_pascal.py,一定记得用sudo噢!

如果还有其他错误,请参考 链接(这个链接非常好,基本能解决所有运行ssd_pascal.py的错误)

最后终于成功开始训练了

注意每次重新执行都要重新运行一遍:sudo make pycaffe ,否则会报错找不到caffe模型
在这里插入图片描述

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值