目标检测算法R-CNN系列之Faster R-CNN

        Faster R-CNN是在Fast R-CNN的基础上做了进一步的改进,主要解决的问题就是候选框的生成,通过使用anchor box机制,大大的提高了检测的速度以及效果。有关R-CNN以及Fast R-CNN可以点击链接,进行了解。下面将详细的介绍Faster R-CNN目标检测算法。
        1、网络架构
在这里插入图片描述
        从上图中,我们可以清楚的看到Faster R-CNN目标检测算法的检测流程:
                <1>、将输入图片传到主干特征提取网络中,进行特征提取,得到有效特征层
                <2>、有效特征层有两个去处,一个是传递到RPN网络当中,另一个是传递到ROI Pooling层
                <3>、有效特征层在RPN网络当中进行分类和回归,得到建议框(后面将详细的解释这个过程)
                <4>、将RPN网络中得到的建议框,以及有效特征层传递到ROI Pooling层中,利用建议框在有效特征层上进行截取,并将截取到的内容,统一大小后继续向后传递
                <5>、最后再对ROI Pooling层的输出,进行分类和回归,得到最终的预测结果,也就是预测框以及预测框中物体的种类
Faster R-CNN网络架构
        2、RPN网络
        Faster R-CNN目标检测算法中,最为重要的一个概念就是RPN网络。它的主要目的就是为了对先验框(anchor box)进行初步的调整,得到建议框,为之后的精调打下基础。
        下面详细的介绍,RPN网络是如何从先验框产生建议框的:
                首先,输入图片通过主干特征提取网络得到了有效特征层,假设有效特征层的形状是:(H, W, C),那么我们将有效特征层划分成H*W个网格,每个网格中设置K个anchor box,这K个anchor box(先验框)具有不同大小以及形状,目的是为了框住不同大小形状的物体。通过感受野的概念,我们知道有效特征层中的每个区域都对应着原始图像中的某片区域,通过划分网格,并且在每个网格中设置anchor box的方式,就相当于在原始图像当中画了非常多的框。因此在有效特征层上总共有: H ∗ W ∗ K H*W*K HWK个anchor box
                之后,RPN网络对有效特征层先做一个 3 ∗ 3 3*3 33的卷积,然后再分别做一个 1 ∗ 1 1*1 11的卷积。其中一个 1 ∗ 1 1*1 11卷积的filters=18,因为Faster R-CNN中K=9,也就是每个网格设置9个anchor box, 18 = 9 ∗ 2 18=9*2 18=92表示对每个anchor box做一个二分类,判断anchor box中是否包含物体的概率(注意,这里并不是判断anchor box中物体的类别,而只是判断是否包含物体)。另一个 1 ∗ 1 1*1 11卷积的filters=36, 36 = 9 ∗ 4 36=9*4 36=94表示对每个anchor box产生位置调整参数,通过位置调整参数,我们就可以得到建议框。
        3、预测过程
        下面对预测的整个过程进行梳理:
                <1>、输入一张图片,通过主干特征提取网络,得到有效特征层
                <2>、将有效特征层传递到RPN网络当中,得到分类和回归的结果
                <3>、利用回归得到的位置调整参数,对anchor box进行调整,得到建议框
                <4>、由于建议框的数量太多,要先对其进行筛选,首先根据是否包含物体的概率,筛选出得分比较高的一些建议框,之后采用非极大值抑制,去除掉重叠比较多的一些框,得到最终的建议框
                <5>、利用建议框在有效特征层上进行截取,得到建议框的内容,由于产生的建议框大小不一,因此通过ROI Pooling层,进行统一形状
                <6>、之后将统一大小的建议框与全连接层进行连接,分别做分类和回归。分类是判断建议框中物体所属的类别(分类中,将背景也作为了一个类别,它其实代表的就是置信度),回归是得到建议框的调整参数,通过调整参数得到预测框。
                <7>、根据置信度,对建议框进行筛选,得到置信度比较高的建议框,然后通过位置调整参数将建议框转为预测框,最后采用非极大值抑制,得到最终的预测框
        4、损失函数
        Faster R-CNN的损失由两个部分组成:RPN网络的损失以及最后分类回归产生的损失。这两个部分的损失都包含了分类的损失和回归的损失,下面分别介绍分类损失和回归损失
                <1>、分类损失
                首先,对于正负样本(正样本就是前景,也就是包含物体;负样本就是背景,不包含物体),我们都是需要计算分类损失的,但是负样本的数量要远远多于正样本的数量,因此我们首先要做的就是筛选掉一些负样本,让正负样本的数量能达到平衡。做法就是计算负样本(不包含物体的框)与真实框的IOU值,然后设置一个IOU阈值,小于阈值的负样本保留,大于阈值的负样本忽略。这样就可以得到一定数量的建议框(正负样本均衡),在RPN网络以及最后都是这样做的。
                之后,就需要定义分类损失函数了。由于RPN网络所做的分类是一个二分类,那么就可以使用二分类交叉熵损失函数来计算损失。而最后的分类是一个多分类,可以使用多分类交叉熵损失函数计算损失了。这里需要注意的是,在RPN网络当中,真实值是样本的标签,预测值是建议框。在最后的分类与回归当中,真实值是建议框,预测值是预测框。
                <2>、回归损失
                首先,对于回归损失,我们只需要计算正样本(包含物体的框),也就是前景。在RPN网络当中,由于二分类就是用来判断anchor box中是否包含物体的,那么根据二分类的结果,我们就可以筛选出正样本。在最后的分类与回归中,分类是将背景也作为了一个类别,其实它代表的就是置信度,也就是一个框中是否包含物体的可能性,那么根据置信度,就可以筛选出正样本。这里需要注意的是,在RPN网络当中,真实值是样本的标签,预测值是建议框。在最后的分类与回归当中,真实值是建议框,预测值是预测框。
                接下来,就是要定义回归损失函数了。Faster R-CNN采用的是Smooth L1 Loss Function:
在这里插入图片描述
                其中x表示预测值减去真实值得到的差值

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值