外星人跑深度学习_深度解析Faster RCNN(1)---咱们先实战

1.前言

想起上次学FasterRCNN的时候,已经离现在有4个月了,那时候的确看的我云里雾里的(和很多初学者一样),我的深度学习是从keras之父肖奈《python深度学习》开始的,的确那本书是深度学习初学者的福音,可以浅层地了解到深度学习的相关知识,并且也能够使用keras框架搭建一些简单的深度学习模型。但是,想学习深度学习,那本书还是不够的。比如FasterRCNN框架,开源的有caffe和tensorflow等版本的(我学的就是tensorflow)版本的。如果仅仅掌握Keras框架,看FasterRCNN代码还是比较吃力的,所以我这四个月开始了Tensorflow框架的学习。(什么?一个tensorflow框架学了四个月?)说起来惭愧,我作为一个刚踏入研究生生活的大学生,除了导师项目、论文和课程,挤出来学习的时间还是有限的。所以在上个月结束了tensorflow的学习,推荐的书就是那本《Tensorflow实战google深度学习框架》。

这是我的第一篇帖子,没有像其他大佬一样从深度学习基础开始讲,但是还是希望我总结的经验能够对初学者(就像前不久前的我)的学习有一定的帮助。

好了,进入主题!本次解读的对象就是FasterRCNN,是目标检测two-stage的经典之作,也是现在众多模型的基础。我相信多数初学者和我一样,看网上别人的贴子,看的似懂非懂的,什么anchor,什么RPN,什么ROIS,说懂吧,是理解了点皮毛,但是问深一点就懵了,别担心,跟着我走,一起突破FasterRCNN。

2. 打标签和训练

(不是说fasterRCNN的解读吗?怎么突然跳到训练呢)各位别急,我的顺序是针对性的,也是我自己学FasterRCNN的顺序。说实话,如果能够先把一个程序跑起来,再去了解原理,这种感觉还是挺奇妙的不是吗?

曾经作为初学者的我,不知道训练其实只要换个文件夹这么简单的事,可废了我好多时间。使用FasterRCNN模型时,输入到模型的无非就是图片集和XML文件集。那具体的文件放在哪儿呢?不妨从代码中进行了解。

在train.py文件中,以下代码获取图片集。

self.imdb, self.roidb = combined_roidb("voc_2007_trainval") 

我们跳进去,跳到函数combined_roidb中去了,在函数combined_roidb中我们只关注函数get_roidb,接着进入该函数中。很明显啦,他根据上面的名字"voc_2007_trainval",创建了一个imdb,他是一个poscal_voc类,具体代码如下:

for 

接着我们进入pascal_voc类(lib/dataset/pascal_voc.py文件)中。(我的天,代码怎么这么长?)莫慌,通过我的解读,只需几步修改就行。

self._data_path = os.path.join(self._devkit_path, 'VOC' + self._year) 

这个地址嘞,其实就是

Faster-RCNN-TensorFlow-Python3.5-masterdataVOCdevkit2007 VOC2007

突然秒懂,原来后面的图片和XML集要放在这个文件夹下。(没错,就是这么简单!)具体怎么放,接着看下面。

莫慌,还要修改一些东西。比如self._classes,没错,就是你自己定义的类别(注意你的顺序,不能少了'__background__'哦!)

举个例子,不妨我们要做一个动漫(fairly tail,其实是fairy tail, 妖精的尾巴,之前一直搞错了,现在也懒得改了啊哈哈 )人物识别的模型。我们在上面的_data_path文件夹中加入一个文件夹叫做fairly_tail。

Faster-RCNN-trainabledataVOCDevkit2007VOC2007fairly_tail

然后在fairly_tail文件夹中加入两个文件夹,如图1

42990fcd776a2163645a3e7c05412357.png
图1

显然,annotation文件夹中加入xml文件,jpeg文件夹中加入图片,(需要注意的是xml文件和jpeg文件的前缀名一样的,如frame1.jpg和frame1.xml),我们要改哪些呢?

先来看看self._classes:

self

接着修改后面函数image_path_from_index,修改里面的image_path,指向JEPG文件夹

def 

后面还有函数_load_image_set_index(),改一下image_pathannotation文件夹(或者JPEG文件夹),就是枚举一下需要参与训练的前缀名。

def 

然后转到函数_load_pascal_annotation中,改一下当中的filename地址,他是对xml文件进行解析,所以这个地址别错了。

def 

做到这里就做好了图片image和标签文件XML的索引了,如果主程序train.py没有问题的话,是可以进行直接训练的了。

最后看看效果图,还是很amazing的!

667b9e727ac1e1dda46cc13612eec2ef.png
FasterRCNN DEMO
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值