一、网络介绍

参考文章:R-FCN详解

论文地址:Object Detection via Region-based Fully Convolutional Networks

R-FCN是Faster-RCNN的改进型,其速度提升了2.5倍以上,并略微提高了准确度。

二、论文创新

提出Position-sensitive score maps来解决目标检测的位置敏感性问题

位置敏感性

分类网络的位置不敏感性

简单来讲,对于分类任务而言,我希望我的网络有一个很好地分类性能,随着某个目标在图片中不断的移动,我的网络仍然可以准确的将你区分为对应的类别。
如上图左边所示,不管你这只鸟在图片中如何移动,我的分类网络都想要准确的将你分类为鸟。即我的网络有很好地区分能力。
实验表明,深的全卷积网络能够具备这个特性,如ResNet-101等。

检测网络的位置敏感性

简单来讲,对于检测任务而言,我希望我的网络有一个好的检测性能,可以准确的输出目标所在的位置值。随着某个目标的移动,我的网络希望能够和它一起移动,仍然能够准确的检测到它,即我对目标位置的移动很敏感。我需要计算对应的偏差值,我需要计算我的预测和GT的重合率等。但是,深的全卷积网路不具备这样的一个特征。
总之,分类网络的位置不敏感性和检测网络的位置敏感性的一个矛盾问题,而我们的目标检测中不仅要分类也要定位,那么如何解决这个问题呢,R-FCN提出了Position-sensitive score maps来解决这个问题。

三、R-FCN思路

如下图所示,主体部分和Faster-RCNN一样:

  • 图片首先进入特征提取网络
  • 然后进行分支操作:
    • RPN部分没什么改变,输出两个损失函数判断anchor是否是前景,然后筛选出特定个数的候选框
    • 下面支路进行卷积输出即为position-sensitive score map,本层不改变大小,输出维度是重点:K*K*(C+1)
    • 下图并未画出来,还需要一个卷积支路输出K*K*4通道的特征,称作位置敏感得分映射,用于回归位置修正

position-sensitive score map 分类信息处理

下面我们来着重讲解下面支路的处理。

接前一段所述,我们的到K*K*(C+1)维的features,这里的C+1表示的就是分类数(包含背景类别),而K我们可以理解为Faster-RCNN的ROIing后输出的尺度K*K,以下图为例,这里我们的K实际就是3,对应着ROIPooling后输出3*3的小图,了解了这个事实,我们来讲解为什么这样做。

看到上图,了解Faster-RCNN的同学可能疑惑:K*K*(C+1)的features为什么ROIPooling后维度变为C+1了?实际上这里的操作并不是标准的ROIPooling:我们的features实际被分成K*K组,每组C+1层,每组对应ROIPooling后的结果的一个位置(如图ROIPooling输出3*3共九个点,所以我们需要9组)。

RPN获取候选框后,我们在position-sensitive score map找到对应的位置,然后对应位置ROI操作对应的features组,以上图来看,输出左上角的橙色数字来源于第一组的C+1层features的候选框区域的左上角(比较拗口,对比颜色很容易理解)。

这么做的目的就是:我们希望这K*K组features,每组对应于候选物体的对应部分(比如识别一匹马,其中一组对应一匹马图片的左上角位置,这里经常出现马头、马尾巴这样),使得分类任务具有位置敏感性

ROI示意如下:

和Faster-RCNN类似,从RPN产生后开始,各个候选区域的处理(ROI及其之后)不再共享,有多少候选框,计算多少次。

分类信息ROI结果处理

ROI之后获得的K*K*(C+1)特征对应于C+1个分类,直接求和(或者平均池化)为C+1向量即可,softmax处理一下,获取最终的分类信息。

回归信息处理

我们的到的是K*K*4通道的features,类似分类,使用ROI处理,获取K*K大小4通道的特征,进而类似获取4个值作为该ROI的x,y,w,h的偏移量,其思路和分类完全相同。

Loss计算及其分析

这个Loss就是两阶段目标检测框架常用的形式。包括一个分类Loss和一个回归Loss。lamdy用来平衡两者的重要性。对于任意一个RoI,我们需要计算它的softmax损失,和当其不属于背景时的回归损失。这很简单,因为每个RoI都被指定属于某一个GT box或者属于背景,即先选择和GT box具有最大重叠率(IOU)的Rol,然后在剩余的Rol中选择与GT box的重叠率值大于0.5Rol进行匹配操作,最后将剩余的Rol都归为背景类。即每个Rol都有了对应的标签,我们就可以根据监督学习常用的方法来训练它。

