折腾faster-rcnn(二)--数据篇

标签:深度学习 Linux
Platform:ubuntu 16.04 LTS + CUDA 8.0 + OPENCV 2.4.13 + Python 2.7


demo已经成功跑完,但是训练数据集,或者更普遍的,训练自己的数据集该怎么搞呢? 请看下文,这里以Pascal VOC 2007为例:

下载Pascal VOC 2007

这里参照的是py-faster-rcnn的Beyond the demo: installation for training and testing models
下载三个文件

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
wget http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCdevkit_08-Jun-2007.tar

在data目录下,新建一个VOCdevkit2007文件夹,将这三个文件解压至此:

tar xvf VOCtrainval_06-Nov-2007.tar
tar xvf VOCtest_06-Nov-2007.tar
tar xvf VOCdevkit_08-Jun-2007.tar

下载ImageNet预训练模型

在py-faster-rcnn根目录下执行脚本:

./data/scripts/fetch_imagenet_models.sh

修改头文件protocol bufffers(以下简称protobuf)

faster rcnn有两种各种训练方式:

  • Alternative training(alt-opt)
  • Approximate joint training(end-to-end)
    这一部分是我觉得最坑的地方,没有人告诉我要改这个,只要一执行训练脚本
./experiments/scripts/faster_rcnn_alt_opt.sh 0 ZF pascal_voc

或者

./experiments/scripts/faster_rcnn_end2end.sh 0 ZF pascal_voc

就会报错:

AttributeError: 'module' object has no attribute 'text_format'

查看Python脚本,原来是protobuf出了问题,这里需要修改lib/fast_rcnn/train.py的头文件,增加一行:

import google.protobuf.text_format

顺便吐槽一下这里搞了好久,应该是protobuf更新太快了,建议作者写出protobuf的版本!!!然后执行训练脚本就行了。

第一阶段迭代完成后报错:

TypeError: 'numpy.float64' object cannot be interpreted as an index

将numpy降级:

sudo pip install -U numpy==1.11.0

看到没有,这里还需要降级numpy,真是醉了

阅读Pascal VOC文档的一些所得:

  1. 该图像集分为训练/验证集和测试集两个部分,在跑faster-rcnn的时候是混在一起的,只通过ImageSets下的txt文件来区分图像到底属于哪个集合,实际上faster-rcnn只用到了Main文件夹下的txt文件,我们自己做图像集的时候可以只做这个文件夹下的内容。
  2. Main文件夹下的有train,trainval,val,test四个文件,这是所有图像的集合,可以打开看到这里没有加类标签。其他前面加上前缀类标的同名文件也是所有图像的集合,但后面如果是1代表是本类(正样本),-1代表不是本类(负样本),0代表不确定(模糊样本,多出现在test文件里)。从集合的观点可以这么理解,所有类样本名的集合构成了以上四个文件。制作这四个文件的脚本以后会发的~~

你可能感兴趣的:(折腾faster-rcnn(二)--数据篇)