R-FCN

  • Introduction
    RCNN系列存在两个问题:1. 分类任务要求平移不变性而检测任务必须对位置敏感,因为目标位置改变的话预测坐标必须随之变化。用resnet做检测任务时将ROI pooling置于卷积层之间,因为ROI POOLING后是region级训练,每一个region跑一遍后面的网络,当region改变时预测坐标自然跟着改变。 2. ROI POOLING层前是计算共享的,即整张图跑一遍网络就满足所有计算的需要,而后面的计算为region级每个region都要跑一遍网络,所以计算量是相当大的。在r-fcn中将所有计算放置于roi pooling之前所以减少了计算量,在rfcn中通过生成score map加入了位置信息。

  • 网络结构

主要是对ROI POOLING后的fast rcnn进行改造,骨架网络是resnet101,去掉后面的avg pooling和softmax,加上1x1x1024(降维)和 11 k 2 ( C + 1 ) 11k^{2}(C+1) 11k2(C+1) 卷积得到 H W k 2 ( C + 1 ) HWk^{2}(C+1) HWk2(C+1)的score map这是存储相对位置信息的特征图。由k方个C+1层的map堆叠而成,每个C+1层的map和ROI的网格一一对应,因为ROI也分成kxk个网格,当k=3时,ROI由左上,中上…右下组成,那么第一个小map( H W ( C + 1 ) HW(C+1) HW(C+1))对应左上角网格信息,每个点表示特征图上相应位置点位于目标左上角,通道中每个值表示位于目标左上角且属于第c累的概率。第二大层map表示中上部分类推。所以说score map存储这相对位置信息。

  • 具体流程
    将RPN的输出ROI分成kxk网格,每个网格都从对应的c+1 的map上取,左上网格取第一大层map,中上网格取第二个。。。最后得到 k k ( C + 1 ) kk(C+1) kk(C+1)的网格图,对每个网格内取平均值得到 k k ( C + 1 ) kk(C+1) kk(C+1)特征图。去掉fast rcnn中的fc对map在宽高维度上平均得到c+1的向量送入softmax归一化,这一部分只有计算平均和归一化位于pooling后计算量可以忽略;而回归部分是直接在score map上卷积得到 H W 4 k 2 HW4k^2 HW4k2的map表示坐标信息后面ROI pooling得到 k k 4 kk4 kk4的向量取平均后得长度为4的向量即坐标值。,这样所有计算在pooling之前,但注意这个回归是class-agnostic的要与类别关联,前面应该卷积为 H W k 2 ( C + 1 ) 4 HWk^{2}(C+1)4 HWk2(C+1)4的特征图。

卷积网络的平移不变性和平移可变性
平移不变性比较好理解,在用基础的分类结构比如ResNet、Inception给一只猫分类时,无论猫怎么扭曲、平移,最终识别出来的都是猫,输入怎么变形输出都不变这就是平移不变性,网络的层次越深这个特性会越明显,因为层数越深下采样率越高,特征图上只是感兴趣区域(attention)的特征,原图上产生的微小位移根本感觉不到。平移可变性则是针对目标检测的,一只猫从图片左侧移到了右侧,检测出的猫的坐标会发生变化就称为平移可变性。当卷积网络变深后最后一层卷积输出的feature map变小,物体在输入上的小偏移,经过N多层pooling后在最后的小feature map上会感知不到,这就是为什么原文会说网络变深平移可变性变差。

https://www.jianshu.com/p/409fd61db9db

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
R-FCN(Region-based Fully Convolutional Networks)是一种用于目标检测的深度学习网络模型。它是基于全卷积网络(Fully Convolutional Networks)和区域建议网络(Region Proposal Networks)的结合。R-FCN 在目标检测任务上取得了较好的性能。 关于 R-FCN 的 Matlab 实现,你可以参考以下步骤: 1. 下载 R-FCN 的源代码。你可以在 GitHub 上找到一些开源实现,如 https://github.com/daijifeng001/R-FCN 或者其他类似的仓库。 2. 安装 Matlab 并配置深度学习框架。Matlab 支持多种深度学习框架,如 TensorFlow、PyTorch、Caffe 等。根据你选择的 R-FCN 实现,安装对应的深度学习框架并配置 Matlab 的环境。 3. 加载预训练模型。R-FCN 需要在大规模数据集上进行预训练,你需要下载相应的预训练模型,并将其加载到 Matlab 中。 4. 准备数据集。为了使用 R-FCN 进行目标检测,你需要准备一个目标检测数据集,包括图像和标注信息。确保数据集格式与 R-FCN 的输入要求相符。 5. 运行训练代码。根据你选择的 R-FCN 实现,运行相应的训练代码来训练网络模型。你可能需要调整一些训练参数,如学习率、批大小等。 6. 进行目标检测。训练完成后,你可以使用 R-FCN 进行目标检测。提供待检测图像作为输入,R-FCN 将输出目标类别和位置信息。 请注意,以上步骤仅提供了一般的指导,具体实现可能因不同的 R-FCN 实现而有所差异。在实际操作中,请参考相应的文档和代码示例,以确保正确实现 R-FCN 网络。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值