『计算机视觉』R-FCN:Object Detection via Region-based Fully Convolutional Networks的更多相关文章

  1. 『计算机视觉』FPN:feature pyramid networks for object detection

    对用卷积神经网络进行目标检测方法的一种改进,通过提取多尺度的特征信息进行融合,进而提高目标检测的精度,特别是在小物体检测上的精度.FPN是ResNet或DenseNet等通用特征提取网络的附加组件,可 ...

  2. 『计算机视觉』Mask-RCNN_从服装关键点检测看KeyPoints分支

    下图Github地址:Mask_RCNN       Mask_RCNN_KeyPoints『计算机视觉』Mask-RCNN_论文学习『计算机视觉』Mask-RCNN_项目文档翻译『计算机视觉』Mas ...

  3. 『计算机视觉』Mask-RCNN_训练网络其三:训练Model

    Github地址:Mask_RCNN 『计算机视觉』Mask-RCNN_论文学习 『计算机视觉』Mask-RCNN_项目文档翻译 『计算机视觉』Mask-RCNN_推断网络其一:总览 『计算机视觉』M ...

  4. 『计算机视觉』Mask-RCNN_训练网络其二:train网络结构&损失函数

    Github地址:Mask_RCNN 『计算机视觉』Mask-RCNN_论文学习 『计算机视觉』Mask-RCNN_项目文档翻译 『计算机视觉』Mask-RCNN_推断网络其一:总览 『计算机视觉』M ...

  5. 『计算机视觉』Mask-RCNN_推断网络终篇:使用detect方法进行推断

    一.detect和build 前面多节中我们花了大量笔墨介绍build方法的inference分支,这节我们看看它是如何被调用的. 在dimo.ipynb中,涉及model的操作我们简单进行一下汇总, ...

  6. 『计算机视觉』Mask-RCNN_推断网络其三:RPN锚框处理和Proposal生成

    一.RPN锚框信息生成 上文的最后,我们生成了用于计算锚框信息的特征(源代码在inference模式中不进行锚框生成,而是外部生成好feed进网络,training模式下在向前传播时直接生成锚框,不过 ...

  7. 『计算机视觉』Mask-RCNN_训练网络其一:数据集与Dataset类

    Github地址:Mask_RCNN 『计算机视觉』Mask-RCNN_论文学习 『计算机视觉』Mask-RCNN_项目文档翻译 『计算机视觉』Mask-RCNN_推断网络其一:总览 『计算机视觉』M ...

  8. 『计算机视觉』Mask-RCNN_推断网络其六:Mask生成

    一.Mask生成概览 上一节的末尾,我们已经获取了待检测图片的分类回归信息,我们将回归信息(即待检测目标的边框信息)单独提取出来,结合金字塔特征mrcnn_feature_maps,进行Mask生成工 ...

  9. 『计算机视觉』Mask-RCNN_推断网络其四:FPN和ROIAlign的耦合

    一.模块概述 上节的最后,我们进行了如下操作获取了有限的proposal, # [IMAGES_PER_GPU, num_rois, (y1, x1, y2, x2)] # IMAGES_PER_GP ...

随机推荐

  1. Windows10 家庭版 关闭Windows defender

    管理员权限打开cmd,输入下面命令: reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows Defender&quo ...

  2. 目标检测(三)Fast R-CNN

    作者:Ross Girshick 该论文提出的目标检测算法Fast Region-based Convolutional Network(Fast R-CNN)能够single-stage训练,并且可 ...

  3. 原生ajax函数封装

    原生ajax函数 function ajax(json){ json=json || {}; if(!json.url){ return; } json.data=json.data || {}; j ...

  4. springMVC(五): 通过 HandlerMapping 获取 HandlerExecutionChain

    请求具体过程 一.HandlerMapping Interface to be implemented by objects that define a mapping between request ...

  5. scrapy学习---管道

    使用管道必须实现process_item() 方法 process_item(self, item, spider) 次方法实现数据的过滤处理等操作 open_spider(self, spider) ...

  6. laravel----------如何优化laravel框架

    1.关闭debug (打开.env文件,把debug设置为false.) 2.缓存路由和配置(清除:php artisan config:clear  php artisan route:clear  ...

  7. Linux文件检索

    title: Linux文件检索 date: 2017-12-11 19:03:01 tags: linux categories: linux whereis 只要执行 whereis ls 就可以 ...

  8. 【Linux】Tomcat安装及一个服务器配置多个Tomcat

    安装环境 :Linux(Ubuntu 版) 安装软件 : apache-tomcat-9.0.0.M1.tar.gz(下载地址http://tomcat.apache.org/) 步骤一 Tomcat ...

  9. Porsche Piwis Tester II V12.100 Version Released

    Piwis Tester II v12.100 Version released today! In this new version we can find the latest type Pors ...

  10. Html h1-h6 标签

    Html h1-h6 标签 <html> <body> <!-- h1-h6标签:标题标签 --> <h1>XSK</h1> <h2& ...