【论文阅读】RCNN论文详解

RCNN

1. 目标检测

目标检测是分类任务(bounding box中物体的类别)和回归任务(bounding box的大小及位置)的组合。

2. RCNN的贡献

  1. 根据Selective Search算法提取Region proposal候选区域
  2. 将每个Region proposal缩放到统一大小后,通过 C N N CNN CNN提取固定大小的特征
  3. 将提取出的特征通过 S V M SVM SVM进行分类
  4. 训练一个回归器,对bounding box边界框进行调整,使其接近ground truth真实边界框

3. Region proposals

本文采用的Selective Search算法来提取候选区域Region proposals

Selective Search 算法:

  • 使用一种过分割手段,将图像分割成小区域
  • 查看现有小区域,按照合并规则合并可能性最高的相邻两个区域。重复直到整张图像合并成一个区域位置
  • 输出所有候选区域

Selective Search 合并规则:

  1. 颜色相近:颜色直方图
  2. 纹理相近:梯度直方图
  3. 合并后总面积小的:重合度高

正负样本选取:

如果某个Region proposal和当前图像上的所有Ground truth中重叠面积最大的那个的IOU大于等于0.5,则该Region proposal作为这个Ground truth类别的正样本,否则作为负样本。另外正样本还包括了Ground Truth

IOU是计算矩形框 A 、 B A、B AB的重合度的公式:
I O U = A ∩ B A ∪ B IOU = \frac {A \cap B} {A \cup B} IOU=ABAB

4. Feature extraction

在这里插入图片描述

将生成的Region proposal 减去像素平均值后,使用各向异性的缩放方式(直接缩放),将图片缩放到 227 × 227 227 \times 227 227×227大小,随后对每个Region proposal 提取特征,对每个proposal经过五层卷积层以及两层全连接层,在cf7层得到提取出的4096维特征。 提取特征使用了pre-training的AlexNet网络

5. Object category classifier

本文在fc7层提取出特征后,未直接通过最后一层softmax层进行分类,而是将fc7层提取出的特征用于训练SVM分类器。因为SVM得到的效果要更好,原因如下:

  1. 我们对于正样本的定义没有强调精确定位,即IOU大于0.5region proposal便认定为正样本
  2. softmax分类器是根据随机抽样的负样本进行训练的,而SVM是利用hard negative的子集来作为负样本训练

对每一个类别训练一个二分类器,我们用IoU重叠阈值来解决正负样本的问题,在0.3阈值以下的区域被定义为负样本,0.3-0.7阈值的样本被忽略,0.7-1.0的样本被定义为正样本。PS:这里负样本的选定和前面的有所不同。

6. Bounding-box regression

6.1 问题定义

对于Bounding Box一般使用四维向量 ( x , y , w , h ) (x, y, w, h) (x,y,w,h)来表示,分别表示窗口的中心点坐标和宽高。

对于下图,红色框 P P P代表原始的 P r o p o s a l Proposal Proposal,绿色框 G G G代表 G r o u n d Ground Ground T r u t h Truth Truth,我们的目标是寻找一个映射使得输入的原始框 P P P经过该映射得到一个跟真实框 G G G更接近的回归窗口 G ^ \hat G G^

即:给定 ( P x , P y , P w , P h ) (P_x,P_y,P_w,P_h) (Px,Py,Pw,Ph),寻找一种映射 f f f,使得 f ( P x , P y , P w , P h ) = ( G ^ x , G ^ y , G ^ w , G ^ h ) f(P_x,P_y,P_w,P_h)=(\hat G_x, \hat G_y, \hat G_w, \hat G_h) f(Px,Py,Pw,Ph)=(G^x,G^y,G^w,G^h),并且 ( G ^ x , G ^ y , G ^ w , G ^ h ) ≈ ( G x , G y , G w , G h ) (\hat G_x, \hat G_y, \hat G_w, \hat G_h) \approx (G_x, G_y, G_w, G_h) (G^x,G^y,G^w,G^h)(Gx,Gy,Gw,Gh)
在这里插入图片描述

6.2 解决方案——平移+缩放

  1. 先做平移变换 ( Δ x , Δ y ) , Δ x = P w d x ( P ) , Δ y = P h d y ( P ) (\Delta x, \Delta y), \Delta x=P_wd_x(P),\Delta y=P_hd_y(P) (Δx,Δy),Δx=Pwdx(P),Δy=Phdy(P),则:
    G ^ x = P w d x ( P ) + P x G ^ y = P h d y ( P ) + P y \hat G_x=P_wd_x(P)+P_x \\ \hat G_y=P_hd_y(P)+P_y G^x=Pwdx(P)+PxG^y=Phdy(P)+Py
  2. 再做缩放变换 ( S w , S h ) , S w = e x p ( d w ( P ) ) , S h = e x p ( d h ( P ) ) (S_w, S_h), S_w=exp(d_w(P)), S_h=exp(d_h(P)) (Sw,Sh),Sw=exp(dw(P)),Sh=exp(dh(P)),则:
    G ^ w = P w e x p ( d w ( P ) ) G ^ h = P h e x p ( d h ( P ) ) \hat G_w = P_wexp(d_w(P)) \\ \hat G_h=P_hexp(d_h(P)) G^w=Pwexp(dw(P))G^h=Phexp(dh(P))

