深度学习笔记(2)------运行别人的caffe,以PoseNet为例

由于近期研究需要运行别人的caffe模型,这里就如何运行不同的caffe做出总结。

一、为什么要安装不同的caffe

在用CNN解决实际问题时,有些作者会根据自身的需要会定义一些自己的层来方便运算,而标准的caffe或者caffe-master中往往没有这些层的定义,这时就需要作者定制自己的caffe,如何想要跑他的网络,就需要重新编译他的caffe。比如,我这里想要运行的PoseNet, 作者定义了Slice层,就需要重新编译caffe,才有这个slice层的定义注意:同一台电脑中是可以有不同版本的caffe的,如果切换不同的版本只需要修改环境变量即可!

二、什么是PoseNet

PoseNet是剑桥大学的Alex Kendall提出的一个卷积神经网络,主要思路是利用CNN回归出相机的位置和姿态,相关的研究成果和对应的demo展示可以点这里,链接中也提供了所有的源代码,训练数据,网络结构和权值文件,要想重现他的训练过程,可以在网站中下载!这是自己第一个正式训练别人网络的例子,这篇文章对自己的帮助很大

三、关于数据的准备

Kendall的论文有提到说,自己有7个室外场景做训练,为了方便起见,我们只选其中的一个场景King’s College,数据集的下载在这里,这个数据集中包含视频,图片,测试数据和训练数据,作者已经把数据转化成规范的个数如下图:

这里写图片描述

四、重新编译caffe

之前为图省事,把作者的网络直接扔到自己已经编译好的caffe中,发现问题说:slice_axis < num_axe这里作者新定义了slice_axis层,我们原来的caffe是不能用的,需要重新编译caffe,具体的编译过程与第一次编译caffe-master一样,但肯定是会出现各种各样的问题,我在自己写的编译caffe的文章中把会出现的问题和解决方案详细的列了出来。总结一下就是,低版本的库往往不能对高版本的兼容,所以需要你重新建一个软连接,有时候直接复制粘贴就可以了。这里不再赘述caffe编译的全过程,填好所以的坑之后,我们会得到作者自己版本的caffe,caffe-posenet-master

这里写图片描述

五、测试PoseNet

5.1 文件说明

在caffe-posenet-master中有一个posenet的文件夹,建议吧网络结构,权值,数据全扔到里边,主要是为了修改源代码的路径时方便,如图,我自己的posenet文件夹中有:

这里写图片描述

其中outdoorScence装室外场景的网络结构和权值文件,model是所以的场景,dataset是Kingscollege的训练和测试数据,7scene文件夹是作者提供的室内训练场景scripts是作者提供的测试demo

5.2 标准化数据

lmdb文件是caffe数据层定义的标准输入,作者把训练照片全部标注到dataset_train.txt中,我们要做的就是把它转化成lmdb数据,作者已经提供了脚本,我们只需要改相应数据文件的路径即可,如下图:

这里写图片描述

修改1,11,12和37行的路径即可,所有路径修改完成之后,在当前目录输入

python create_posenet_lmdb_dataset.py

我们就可以得到一个lmdb数据格式的文件如下图

这里写图片描述

5.3创建均值文件

在caffe-posenet-master的主目录中,用命令行输入(这里的目录按照自己的定)

sudo build/tools/compute_image_mean posenet/dataset/KingsCollege/posenet_dataset_lmdb posenet/dataset/KingsCollege/posenet_dataset_lmdb/imagemean.binaryproto

然后可以得到均值文件,如下:

这里写图片描述

5.4修改运行脚本

运行脚本test_posnet.py中的路径需要重新修改,按照自己数据集的路径做相应的修改,我自己的如下:

这里写图片描述

改了第13行的路径

5.5修改网络结构

同样的,网络结构中的路径参数也要修改,以train_kingscollege.prototxt为例
改以下四个路径

这里写图片描述

5.6运行脚本

在test_posenet.py的文件夹中输入

python posenet/scripts/test_posenet.py --model ./train_kingscollege.prototxt --weights ./weights_kingscollege.caffemodel --iter 8

也可以自己写个小的sh脚本以便调整参数,最后我得到的运行结果如下:

这里写图片描述

各种问题的汇总

用系统自带的计算均值的文件会出现的各种问题,这里做一个汇总。
计算均值文件的命令是(在caffe目录中)

sudo build/tools/compute_image_mean examples/mnist/mnist_train_lmdb examples/mnist/mean.binaryproto

这个命令的意思就是用compute_image_mean这个函数计算lmdb数据格式的文件,并输出到mean.binaryproto中

在实际运行的时候回出现各种各样的问题:

1. 找不到libcudnn.x.so

原因: cudnn的版本太高,不能满足之前设计的计算程序
解决方法:在/usr/lib中找到最新的libcudnn.so.x.x.x 然后新建软连接,把缺少的那个连接到最新的libcudnn.so.x.x.x 上,同样的步骤在/usr/local/cuda/lib64中再重复一遍
例子:我的cudnn是7.0版本的,以前用5.0版本写的程序是不能用的,因此,找到我的/usr/lib中的libcudnn.so.x.x.x为libcudnn.so.4.0.7. 我缺少的是libcudnn.so.6,那就新建一个软连接连接到最新的libcudnn.so.4.0.7上

cd /usr/lib
ln -s libcudnn.so.4.0.7. libcudnn.so.6

同样的,在/usr/cuda/lib64再重复一遍

cd /usr/cuda/lib64
ln -s libcudnn.so.4.0.7. libcudnn.so.6

记住一点,缺啥补啥!

2. libtiff.so.5:no version information available (required by …./libopencv_imgcodecs.so.3.2

原因:在求均值文件时权限不足
解决方法:指令前加sudo

sudo build/tools/compute_image_mean lmdb数据目录 mean.binaryproto目录
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值