caffe-py faster rcnn caffe训练的时候应该是哪个层出了问题

3979人阅读
caffe(4)
最近在研究caffe,前前后后差不多快一周了,论文看得比较少,直接上手来做的,期间遇到无数问题,大大小小的无数问题,不过通过上网,看别人的博客,几乎踩了很多大坑,这里给大家总结一下,希望后续同样做深度学习的小伙伴能够少踩点坑。在这里,我就不做重复功了,具体的配置还有改动的地方我会引用别人的博客,然后补充说明这些博客介绍得并不全面的地方。
备注:以下内容会不定期更新,该篇博客主要对安装caffe使用faster-rcnn中出现的问题进行分享,配置还有使用部分引用网上其它博客。
文件下载地址:链接:/s/1qYnjZCo 密码:g7bo
实验目的:实验室最近要开始做深度学习,配置了一台K80服务器,按现在的水平显卡性能属于中等偏上,不过做做实验应该是够了。最初打算先实现个最简单的目标检测,即人脸检测,目的很简单,就是输入一张图片,判断有没有人脸,并且把人脸部分用box给框出来。
实验工具:caffe框架
&&&&&&&&&&&&&&&&& faster-rcnn
主要语言:C++, Python
实验步骤:
一、caffe框架的配置
&&&&&&&&&&&&&&&&& 这里给出rbg大神在github上的地址:/rbgirshick/py-faster-rcnn
&&&&&&&&&&&&&&&&& 这里要注意,caffe的框架一定要使用rbg大神github上的版本,不建议使用伯克利大学维护的那一份caffe的代码,具体的原因主要是,使用faster-rcnn方法的这个版本的caffe比较老,现在官方维护的那个版本改动了一些部分,而且rbg大神使用了Python layer来定义了caffe中的数据层(data layer),所以在编译的时候需要将Python layer打开,这个之后会讲到。按道理,config文件修改合理的话肯定不会出问题的,不过建议还是使用大神的版本,比较省事。
&&&&&&&&&&&&&&&&& rbg大神的caffe配置参考这篇博客,/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/lib
这里需要注意下,确保你的Linux gcc的版本为最新版,因为版本比较老的话,编译有个部分会出错中断。
&&&&&&&&&&&&&&&&&&& 接下来就是到$FRCNN_CAFFE中编译caffe和pycaffe,执行命令
cd $FRCNN_CAFFE
make -j8 && make pycaffe&&&&&&&&&&&&&&&&&&& 暂时想不到别的会出错的地方,如果大家出现什么问题,可以再下面留言告诉我,我能解决的一定尽快解决。
&&&&&&&&&&&&&&&&&&& 至此,caffe框架的配置算是完成了。
二、运行faster-rcnn的demo
& & & & & & & & && 完成了配置以后,为了验证是否正确安装,可以到$FRCNN_ROOT的tools文件夹中,对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'`&
&&&&&&&&&&&&&&&&&&&& 其他地方也是类似,也可以在前面加上../../
使用相对路径来完成。
&&&&&&&&&&&&&&&&&&& 未完待续。。。。。
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:40407次
排名:千里之外
原创:22篇
评论:11条
(2)(4)(3)(1)(4)(2)(5)(1)6211人阅读
Faster Rcnn(26)
2013年,来自微软的rbg大神发表了基于的detection方法:。一年以后,大神单枪匹马又将自己之前的工作提升到了一个新的水平()。
2015年,来自微软亚洲研究院的Shaoqing Ren,Kaiming He研究组在rbg的基础上,进一步地将该方法提升到了实时的水平(),这也是我们今天的主题。
值得说明的是,目前在github上有两个版本的faster R-CNN,一个版本是Shaoqing Ren的版本,另外一个是rbg的版本,二者有细微的差别。此处我们使用MATLAB版本。
【依赖项】
安装faster R-CNN需要一些依赖项:
caffe(此处需要Shaoqing Ren的caffe版本,下面会具体说)MATLAB(此处使用Ubuntu14.04下的R2014b)
Step1. 下载源代码&
首先,下载源代码,在适当路径下,执行如下命令:
$ git clone --recursive https://ShaoqingRen/faster_rcnn.git11
完成源代码的下载,主义此处的--recursive是递归下载,一些DNN框架,常常喜欢将caffe作为一个submodule放在external目录下,利用这一参数可以下载所有内容。
Step2. 安装caffe
完成第一步后,这个时候,你应该已经有Shaoqing Ren版本的caffe了,下面我们要编译它。&
执行下列代码:
$ cd external/caffe
$ cp Makefile.config.example Makefile.config
$ vim Makefile.config123123
利用vim对配置文件进行修改,此处我们主要指定MATLAB_DIR路径,在适当位置加入下面内容:
MATLAB_DIR := /usr/local/MATLAB/R2014b11
接下来执行如下一系列命令,老司机应该挺熟的了吧…….
$ make all -j8
$ make test -j8
$ make runtest -j8
$ make pycaffe
$ make matcaffe1234512345
需要说明的一点是,我在执行make runtest这一命令之后,遇到了奇葩的问题”Unknown V1LayerParameter Layer type: 40”。如下图:
后来我Google了一下,发现有类似问题的还真不在!根据热心网友们的讨论结果。我发现问题出在这个文件上面(external/caffe/src/caffe/util/upgrade_proto.cpp)。我们需要补上Reshape,ROIPooling以及SmoothL1Loss这三个层,具体见下:
Step3. 下载Pre-trained Model
按理说,在MATLAB里面执行run fetch_data/fetch_model_VGG16.m就能下载了,不过天朝的网你懂得… …不过好在咱们Shaoqing Ren也是中国人,给咱们提供了百度云盘的下载地址,哈哈!
需要注意的是,这个东东下载以后,请解压到faster R-CNN根目录下,里面有5张图片以及一个名为output的文件夹(文件夹里面是pre-train好的ZF-net以及VGG16-net)。
Step4. 运行
在MATLAB下面,运行faster_rcnn_build.m和startup.m。其中前者是要编出一个东西来,是必须必须执行的。
Step5. 测试
在MATLAB下面,运行experiments/script_faster_rcnn_demo.m,就能够得到如下结果啦~~~
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:312484次
积分:4653
积分:4653
排名:第6401名
原创:85篇
转载:302篇
译文:10篇
评论:158条
研二在读,关注:深度学习,计算机视觉,机器学习,图像处理。博文主要是自己的一些总结。转载文章供资料学习(转载一些最新文章),如有侵权望告知。注:有些评论没有回复,最近比较忙不好意思。
(8)(35)(7)(14)(43)(57)(22)(16)(46)(24)(43)(42)(40)你的浏览器禁用了JavaScript, 请开启后刷新浏览器获得更好的体验!
发起了问题 o 1 人关注 o 0 个回复 o 37 次浏览 o 19 小时前
o 来自相关话题
回复了问题 o 3 人关注 o 2 个回复 o 65 次浏览 o 1 天前
o 来自相关话题
回复了问题 o 6 人关注 o 3 个回复 o 653 次浏览 o 2 天前
o 来自相关话题
发起了问题 o 1 人关注 o 0 个回复 o 56 次浏览 o 2 天前
o 来自相关话题
回复了问题 o 2 人关注 o 1 个回复 o 48 次浏览 o 2 天前
o 来自相关话题
回复了问题 o 2 人关注 o 2 个回复 o 202 次浏览 o 2 天前
o 来自相关话题
回复了问题 o 3 人关注 o 2 个回复 o 443 次浏览 o 2 天前
o 来自相关话题
发起了问题 o 1 人关注 o 0 个回复 o 39 次浏览 o 2 天前
o 来自相关话题
回复了问题 o 2 人关注 o 1 个回复 o 502 次浏览 o 3 天前
o 来自相关话题
回复了问题 o 2 人关注 o 1 个回复 o 48 次浏览 o 3 天前
o 来自相关话题
回复了问题 o 3 人关注 o 2 个回复 o 958 次浏览 o 3 天前
o 来自相关话题
发起了问题 o 1 人关注 o 0 个回复 o 39 次浏览 o 3 天前
o 来自相关话题
回复了问题 o 3 人关注 o 2 个回复 o 294 次浏览 o 3 天前
o 来自相关话题
回复了问题 o 2 人关注 o 2 个回复 o 536 次浏览 o 3 天前
o 来自相关话题
回复了问题 o 3 人关注 o 2 个回复 o 63 次浏览 o 4 天前
o 来自相关话题
回复了问题 o 2 人关注 o 1 个回复 o 58 次浏览 o 4 天前
o 来自相关话题
发起了问题 o 1 人关注 o 0 个回复 o 48 次浏览 o 4 天前
o 来自相关话题
回复了问题 o 2 人关注 o 2 个回复 o 472 次浏览 o 4 天前
o 来自相关话题
发起了问题 o 1 人关注 o 0 个回复 o 56 次浏览 o 4 天前
o 来自相关话题
回复了问题 o 2 人关注 o 2 个回复 o 235 次浏览 o 5 天前
o 来自相关话题
适合初级用户(开放加入)
适合中级用户(受邀加入)
361 个问题, 494 人关注
105 个问题, 448 人关注
136 个问题, 544 人关注
42 个问题, 334 人关注
24 个问题, 319 人关注
30 个问题, 32 次赞同
28 个问题, 18 次赞同
35 个问题, 10 次赞同
11 个问题, 10 次赞同
20 个问题, 46 次赞同caffe(4)
第一部分:制作自己的数据集
实验中我用的数据集是471张行人图片(由于部分原因,数据集不能公开,望大家见谅),标出其中的行人位置作为数据标签,所以我只检测了一类,原来的voc是检测20类的,这里我们为了做实验的方便,所以选择一类训练,加上背景为两类。
1、所需文件
保留data/VOCdevkit2007/VOC2007/Annotations和ImageSets和JPEGImages文件夹名称,删除其中所有的文件(保留文件夹),并删除SegmenttationClass和SegmentationObject文件夹(用不到)。其中Annotations保存标签txt转换的xml文件,ImageSets保存train.txt、trainval.txt、test.txt、val.txt四个文件分别储存在layout、main和Segmentation文件夹中,最后JPEGImages保存所训练的数据。完整格式图片如下图所示:
2、Annotations中xml文件的制作
(1)标签txt可以使用matlab或python程序制作,这里不再赘述,文件格式:
(2)xml文件生成所需matlab运行文件在此提供链接代码(链接:/s/1o85scXG 密码:mo3r),生成格式如下:
3、ImageSets中的trainval文件制作可以参考我的链接(链接:/s/1midBOjY 密码:jelr),具体制作代码这里不再提供,大家可以用matlab或Python编写。
&第二部分、修改调用文件
1、&prototxt配置文件
models/pascal_voc/ZF/faster_rcnn_alt_opt文件夹下的5个文件,分别为stage1_rpn_train.pt、stage1_fast_rcnn_train.pt、stage2_rpn_train.pt、stage2_fast_rcnn_train.pt和fast_rcnn_test.pt,修改格式如下:
(1)stage1_fast_rcnn_train.pt和stage2_fast_rcnn_train.pt修改参数num_class:2(识别1类+背景1类),cls_score中num_output:2,bbox_pred中num_output:8。(只有这3个)
(2)stage1_rpn_train.pt和stage2_rpn_train.pt修改参数num_class:2(识别1类+背景1类)
(3)fast_rcnn_test.pt修改参数:cls_score中num_output:2,bbox_pred中num_output:8(只有这2个)
2、&修改lib/datasets/pascal_voc.py
self._classes = ('__background__', # always index 0
& & & & & & & & & & & & & & &&'people')(只有这一类)
3、修改lib/datasets/imdb.py
数据整理,在一行代码为&boxes[:,
2] = widths[i] - oldx1 - 1下加入代码:
&for b in range(len(boxes)):
& & & if boxes[b][2]& boxes[b][0]:
& & & & &boxes[b][0] = 0
4、修改完pascal_voc.py和imdb.py后进入lib/datasets目录下删除原来的pascal_voc.pyc和imdb.pyc文件,重新生成这两个文件,因为这两个文件是python编译后的文件,系统会直接调用。
终端进入lib/datasets文件目录输入:
python(此处应出现python的版本)
&&&importpy_compile
&&&pile(r'imdb.py')
&&&pile(r'pascal_voc.py')
第三部分、训练自己的数据
终端进入py-faster-rcnn下输入:
./experiments/scripts/faster_rcnn_alt_opt.sh0 ZF pascal_voc
第四部分:demo自己刚刚生成的ZF_models
1、训练完成之后,将output/faster_rcnn_alt_opt/voc_2007_trainval中的最终模型ZF_faster_rcnn_final.caffemodel拷贝到data/faster_rcnn_models(删除以前生成类似的model)中。
2、修改/tools/demo.py为:
(1) CLASSES =('__background__',
&&&&&&&&&&&&'people')(只有这两类)
(2) NETS ={'vgg16': ('VGG16',
& & & & & & & & & & & & & & & & & & 'VGG16_faster_rcnn_final.caffemodel'),
& & & & & & & & & &&&'zf': ('ZF',
& & & & & & & & & & & & & & & & & & &'ZF_faster_rcnn_final.caffemodel')}
(3)在训练集图片中找一张出来放入py-faster-rcnn/data/demo文件夹中,命名为000001.jpg。
& &im_names = ['000001.jpg'](只需这一类图片的一张,其他删除或注销)
&&&for im_name in im_names:
&&&&&&&print '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~'
&&&&&&&print 'Demo for data/demo/{}'.format(im_name)
&&&&&&& demo(net, im_name)
3、运行demo,即在py-faster-rcnn文件夹下终端输入:
./tools/demo.py --net zf
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:7014次
排名:千里之外
原创:15篇
转载:11篇
(1)(1)(3)(2)(3)(1)(1)(2)(3)(1)(8)自制作数据上的pva faster rcnn 训练
一:数据集制作,参考我的上一篇文章
数据集制作完成后将这三个文件夹复制至一个文件夹(命名为VOC2007)当中,再移动至$pva-faster-rcnn/data/VOCdevkit2007中,替换原来的VOC2007
二:训练阶段
类别设置:(有几类设置几类,我的这里只标记了1类车辆数据)
1)打开文件/models/pvanet/example_train384/train.prototxt
搜索:num_classes,有两处均改为2(背景和car);
搜索cls_score层,将num_out:21改为2;
搜索bbox_pred层,将num_out:84改为8.
2)修改lib/datasets/pascal_voc.py
self._classes = ('__background__', # always index 0
& & & & & & & & & & & & & & &&'car')(只有这一类)
3)修改lib/datasets/imdb.py
数据整理,在一行代码为&boxes[:, 2] = widths[i]
- oldx1 - 1下加入代码:
&for b in range(len(boxes)):
& & & if boxes[b][2]& boxes[b][0]:
& & & & &boxes[b][0] = 0
4)修改完pascal_voc.py和imdb.py后进入lib/datasets目录下删除原来的pascal_voc.pyc和imdb.pyc文件,重新生成这两个文件,因为这两个文件是编译后的文件,系统会直接调用。
5)记得将dataset/cache文件删除掉,如果在训练自己数据集之前存在。
本文已收录于以下专栏:
相关文章推荐
继fasterrcnn后,又一个pva-fasterrcnn的配置教程,希望可以帮助大家。
环境:windows,GTX960,VS2013
解决办法:
显卡爆了。如果还未解决,那就是显卡本身的问题了。改用Titax
网上办法:
AI时代,机器学习该如何入门?
对于机器学习,很多人的观点是:机器学习技术是今后所有技术人员都绕不过的一个门槛。 那么,普通程序员该学习机器学作为一名对机器学习心有向往的程序员,我该以什么样的姿势开始呢?
训练可以参考这篇文章:
http://blog.csdn.net/samylee/article/details/
继fasterrcnn后,又一个pva-fasterrcn...
感受野(receptive field)是怎样一个东西呢,从CNN可视化的角度来讲,就是输出featuremap某个节点的响应对应的输入图像的区域就是感受野。
比如我们第一层是一个3*3的卷积核,那么...
前言:数据样式参照PASCALVOC
一:搜集图片,或者视频数据等,利用标注工具,形成图片信息以及注释信息。
标注工具,自己编写的,可以拿去使用:
二:通过xml文件以及图片信息形成ImageSe...
仿照VOC2007制作自己的数据集,并在Caffe上训练Faster-RCNN
一:数据集制作,参考我的上一篇文章http://blog.csdn.net/qq_/article/details/
数据集制作完成后将这三个文件夹复制至一个文件夹(...
1.训练数据的准备VOC2007数据格式,和faster-rcnn数据一样,数据集组织结构和制作参见:
[训练样本制作](http://blog.csdn.net/burning_keyboard/a...
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)}

我要回帖

更多关于 faster rcnn cpu训练 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信