使用caffe框架利用faster-rcnn来训练自己的数据集
来源:互联网 发布:区块链 闪电网络 编辑:程序博客网 时间:2024/05/22 23:14
最近在研究caffe,前前后后差不多快一周了,论文看得比较少,直接上手来做的,期间遇到无数问题,大大小小的无数问题,不过通过上网,看别人的博客,几乎踩了很多大坑,这里给大家总结一下,希望后续同样做深度学习的小伙伴能够少踩点坑。在这里,我就不做重复功了,具体的配置还有改动的地方我会引用别人的博客,然后补充说明这些博客介绍得并不全面的地方。
备注:以下内容会不定期更新,该篇博客主要对安装caffe使用faster-rcnn中出现的问题进行分享,配置还有使用部分引用网上其它博客。
文件下载地址:链接:http://pan.baidu.com/s/1qYnjZCo 密码:g7bo
实验目的:实验室最近要开始做深度学习,配置了一台K80服务器,按现在的水平显卡性能属于中等偏上,不过做做实验应该是够了。最初打算先实现个最简单的目标检测,即人脸检测,目的很简单,就是输入一张图片,判断有没有人脸,并且把人脸部分用box给框出来。
实验工具:caffe框架
faster-rcnn
主要语言:C++, Python
实验步骤:
一、caffe框架的配置
这里给出rbg大神在github上的地址:https://github.com/rbgirshick/py-faster-rcnn
这里要注意,caffe的框架一定要使用rbg大神github上的版本,不建议使用伯克利大学维护的那一份caffe的代码,具体的原因主要是,使用faster-rcnn方法的这个版本的caffe比较老,现在官方维护的那个版本改动了一些部分,而且rbg大神使用了Python layer来定义了caffe中的数据层(data layer),所以在编译的时候需要将Python layer打开,这个之后会讲到。按道理,config文件修改合理的话肯定不会出问题的,不过建议还是使用大神的版本,比较省事。
rbg大神的caffe配置参考这篇博客,http://www.cnblogs.com/louyihang-loves-baiyan/p/4885659.html#3573006
上面这是一篇fast-rcnn的配置博客,实在抱歉,前几天我还找到一份faster-rcnn坑比较少的配置博客,今天怎么翻都找不到了,这一篇虽然是fast-rcnn的配置博客,不过我刚刚仔细看了下,配置过程是同样的,而且作者写得很用心,可以避免不少弯路。
大概流程就是先到py-faster-rcnn-master文件下的caffe-fast-rcnn(可以再坏境变量中修改为$FRCNN_CAFFE),修改config文件,将博客中提到的地方都取消注释,然后到py-faster-rcnn-master文件夹(环境变量中命名为$FRCNN_ROOT)中的lib文件夹中,执行
cd $FRCN_ROOT/libmake
这里需要注意下,确保你的Linux gcc的版本为最新版,因为版本比较老的话,编译有个部分会出错中断。
接下来就是到$FRCNN_CAFFE中编译caffe和pycaffe,执行命令
cd $FRCNN_CAFFEmake -j8 && make pycaffe暂时想不到别的会出错的地方,如果大家出现什么问题,可以再下面留言告诉我,我能解决的一定尽快解决。
至此,caffe框架的配置算是完成了。
二、运行faster-rcnn的demo
完成了配置以后,为了验证是否正确安装,可以到$FRCNN_ROOT的tools文件夹中,对demo.py文件进行执行:
./demo.py
这里如果机器配置合适的话,就直接默认执行就好,因为默认执行以后使用的是大型网络vgg16,其他的参数主要为:
def parse_args(): """Parse input arguments.""" parser = argparse.ArgumentParser(description='Faster R-CNN demo') parser.add_argument('--gpu', dest='gpu_id', help='GPU device id to use [0]', default=0, type=int) parser.add_argument('--cpu', dest='cpu_mode', help='Use CPU mode (overrides --gpu)', action='store_true') parser.add_argument('--net', dest='demo_net', help='Network to use [vgg16]', choices=NETS.keys(), default='vgg16') args = parser.parse_args() return args
这个函数大家可以看到,能够传入示例脚本的有--gpu 这里选择使用哪一块gpu,默认是0,传入的参数是数字,也就是说,不能使用-a来制定使用所有的gpu核来进行训练;--net参数,选择你要使用的是哪一个网络,网络的脚本dict如下:
NETS = {'vgg16': ('VGG16', 'VGG16_faster_rcnn_final.caffemodel'), 'zf': ('ZF', 'ZF_faster_rcnn_final.caffemodel')}
这里提供一个格式,后面进行预测的时候可以去定制。
至此执行以后一般不会不会成功,应该说一定不会成功,还有faster-rcnn的caffemodel和prototxt文件还没有下载,在$FRCNN_ROOT的data/script中有脚本,打开fetch_faster_rcnn_models.sh文件,按照上面引用博客里面的方法,拿到链接地址以后使用下载工具去下载,这样速度会快很多,prototxt文件在$FRCNN_ROOT的model中已经有文件存在了,到时候注意路径选择合适的文件就好了。(需要下载的文件已经放到网盘,大家可以下载)
至此,执行demo的示例步骤也结束了。
三、使用示例脚本对官方数据进行训练
在$FRCNN_ROOT的experiments/script中有脚本可以使用,名字为:faster_rcnn_end2end.sh,脚本里面需要下载的的数据集为VOC2007,在上面提供的云盘地址中有资源存在了,可供下载。将数据集可以下载到自己的硬盘里面,然后把挂载的硬盘路径通过软链接链接到$FRCNN_ROOT的data/路径中,这样暂时在数据集上没有问题了。
脚本中提供的路径都不是正常的路径,需要将全局变量添加进去,比如这一句:
LOG="experiments/logs/faster_rcnn_end2end_${NET}_${EXTRA_ARGS_SLUG}.txt.`date +'%Y-%m-%d_%H-%M-%S'`"
系统中是不存在这个地址路径的,需要在前面加上$FRCNN_ROOT,即为:
LOG="$FRCNN_ROOT/experiments/logs/faster_rcnn_end2end_${NET}_${EXTRA_ARGS_SLUG}.txt.`date +'%Y-%m-%d_%H-%M-%S'`"
其他地方也是类似,也可以在前面加上../../ 使用相对路径来完成。
未完待续。。。。。
- 使用caffe框架利用faster-rcnn来训练自己的数据集
- 使用自己的数据训练Faster-RCNN
- 使用faster rcnn训练自己的数据-制作数据集
- Faster RCNN 训练自己的数据集
- Faster-RCNN训练自己的数据集
- Faster-RCNN训练自己的数据集
- faster Rcnn训练自己的数据集
- Faster-Rcnn训练自己的数据集
- 使用py-faster-rcnn训练自己的数据集
- ubuntu14.04+cuda8.0+caffe下使用自己的样本数据训练faster-rcnn
- caffe学习(七):使用py-faster-rcnn来训练voc2007数据集(Ubuntu)
- 深度学习Caffe实战笔记(20)Windows平台 Faster-RCNN 训练自己的数据集
- Caffe学习系列——Faster-RCNN训练自己的数据集
- py-faster-rcnn算法caffe配置,训练及应用到自己的数据集
- 仿照VOC2007制作自己的数据集,并在Caffe上训练Faster-RCNN
- caffe 使用自己的数据集训练faster-rcnn
- 使用py-faster-rcnn训练自己的数据
- 使用Faster-RCNN训练自己的训练集
- Java中使用IO流实现大文件的分裂与合并
- 知识点:page visibility (页面可见性)
- AndroidStudio下载、配色以及初始化配置
- Android 掌握自定义LayoutManager(二) 实现流式布局
- java非访问修饰符
- 使用caffe框架利用faster-rcnn来训练自己的数据集
- win7下编译VLC
- Struts2标签
- c++中“箭头(->)”和“点号(.)”操作符的区别
- 不可错过的仿IOS删除应用的晃动动画&文本标签编辑的晃动动画小案例
- 如何正确理解商业智能(BI)?
- 驱动复习(mor8)
- Android事件分发机制
- 基于java swing的坦克大战游戏