DL开源框架Caffe | 目标检测Faster-rcnn训练自己数据问题整理
2017-05-23 17:03
746 查看
数据集制作
Pascal_voc数据集可以做目标检测,目标分割,识别等任务,本文主要针对目标检测的任务,因此只需要其中几个文件夹,也就是我们制作自己的数据集时只需按照这个仿造就可以。下面是VOC2007的数据集文件目录结构,我们只需要文件夹Annotations, ImageSets, JPEGImages, 其中JPEGImages中存放自己数据集的原始图像;Annotations中存放的是图像对应的XML文档;ImageSets中的Main中主要存放train.txt等文件。第一步:图片命名,类VOC格式
虽然说图片名对训练没什么影响,但建议还是按VOC2007那样,如“000005.jpg”这种形式。至于图片格式,代码里是写的jpg。
[Matlab代码链接]
第二步:标注软件
使用软件制作成XML格式文件,注意看VOC2007中的XML文件的形式以及内容,本文推荐3个软件标注。
1.[window7标注软件]
2.[LabelImg]
3.[Object_LabelImg]
上述第一个链接生成的不是XML文档,还需按照链接中生成;第二个链接是官方原版的LabelImg,但其多个版本都有一些小问题,最新的版本中生成的XML文档第一个是filename没有图像后缀格式,第二个是内容的缩进格式同VOC不一致;第三个链接生成的XML文件中没有解决图像后缀格式的问题,但是格式正确,解决问题的代码链接如下:
import xml.dom.minidom as xdm import glob path = './Annotations/' items = glob.glob(path+'*.xml') train_txt = 'train.txt' for item in items: dom = xdm.parse(item) root = dom.documentElement # change folder name folder_dom = root.getElementsByTagName('folder') print folder_dom[0].firstChild.data folder_dom[0].firstChild.data = 'VOC2007' # change image name image_dom = root.getElementsByTagName('filename') print image_dom[0].firstChild.data with open(train_txt, 'a+') as f: f.write(image_dom[0].firstChild.data) f.write('\n') image_dom[0].firstChild.data = image_dom[0].firstChild.data + '.jpg' with open(item, 'w') as f: dom.writexml(f, encoding='utf-8')
第三步:新建文件夹,命名为Annotations,将xml文件放到其中;
注意标签中尽量都使用小写字母,若最终想显示中文名字:
[点击这里可以参考]
第四步:新建文件夹,为JPEGimages,将训练图片放到其中;
第五步:新建文件夹,ImageSets\Main里的四个txt文件;
上述两个步骤,参考博客[链接]
训练遇到问题
第一个问题:pb2.text_format.Merge(f.read(), self.solver_param) AttributeError: ‘module’ object has no attribute ‘text_format’
原因: 这个问题是由于google的protobuf的问题,关于这个的版本要小心操作!
解决办法:先采用第一种方法,需要再lib/fast_rcnn/train.py中添加:
import google.protobuf.text_format
若上述方法无效,可能配置环境的过程中,protobuf的版本无意中发生改动:pip install protobuf==2.6.0
第二个问题:
TypeError: slice indices must be integers or None or have an index method
原因:这是由于numpy的版本太高,numpy 1.12.0对这个做了些调整,把numpy降级到1.11.0就行了。
解决:查看numpy版本并对其进行降级,代码如下
python --version #查看python版本 python -c "import numpy; print numpy.__version__" #查看numpy版本 python -c "import numpy; print numpy.__file__" #查看Numpy安装路径 sudo pip install -U numpy==1.11.0 #进行Numpy降级
另外一种比较特殊的情况,服务器中有两个python,2.7和3.4,而系统默认pip是装在python3.4上的。
输入:pip –version
显示:pip 9.0.1 from /usr/local/lib/python3.4/dist-packages (python 3.4)
执行以下代码,装到强制装到python2.7中:
sudo python2.7 /usr/local/bin/pip install -U numpy==1.11.0
相关文章推荐
- DL开源框架Caffe | 目标检测Faster-rcnn问题全解析
- caffe框架下目标检测——faster-rcnn实战篇问题集锦
- 使用caffe框架利用faster-rcnn来训练自己的数据集
- caffe框架下目标检测——faster-rcnn实战篇问题集锦
- faster rcnn训练自己地数据时遇到地问题
- faster rcnn训练自己地数据时遇到地问题
- faster rcnn训练自己地数据时遇到地问题
- windows下使用自己制作的数据集训练faster-rcnn(tensorflow版)用于目标检测
- faster rcnn训练自己地数据时遇到地问题
- Caffe学习系列——Faster-RCNN训练自己的数据集
- faster rcnn训练自己地数据时遇到地问题
- caffe框架下目标检测——faster-rcnn实战篇操作
- faster rcnn训练自己地数据时遇到地问题
- faster rcnn训练自己地数据时遇到地问题
- faster rcnn训练自己地数据时遇到地问题
- faster rcnn训练自己地数据时遇到地问题
- Ubuntu16.04+cuda8.0+cudnn5.1配置faster-rcnn的方法以及训练自己的数据出现的问题
- faster-rcnn训练和测试自己的数据(VGG/ResNet)以及遇到的问题
- py-faster-rcnn(caffe)配置和运行,训练自己的数据
- DL开源框架Caffe | 用训练好的模型对数据进行预测