Faster-RCNN目标检测算法执行思路

我们一起来了解一下,Faster-RCNN目标检测算法执行思路是怎么样的。Faster-RCNN执行思路主要就是看懂这幅图,这幅图里面包含了非常非常多的内容,然后我们一起来梳理一下,这么多内容,它是怎么样进行连接的。
在这里插入图片描述

我们首先来看,左上角的这幅图就是我们输入到Faster-RCNN的P×Q的原始图:
在这里插入图片描述

这就是我们Faster-RCNN的一个输入,当这样一张图片输入到我们这个Faster-RCNN的时候,首先要进行一个resize,把它的最小边固定到600,然后它的长宽比是保持不变的,这样的话,我们输入到Faster-RCNN的图片其形状就不会失真,接着我们会把这样一张图片传入到Backbone里面:
在这里插入图片描述

Backbone就是我们的Faster-RCNN的主干特征提取网络。
一般来说这个Backbone可以选择的范围有很多,常见的就是VGG、Resnet、Xception等等,这些都是非常优秀的主干特征提取网络。
然后我们这篇文章是以Resnet50来演示Faster-RCNN的执行过程,这个Backbone也就是Resnet50,我们输入进来的图片经过这个Backbone之后,它的长和宽就会被压缩四次,假设我们输入进来的图片它的长和宽是600×600的时候,它的输出就是一个38×38×1024这样一个特征层。也就是我们在这幅图上的就是这个Feature Map
在这里插入图片描述
它是38×38×1024这样一个特征层,这个特征层,我们可以把它叫做共享特征层,因为我们在后面的操作里面的操作里面会多次使用到这个特征层,大家可以看到这个Feature Map,它有两个不同的前进方向,我们首先来看一下,这个Feature Map往左走,都经过了什么样的操作。
在这里插入图片描述

首先,它进行了一个3×3的卷积,然后再进行了两次1×1的卷积。这两个1×1的卷积它是分开的,其中一个1×1的卷积它的通道数是9,另外一个1×1的卷积它的通道数是36:
在这里插入图片描述

那么我们要怎么样理解这个9和36呢,我们要回到这个共享特征层来看一下,当我们输入进来的图片,它的shape是600×600的时候,我们的共享特征层它的shape就是38×38×1024。
在这里插入图片描述

这个38×38就相当于把我们输入进来的图片,也就是这个图片:
在这里插入图片描述
划分成了38×38的网格,然后每个网格上面,又存在着若干个先验框,对于我们的Faster-RCNN的网络来讲,每个网格上默认的先验框的数量是9,然后这个先验框是我们事先标定好的,它在我们的图片上的具有一定的shape。
当我们入进来的图片是600×600的时候,我们先验筐的总数量就是38×38×9,也就是12996个先验框。
然后我们在这个地方的预测结果:
在这里插入图片描述

也就是这个图片的预测结果,事实上也就是对我们的先验框进行调整。
然后这个9就是判断我们每一个网格上每一个先验框的内部它是否包含了物体。然后这个36,就可以拆分成四4×9,这个4呢就是我们先验框的调整参数,所以这个36,就是我们每一个网格上每一个先验框的调整情况,通过左边这一部分的网络,我们就可以获得了我们原始的先验框内是否包含物体,而且还有它的一个调整参数,这个先验框调整完的结果也就是我们的建议框:
在这里插入图片描述

这个建议框它的作用事实上是对我们输入进来的图片进行区域的粗略筛选,然后尽可能的找到包含目标的区域,然后这样一个区域,就会传入到我们的ROIpooling层中:
在这里插入图片描述

所以我们的ROIpooling层有两个输入,其中一个是我们的共享特征特征层,另外一个就是我们的建议框:
在这里插入图片描述

之后,这个ROIpooling层就会利用我们的建议框,在我们的共享特征层上进行截取,为什么不是从原图中进行截取,而是在我们的共享特征层从中进行截取,事实上我们的共享特征层就是把我们的原图,划分成了不同大小的网格,然后我们的共享特征层上的每一个点,事实上,就是我们原图上某一个区域的特征的集合。
在这里插入图片描述

所以我们的建议框只需要在我们的共享特征层上进行截取就可以了,如果我们在原图上进行截取的话,我们还需要把我们的原图穿过我们这个主干特征提取网络进行特征提取,这样就多此一举了。
在这里插入图片描述
然后我们利用这个建议框获得的局部共享特征层,它的shape可能是不一样的,所以我们这个ROIpooling层会把我们获得了局部共享层都resize到同一个shape上,也就是14×14这样的shape上:
在这里插入图片描述

然后我们会获得非常非常多同样shape的局部共享特征层,这样一个局部共享特征层,会经过下一步的操作。
下一步的操作分为两步,其中一步是获得我们这个建议框的调整参数,事实上,这个建议框就是我们后面这个部分它的先验框:
在这里插入图片描述

我们的预测结果就会对我们的建议框进行调整,然后获得最终的预测结果,还有一部分呢,它会经过我们这一个softmax,获得我们这个建议框里面它所包含的种类到底是什么。
在这里插入图片描述
然后通过这么多的操作,我们就可以获得了我们建议框的调整参数,还有它内部包含的种类是什么。

我再来给大家简要理一下整个Faster-RCNN目标检测网络的执行思路是怎么样,一张图片输入进这个Faster-RCNN网络的时候:
在这里插入图片描述

它会进行resize,resize的结果会穿过我们的resnet50,也就是我们的主干特征提取网络:
在这里插入图片描述

然后我们会获得它的共享特征层,共享特征层会往左走,获得我们的建议框:
在这里插入图片描述

然后这个建议框是对我们原始的图片也就是我们输进来的图片,它的区域进行一个粗略的筛选,然后尽可能的找出包含目标的区域。
然后会传入到我们这个ROIpooling层中,ROIpooling层会利用这个建议框在我们的共享程层上进行截取:
在这里插入图片描述
由于我们获取的局部共享层它的shape是不一样的,所以我们的ROIpooling层会把我们的局部共享特征层进行resize,把它们resize到同一个特征层上。
在这里插入图片描述

然后我们在这个地方就获得了比较多的局部共享层,然后他们的shape是一样的。
这个局部共享特征层,会经过两步的操作,其中一步就是Bbox_pred,这个Bbox_pred可以获得我们建议框的调整参数,这个建议框事实上是我们后半部分的一个先验框。Bbox_pred它会对我们的建议框进行调整。
在这里插入图片描述

然后还有一部分就是cls_pred,它首先会进行一个softmax,事实上它就是我们建议框内包含的物体的种类,然后经过这么多的操作之后,我们就可以获得一个Faster-RCNN目标检测网络的结果了。
因此,Faster-RCNN预测思路是先进行粗略的筛选,然后再进行一个精细的调整,希望大家可以理解。

  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值