一、网络介绍

参考文章: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. 6.0-uC/OS-III软件定时器管理

    1.软件定时器管理 uC/OS-III提供了软件定时器服务(相关代码在OS_TMR.C中).当设置OS_CFG.H中的OS_CFG_TMR_EN为1时软件定时器服务被使能. 2.uC/OS-III 定 ...

  2. here文档 here doc EOF重定向

    here文档  here doc EOF重定向 http://www.cnblogs.com/xiangzi888/archive/2012/03/24/2415077.html 在shell脚本程序 ...

  3. 小程序 navigator 无法跳转 tabBar上的页面

    解决方法一: navigator 的 open-type 设置为 switchTab 解决方法二: 使用 wx.switchTab({ url: ‘../cart/index’ }) 进行跳转

  4. C#ImageList和ListView的使用

    一.ImageList  ImageList组件,又称为图片存储组件,它主要用于存储图片资源,然后在控件上显示出来,这样就简化了对图片的管理.ImageList组件的主要属性是Images,它包含关联 ...

  5. oracle中实现某个用户truncate 其它用户下的表

    oracle文档中对truncate权限的要求是需要某表在当前登录的用户下,或者当前登录的用户有drop any table的权限. 但是如果不满足第一个条件的情况下,要让某用户满足第二个条件就导致权 ...

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

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

  7. 自定义Word颜色主题

    外观 说明 看到这个黑色编辑器的界面,第一印象可能认为是Sublime.Atom. VScode或者其它markdown编辑器.其实仅仅是微软的Word经过了自定义主题. 选择清晰易于辨认的字体和深色 ...

  8. eclipse之常用快捷键

    开发常用: 清理浏览器缓存:ctrl+shift+delete 切换窗口:alt+tab 同一个浏览器切换窗口:ctrl+shift+tab 刷新页面:ctrl+F5 前端调试debug: debug ...

  9. myBatis学习之路1-基本功能实现

    myBatis也是一个持久型框架,相较于hibernate来说,算是轻量级的. 1.配置mybatis环境 相关jar下载地址:mybatis+mysalJAR包 2.新建一个java project ...

  10. redis工具

    pom.xml添加 <!--jedis redis客户端--> <dependency> <groupId>redis.clients</groupId> ...