您现在的位置是:首页 >技术杂谈 >目标检测复盘 --3. Fast RCNN网站首页技术杂谈

目标检测复盘 --3. Fast RCNN

ShyHG 2024-06-17 11:26:28
简介目标检测复盘 --3. Fast RCNN

在这里插入图片描述

  • RCNN的CNN部分使用AlexNet作为backbone来提取特征,Fast RCNN使用了VGG16来作为backbone
  • RCNN将2000个框送入网络提取特征,Fast RCNN是将图像送入CNN来提取特征得到一个特征图
  • 将SS(Selective Search)算法获取的提议框映射到上面的特征图上,获取相应的每个框的特征
  • 将每个框的特征图使用ROI pooling进行缩放,固定到统一的尺寸
  • RCNN在获取结果的时候使用育训练的SVM分类器,而这里直接根据特征输出类别信息
    在这里插入图片描述
  • 样本策略并不是完全使用SS算法提供的2000个框来提取特征,而是根据策略进行采样,这样一方面保证正负样本平衡另一方面减少计算量

在这里插入图片描述

  • ROI Pooling:这里首先将特征图划分成7*7的大小,然后对每一个单元运用最大池化采样,最后输出特征图的尺寸为7*7,这种方法支持不同尺寸的输入,而不需要固定的尺寸

在这里插入图片描述

  • 获取完特征之后便开始分类,这里的输出size为N+1,这里的输出经过softmax处理(和为1)

  • 分类器:
    在这里插入图片描述

  • 回归器:
    在这里插入图片描述

  • 基于回归器对先验框做调整,注意网络的输出,用网络的输出来调整先验框的值(这个和后边YOLO系列的等anchor based方法都基本一致)

  • 这里为什么宽高是基于指数e的,一种可能的解释是 d x , d y d_x,d_y dx,dy可能是负值,为了保证最终的宽高都为正值?我觉得不太对,具体原因尚未可知,或许就是简单的一种范式吧,反正可以学习可以调整,形式不重要,哈哈哈。

在这里插入图片描述

  • 损失计算,分类损失,就是log损失,也就是softmax交叉熵损失
    在这里插入图片描述

  • 知识点回顾

  • 如果采用onehot编码,最终的多分类交叉熵的计算方式就是 l o g ( x ) log(x) log(x),注意,只有标签是采用onehot编码表示的,概率输出还是原始softmax的结果

    onehot:[0,0,...,1,.....0]
    sofmax:[0.1,0.3,...,0.4,...0.1]
    那么Loss=-log(0.4)
    

在这里插入图片描述

  • 损失计算,边界框回归损失
  • 注意这里的 v x v_x vx几个数字并不是标注结果, t x u t^u_x txu也不是输出的坐标或者宽高,他们都是中间值,经过计算才到最终的结果,标签的计算方式是通过标注结果反推,预测的结果直接由网络输出
    v x ( g t ) = G x ^ − P x P w v_x(gt) = frac{hat{G_x} - P_x}{P_w} vx(gt)=PwGx^Px
  • 这里有个 [ u ≥    1 ] [ugeq;1] [u1],含义是正样本+指示函数,只有正样本的时候才是1,这部分才参与计算损失函数
    在这里插入图片描述- 速度瓶颈在SS算法上,后面的CNN模块还是挺快的,所以Faster RCNN就重点来解决这个问题咯
风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。