Bounding-box regression就是学习 d x ( P ) , d y ( P ) , d w ( P ) , d h ( P ) d_x(P), d_y(P), d_w(P), d_h(P) dx(P),dy(P),dw(P),dh(P)这四个参数

算法流程:

输入: R e g i o n P r o p o s a l → P = ( P x , P y , P w , P h ) ; G r o u n d T r u t h → G = ( G x , G y , G w , G h ) 输入:RegionProposal \rightarrow P=(P_x,P_y,P_w,P_h);GroundTruth \rightarrow G=(G_x,G_y,G_w,G_h) 输入:RegionProposalP=(Px,Py,Pw,Ph)GroundTruthG=(Gx,Gy,Gw,Gh)

输出: D ∗ = ( d x ( P ) , d y ( P ) , d w ( P ) , d h ( P ) ) 输出:D_*=(d_x(P), d_y(P), d_w(P), d_h(P)) 输出:D=(dx(P),dy(P),dw(P),dh(P))

  1. 计算真正需要的平移量 ( t x , t y ) (t_x,t_y) (tx,ty)和缩放量 ( t w , t h ) (t_w,t_h) (tw,th)
    t x = ( G x − P x ) / P w t y = ( G y − P y ) / P h t w = l o g ( G w / P w ) t h = l o g ( G h / P h ) t_x=(G_x-P_x)/P_w \\ t_y = (G_y - P_y)/P_h \\ t_w=log(G_w/P_w) \\ t_h=log(G_h/P_h) tx=(GxPx)/Pwty=(GyPy)/Phtw=log(Gw/Pw)th=log(Gh/Ph)

  2. 构建损失函数: d ∗ ( P ) = ( d x ( P ) , d y ( P ) , d w ( P ) , d h ( P ) ) d_*(P)=(d_x(P),d_y(P),d_w(P), d_h(P)) d(P)=(dx(P),dy(P),dw(P),dh(P))是预测值,真实值 t ∗ = ( t x , t y , t w , t h ) t_*=(t_x,t_y,t_w,t_h) t=(tx,ty,tw,th),我们要让预测值与真实值差距最小,定义均方误差函数:
    L o s s = ∑ i N ( t ∗ i − d ∗ i ) 2 Loss=\sum_{i}^N(t_*^i-d_*^i)^2 Loss=iN(tidi)2
    函数的优化目标为:
    D ∗ = a r g min ⁡ d ∗ ∑ i N ( t ∗ i − d ∗ i ) 2 + λ ∣ ∣ d ∗ i ∣ ∣ 2 D_*=arg\min_{d_*}\sum_{i}^N(t_*^i-d_*^i)^2+\lambda||d_*^i||^2 D=argdminiN(tidi)2+λ∣∣di2

  3. 利用梯度下降法或最小二乘法得到 D ∗ D_* D

7. Non-maximum suppression

RCNN 网络会对一个目标标定了多个标定框,使用非极大值抑制算法NMS滤掉多余的标定框

在这里插入图片描述

算法流程:

输入: B = { b 1 , . . . , b N } ; S = { s 1 , . . . , s N } ; N t 。 输入:B=\{b_1, ..., b_N\}; S = \{s_1, ..., s_N\}; N_t。 输入:B={b1,...,bN};S={s1,...,sN};Nt

  • B 表示候选框集合, S 表示每个候选框的置信度得分, N t 表示 N M S 阈值 B表示候选框集合,S表示每个候选框的置信度得分,N_t表示NMS阈值 B表示候选框集合,S表示每个候选框的置信度得分,Nt表示NMS阈值

输出: D :筛选后的候选框 , S :筛选后的候选框的置信度得分 输出:D:筛选后的候选框, S:筛选后的候选框的置信度得分 输出:D:筛选后的候选框,S:筛选后的候选框的置信度得分

D = {}
while B not empty:
    # 选取置信度得分最高的 proposal
    m = argmax(S)
    M = b_m
    # 将置信度得分最高的 proposal加入到集合D中
    D = D union M
    # 从集合B中删除置信度得分最高的 proposal
    B = B - M
    # 遍历其他proposal
    for b_i in B:
        # 如果其他proposal与置信度得分最大的proposal的交并比大于给定的阈值,便从集合B中删除,并删除对应的置信度得分
        if IOU(M, b_i) >= N_t:
            B = B - b_i
            S = S - s_i
return D, S

8. RCNN网络结构图

在这里插入图片描述


参考资料:

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Mask R-CNN是何凯明大神的新作,它是一种在有效检测目标的同时输出高质量的实例分割mask的方法。它是对faster r-cnn的扩展,通过增加一个预测分割mask的分支,实现了物体检测和语义分割的结合,从而达到了实例分割的效果。 Mask R-CNN的网络架构主要由两部分组成:基于Faster-RCNN目标检测部分和基于FCN的语义分割部分。前者完成目标检测任务,后者可以准确完成语义分割的任务。具体来说,Mask R-CNN在Faster-RCNN的基础上增加了FCN来产生对应的MASK分支。同时,为了解决ROI Pooling中存在的像素偏差问题,提出了ROI Align策略,加上FCN精准的像素MASK,使得整个算法可以实现高准确率的目标检测和实例分割。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [Mask R-CNN讲解](https://blog.csdn.net/weixin_43702653/article/details/124377487)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [Mask RCNN算法详解(总结)](https://blog.csdn.net/weixin_44312422/article/details/121000465)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值