R-CNN

关于R-CNN的个人理解

背景

在这里插入图片描述

此作可说是真正意义上的目标检测的开篇之作,为后续的目标检测的文章提供了强大的理论指导性。

思想

该算法属于多阶段网络,即在训练该模型的时候,并不能以端到端的形式直接优化参数,并且操作起来十分复杂,计算量也很大,但在这之前却并没有很好的目标检测算法。首先作者利用SS搜索算法在图像上选取出大约2000个区域(每个区域的尺寸都是随机的,并不相同),之后将每个区域缩放到相同的尺寸(默认为227 * 227),以便更好的缩入预先训练好的分类模型中(默认为AlexNet)得到每一个区域的特征向量;其次再将得到的特征向量用于类别预测与box预测。

模型结构

该模型为VGG16+SVM分类器+box修正回归器,VGG16的输入尺寸要求227 * 277 ,输出为一个4096长度的向量,而SVM分类器则是一个输出尺寸为20特征向量(所要预测的总类别数)的全连接层,box修正回归器也是一个全连接层,只不过它的输出尺寸为4(为相对于原区域框的缩放比值)。

训练阶段

训练过程中所用的损失函数包含两个方面:box类别损失以及有目标的box边框修正损失。既然是训练,就需要标定正负样本,在该论文中的规则为:计算每一个区域与GT之间的IOU,如果IOU大于设定的阈值(默认为0.3),则为正样本(参与所有损失计算),其余为负样本(仅参与类别损失)。

  1. box类别损失
    包含正负样本都计算类别损失,采用的损失为二值交叉熵,另外需要注意的是最后预测出的每一个box的类别概率并不是经过Softmax生成的,而是经过Sigmoid函数。因为作者发现由于模型每一次的输入并不是整张图像,而Softmax对随机的完整样本感兴趣,因此采用Softmax反而会降低模型的预测效果。

  2. box边界框修正损失
    通过全连接层预测每一个最终box相对于区域框的缩放比例,来得到最终的预测框。以下为计算的相关公式:
    在这里插入图片描述
    d x d_x dx d y d_y dy d w d_w dw d h d_h dh:分别为预测值。
    p x p_x px p y p_y py p w p_w pw p h p_h ph:分别为原区域框的中心点坐标、宽高。
    而在计算损失的时候,采用的是计算预测值 d x d_x dx d y d_y dy d w d_w dw d h d_h dh与真实GT对应原区域框的比值的平方差。以下为计算采用的损失公式,最小二乘法。
    在这里插入图片描述
    此公式中 t ∗ i t_*^i ti代表的即是真实GT对应的真实期望值。只需要按照上述公式反着算即可,下图为计算公式。
    在这里插入图片描述

测试阶段

在得到每个区域相对于每个类别概率值以及最终的box坐标信息后,我们需要使用非极大值抑制算法,去除冗余的box。具体做法就是:先在每一个类别上选取得分最高的box,然后将其与其余所有的box计算IOU,如果IOU超过设定的阈值(默认为0.5)则舍弃,后再在剩余的框中继续重复上述的操作。紧接着对每一列(即每一类),都重复上述两个步骤,得到每一类的剩余框,最后再去除每一类中得分低于阈值的框,得到最终的预测框。但其实我觉得这样会存在一个问题,一直困扰着我,那就是如果有多类怎么办,按照此种方式每一个类别都把所有2000个区域计算一遍,就有可能导致最后一个框在多个不同类别中多次保留下来,那么我们怎么区分呢。下面给出我的猜想,我认为我们只需要对剩余的被多次保留的框,只选取得分最高的类别概率,作为最终的类别得分,这样就不会重复了,后续再利用修正器对剩余框进行box修正。

总结

如理解存在纰漏,敬请指正,谢谢!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值