Faster-RCNN基础学习

最近要跑GBD-Net, 作者提供finetune的例子是在voc2007数据集上,但是训练的标签却是下图这样:

图1

与常见的标签差异很大,分析了一下午也没分析出头绪,多亏师姐点醒,这是RPN的输出结果,仔细想来的确是这样。

GBD实际上只是一个深度网络中的模块,插入在RPN后面,输入的是roi,而作者提供的仅仅是GBDNet模块的训练。论文中也有说明:

图2

输入是 candidate Box。这样算是大概理清了,但还有以下问题:

1.作者使用了MPI,那么单个GPU能不能运行?

2.ROI标注txt里面的信息都是什么意思?

3.如果要训练自己的数据集,也是只finetune GBD吗?那RPN的结果(ROI标签)该怎么生成?

------到此觉得有必要去了解一下faster-rcnn目标检测流程----

故事从一张老旧泛黄的截图开始:

图3

流程描述:

1)原始图像进入CNN网络,提取特征,得到Feature Maps

2 )  Feature Maps 输入到 Region Proposal 网络:RP网络实际上就是对基于输入Feature map 生成的所有框进行一个筛选,选择经过CNN之后有反应的区域,是一个筛选的过程,因为只关注有反应,所以这个时候并不判断它属于哪一类。当一个框进入RP的时候,滑动得到一堆框,在Classification Loss中计算这些框有没有ROI(感兴趣区域,即CNN有无响应这一块)如果可能是目标而不是背景,就把这个对应的bounding box留下。将所有留下的框输入到Roi-pooling里面。

    Roi-pooling的作用就是将不同大小的框抠出来,并且resize到统一大小去做分类,因为分类需要大小统一的输入。当然达到这个目的还有另一个方法 Interpolation,但pooling在反向传播的时候计算方便,所以用得多。

3)计算之后对bounding box进行微调,得到最终的bounding box

RPN输出:

图4

    对于一个的Feature Map,RPN首先对用滑动窗得道一些基础窗口,对于单个sliding window而言,只要知道中心锚点,就可以生成多个anchor box,然后经过一个中间层之后,输入到cls layer 计算正负置信度;输入到region layer得到4个坐标(这里是绝对坐标还是偏移量没研究过)

总结:

    对应GBDNNet,作者提供的finetune数据就是RPN的生成结果(图1),所以现在能够解释一下问题2的一部分:这个txt文档里面有:#图片序号、image path、以及生成的anchor坐标、正置信度。而GBD作者给的训练txt里面还多了一些东西,就是类,比如第195。而第三到第七行以及第八行的第7-10列还不清楚是什么。

图5

思路:

    如果要训练自己的数据,首先就是要确定自己只有一块TITIAN XP能不能训练,其次就是我能不能进行finetune整个模型而不是仅仅GBD部分,不能的话能不能参考作者给出的样例只用ROI训练GBD,那么这样的话如何生成自己图像的ROI和训练label.txt。这是接下来尝试的方向。

   如果有研究GBD的小伙伴希望能一起讨论下。

猜你喜欢

转载自blog.csdn.net/gusui7202/article/details/80618711