当前位置: 代码迷 >> 综合 >> 目标检测笔记-Faster R-CNN
  详细解决方案

目标检测笔记-Faster R-CNN

热度:98   发布时间:2023-11-18 05:09:11.0

Faster R-CNN

1.R-CNN

  • 2014年由Ross Girshick在论文Rich feature hierarchies for accurate object detection and semantic segmentation中提出。

    捕获

1)RCNN算法流程:

? 1.一张图片生成1K~2K个候选区域(使用Selective Search方法)

捕获

? 2.对每个候选区域,使用深度网络提取特征

捕获

? 3.特征送入每一类的SVM分类器,判别是否属于该类

捕获

捕获

? 4.使用回归器精细修正候选框位置

捕获

2)R-CNN存在的问题:

? 1.测试速度慢

? 2.训练速度慢

? 3.训练所需空间大

2.Fast R-CNN

捕获

? 在选取特征值时,R-CNN需要重复计算候选区域的特征值,fast R-CNN,只需要计算整张图的特征值,然后将候选区域映射到特征图上,从而大大减少了计算量。

? 在训练时并不是选择所有的候选框,只会取一部分,训练数据的采样要有正样本和负样本,在作者的论文中,一次采用64个候选框,其中有正样本和负样本,作者认为只要候选框和真实的样本框IOU大于0.5那么就认定为正样本,小于0.5的就认证为负样本。

? 选取样本后通过ROI Pooling 层缩放到7*7的大小

1)分类器

? 输出N+1个类别的概率,N个检测目标的种类,一个背景,通过softmax函数后的所有概率相加的和为1。捕获

2)边界框回归器

? 输出对应N+1个类别的候选边界框回归参数(dx,dy,dw,dhd_x,d_y,d_w,d_hdx?,dy?,dw?,dh?),共(N+1)*4个节点。
捕获
捕获

3)损失函数

? 损失函数同样分为分类损失和边界框回归损失。

捕获

  • 分类损失:Lcls(p,u)=?logpuL_{cls}(p,u)=-log p_uLcls?(p,u)=?logpu????即为softmax交叉熵损失?

    ? 交叉熵损失(Cross Entropy Loss)

  1. 多分类问题(softmax输出,所有输出概率和为1)

H=?∑ioi?log(oi)H = -\sum_io_i^*log(o_i)H=?i?oi??log(oi?)??

  1. 二分类问题(sigmoid输出,每个输出节点之间互不影响)

H=?1N∑i=1N[oi?logoi+(1?oi?)log(1?oi)]H = -\frac{1}{N}\sum_{i=1}^N[o_i^*logo_i+(1-o_i^*)log(1-o_i)]H=?N1?i=1N?[oi??logoi?+(1?oi??)log(1?oi?)]?

ps: 其中oi?o_i^*oi????为真实标签值,oio_ioi??为预测值,默认logloglog?以eee?为底等于lnlnln

  • 边界框回归损失:[u>=1][u>=1][u>=1]??????是艾弗森括号?,当u>=1时为1,其余为0。
    艾弗森括号代表着,当检测目标为背景时边界框损失不存在
    捕获

    ? 边界框回归参数viv_ivi?使用GiG_iGi??公式反解即可。

4)Fast R-CNN框架

捕获

3.Faster R-CNN(RPN+Fast R-CNN)

1

2

? 对比Fast R-CNN,Faster R-CNN只是使用一个RPN网络替代了SS候选框生成算法

1)RPN结构

捕获

  • 特征图的获取,使用ZF卷积网络得到256通道的特征图,使用VGG16卷积网络得到512通道的特征图

  • 根据特征图对应的原图位置(这里使用特征图与原图的等比例对应即可,允许有误差,即比例不为整时取整),框出K个指定大小(下面是作者使用的大小)的anchor boxes

    捕获

  • 通过上述步骤可以得到近2w个anchor boxes,去除跨越边缘的还剩6k,其中有很多框有重合部分,使用非极大值抑制IOU设置为0.7,这样每张图片只剩下2k个候选框。

  • 通过cls layer生成2K个类别分数(背景和物体的概率,此处使用softmax多分类,若使用sigmoid二分类则为K个类别分数),通过reg layer生成4K个边界框回归参数捕获

  • 关于正负样本:样本与标定框IOU大于0.7或者是最大的一个称为正样本小于0.3的称为负样本

2)RPN损失函数

捕获

? 分类损失使用的交叉熵计算(根据分类使用算法选择多分类还是二分类),边框回归损失计算同Fast R-CNN边界框损失计算一致λ\lambdaλ?文章中的取值为10,故可近似合并参数。后面Fast R-CNN网络的损失函数与之前一致。文章中采用双网络单独训练一般直接使用RPN和Fast R-CNN损失联合训练的方法

3)Faster R-CNN框架

捕获

4)存在的问题

  • 对小目标检测效果差高层次的抽象,导致特征丢失。
  • 模型大,检测速度较慢,主要原因是因为两次预测。
  相关解决方案