目标检测系列:R-FCN

论文链接:https://arxiv.org/pdf/1605.06409.pdf

1. Introduction

明确本文提出的目的,首先回顾一下Faster rcnn,如下图,可以将faster rcnn分为三部分

  1. 网络部分,用来对图像提取特征,与region无关
  2. 第二部分是RPN对anchors进行操作,需要映射到区域
  3. 第三部分,要对2找出的anchors,进行卷积,全链接操作,这部分是费时的

在原始的faster rcnn网络中,比如利用VGG,和AlexNet为架构的,经过ROI后要对每个anchor进行全链接操作,这部分要对每个anchor都进行操作,假设进过RPN后300个anchor,那就要计算300次全链接,这个计算量是恐怖的。当后来全卷积网络例如残差网络(Resnet), GoogleNet等被提出后,很自然的想到用这些全卷积网络代替原始的网络,当时是想隐藏第3部分,但是实际情况证明这样的精度会下降,必须在ROIPooling继续添加卷积操作,Faster RCNN中用的ResNet(前91层共享,插入ROI pooling,后10层不共享),但是这部分的conv并不是所有的anchors共享的,必须一个一个anchor进行操作,可能有人会不理解为什么不共享一起操作,非要一个一个计算,我没有看Resnet的Faster rcnn源码,不过卷积的输入是[batch,h, w,c],而ROIPooling的输出每个anchor的样式是[batch, 7,7,1024]也就是说维度已经满足输入了,所以必须一个一个anchor进行计算,因为计算不共享,所以肯定计算速度会很慢,于是作者就想把这部分不共享的计算移动到ROIPooling之前,将所有的图片卷积共享。
于是本文提出的目的就知道了:加快目标检测的过程,减少时间
在这里插入图片描述

2 RFCN方法

先看一下整体,分为上下两部分,上部分是和faster rcnn一样的RPN层,不说这一部分,下面分为两部分看,一部分是主干网络,一部分是带颜色的那部分
在这里插入图片描述

  1. 主干网络
    Backbone architecture: ResNet 101——去掉原始ResNet101的最后一层全连接层,保留前100层,再接一个111024的全卷积层(100层输出是2048,为了降维,再引入了一个11的卷积层)。
    k 2 ( C + 1 ) k^2(C+1) k2(C+1)的conv: ResNet101的输出是W
    H1024,用 K 2 ( C + 1 ) K^2(C+1) K2(C+1)个102411的卷积核去卷积即可得到 K 2 ( C + 1 ) K^2(C+1) K2(C+1)个大小为WH的position sensitive的score map。这步的卷积操作就是在做prediction。k = 3,表示把一个ROI划分成3*3,对应的9个位置分别是:上左(左上角),上中,上右,中左,中中,中右,下左,下中,下右(右下角)

  2. k^2(C+1)个feature map
    共有kk = 9个颜色,每个颜色的立体块**(WH*(C+1))表示的是不同位置存在目标的概率值**(第一块黄色表示的是左上角位置,最后一块淡蓝色表示的是右下角位置)。共有k^2*(C+1)个feature map。我们要产生一个维度是C+1的向量,代表每个类别的可能性,最后用softmax确定到底属于哪个类别,计算每个类别的可能性的时候都需要计算九部分。假设我们要计算类别=1的可能性,假设计算的结果如下,我们对所有得分求均值得到avg=0.46,接下来按同样的道理计算得到所有的类别的得分,最后利用softmax计算得出最符合情况的类别
    在这里插入图片描述

  3. 边框的回归计算

  • 如图2.1的位置敏感maps是有k2(C+1)个通道的,我们依然从基CNN的feature map部分连接出一个4k2通道的maps(与位置敏感maps并列),用来做候选框坐标微调,如上面表格所示;
  • 如分类部分的步骤1-4一样的操作,最后得到一个1∗4的向量,即x,y,w,h
  • 按照之前的那些模型一样去计算目标函数即可

3 总结:

本文提出是为了加速两阶段方法的inference速度,将ROIPooling后面的网络层尽可能地移动到这之前,让能进行共享的计算竟可能共享,这一点很多人都能想到,但是怎么样才能保证加速的同时精度不下降,这是有难度的,本文的亮点是采用了位置敏感得分图,将roi分成k*k部分,计算每一部分的得分求均值,每个类别都会有一个这样的得分,最后求softmax。
个人思考
利用位置敏感得分图的方式计算进行分类,效果好勉强可以理解,但是对坐标进行回归的时候也采用同样的方式,让我有点接受不了,毕竟一个是分类问题,一个是回归问题,虽说本质二者差不多,但是用同样的方式计算是否有欠妥当?或者说,本文是实验先行,毕竟实验结果好,但是可解释性有点差

  • 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、付费专栏及课程。

余额充值