• FasterRCNN


    算法步骤

    • 使用深度神经网络来提取特征,得到特征图
    • 使用RPN网络生成候选框,将RPN网络生成的候选框投影到特征图上获得相应的特征矩阵
    • 使用ROI池化缩放到7×7大小的特征图,展平之后通过一系列全连接层得到预测结果(和FastRCNN一样)

    在这里插入图片描述

    FasterRCNN可以说是Region Proposal Network(RPN)和FastRCNN和结合。

    RPN结构

    在这里插入图片描述
    使用3×3的滑动窗口来生成anchor(在特征图上,滑动窗口的中心就是anchor的中心),实现使用的是3×3的卷积,其中padding=1,stride=1,也就是不改变维度,同时卷积的中心能够遍历特征图的所有位置。卷积核的个数为256,也就是256-d。然后再通过两个1×1的卷积来得到2k个score(包含不包含物体的概率,实现中可以只使用其中一个,也就是k个score)和4k个coordinate(每一个anchor包含x,y,w,h4个值)。

    将特征图映射回原图时,计算两个的宽高比作为步距,那么用步距乘以特征图的坐标即可得到原图的坐标。

    锚框

    锚框使用三种尺度:128、256和512,比例有1:1、1:2和2:1三种,于是总共可以得到9个锚框。
    在这里插入图片描述
    对于一张输入图片,使用上面的方法得到很多anchor之后,首先忽略掉超出边界的anchor,然后基于候选框的类别概率,使用非极大值抑制,IoU设置为0.7。

    训练

    训练RPN网络时,从众多anchor中随机采样256个,包含了一半的正样本和一半的负样本(1:1)。如果正或者负样本少于一半,用另一种填充。

    如果判断是否为正样本?当使用下面第二个条件找不到anchor的时候,采用第一个条件:
    (1) 和ground-truth有最大的IoU
    (2) 和ground-truth的IoU高于0.7

    如何判断是否为负样本?和任何ground-truth的IoU都小于0.3。

    IoU处于0.3到0.7之间的直接舍弃。

    RPN损失函数

    在这里插入图片描述
    其中, p i p_i pi为anchor包含物体的概率, p i ∗ p_i^* pi为1或者0(正样本为1), t i t_i ti表示预测为第i个anchor的边界框回归参数, t i ∗ t_i^* ti为第i个anchor的ground truth, N c l s N_cls Ncls为一个小批量的样本数量256, N r e g N_reg Nreg表示anchor位置的个数。

    两个损失函数的形式和fast RCNN一致。

    整个Faster RCNN训练时,可以直接采用RPN loss和Fast-RCNN loss联合训练,两个加起来作为损失然后反向传播。

  • 相关阅读:
    SQL优化的一些建议,希望可以帮到和我一样被SQL折磨的你
    搭建网课查题公众号教程 内含接口
    X射线的性质
    【Python】不是内部或外部命令,cmd指令报错,path环境配置
    数据结构学习系列之顺序栈
    AI + Science :科学研究新范式
    java计算机毕业设计至臻阁古董拍卖网源码+数据库+系统+部署+lw文档
    d3dx9_43.dll文件缺失的修复方法有哪些?4个方法快速修复d3dx9_43.dll
    虚拟DOM(VNode Virtul DOM )
    QEvent(事件)
  • 原文地址:https://blog.csdn.net/weixin_47524903/article/details/125413408