热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

论文阅读理解RFCN:ObjectDetectionviaRegionbasedFullyConvolutionalNetworks

R-FCN:ObjectDetectionviaRegion-basedFullyConvolutionalNetworksPaperCode摘要全卷积网络,全

R-FCN: Object Detection via Region-based Fully Convolutional Networks


  • Paper
  • Code

摘要


  • 全卷积网络,全部是卷积层,移除了最后的全连接层(fc).
  • 几乎所有的计算都是在整张图像上共享的.
  • position-sensitive score maps 位置敏感分数图, 平衡图像分类所需的平移不变性和目标检索所需的平移变化性间的矛盾.

Introduction

目标检测的框架根据ROI pooling 层可以分为两个子网络:
- 共享的,全卷积子网络,独立于ROI;
- 各个ROI子网络,不共享计算

图像分类中,要求网络对于平移不变性越强越好,比如图像中的猫,不管平移到图像的哪个位置,仍是猫;
目标检测则要求网络对平移变化越敏感越好,需要平移变化来定位图像中目标位置.

一般假设在图像分类网络中,网络卷积层越深, 网络的加深,使得其对位置信息的保留越来越少,对平移变化越不敏感. 但目标检测需要对图像中目标的位置信息能较好的感知.

在ResNet-101做目标检测的框架中,是将ROI pooling层插入到前面的卷积层,其后面的卷积层不共享计算,降低了平移不变性,ROI后的卷积层对不同的区域块不再具有平移不变性. 该方法引入了相当数量的逐区域层.

提出R-FCN(Region-based Fully Convolutional Network )框架,解决目标检测任务:
- R-FCN是共享的、全卷积网络结构
- 采用指定的卷积层的输出,来构建 position-sensitive score maps 集合. 各个score map分别编码了对于某个相对空间位置的位置信息,如物体的左边(to the left of an object).
- 在FCN网络层的上面,添加一个位置敏感的ROI pooling 层,来处理来自score maps的信息, 后面不需要权重层(conv/fc).
- End-to-end
- 所有的训练层都是卷积层,在整张图像上共享计算
这里写图片描述


R-FCN

two-stage 目标检测策略:
- region proposal 候选区域
- region classification 区域分类
这里写图片描述


  • 采用RPN(Region Proposal Network)网络提取候选区域,RPN是全卷积网络结构. R-FCN和RPN共享特征.
  • 给定候选区域(ROIs),R-FCN网络将ROIs分类到不同的物体类别和背景.
    • R-FCN所有学习权重的层都是卷积层,并在整张图像上共享计算
    • R-FCN的最后一个卷积层对每一类别产生 k2k2 position-sensitive score maps,得到 k2(C+1)channelk2(C+1)−channel的输出层(CC个物体类别和1个背景类别).

    • k2" role="presentation">k2 score maps对应 k×kk×k 空间网格(grid),分别描述了相对位置信息. 例如,k×k=33k×k=3∗3 时,得到的 9 个score maps分别描述了一个物体类别的 [top-left, top-center, top-right, …, bottom-right] 相对位置信息.
    • R-FCN的最后一层是 position-sensitive RoI pooling 层,该层统计了最后一个卷积层的输出,并生成各个 ROI 的 score.
      • position-sensitive RoI pooling 层进行选择性 pooling,k×kk×k单元格中的每一个bin都只对 k×kk×k 个score maps中一个score map进行相应. 如Figure 2,选择性pooling图解:看图中的橙色响应图像 (top−left),抠出橙色方块 RoI,池化橙色方块 RoI 得到橙色小方块 (分数);其它颜色的响应图像同理。对所有颜色的小方块投票 (或池化) 得到1类的响应结果。
      • position-sensitive RoI pooling 层根据最后一个卷积层来学习特定的position-sensitive score maps. 如Figure 1所示. 产生score map之后,再根据proposal产生一个长宽各为k,channel数目为C+1的score map。具体产生score map的方法是,假如k=3,C=20,那么score map的20个类每个类都有3×3的feature,一共9个格子,每一个格子都记录了空间信息。而这每一个类的每一个格子都对应前面那个channel数为3×3×21的大map的其中一个channel的map。现在把score map中的格子对应的区域的map中的信息取平均,然后这个平均值就是score map格子中的值。最后把score map的值进行vote(avg pooling)来形成一个21维的向量来做分类即可. 当分类正确时,该类通道的位置敏感分数图 (中间) 的大多数橙色实线网格内的响应在整个 RoI 位置范围内最强. [忘了从哪里看到的了,找到了补上参考链接]. Figure3 和 Figure4 给出了一个示例.
        这里写图片描述

基础网络结构


  • 基于 ResNet-101,其具有100个卷积层和一个1000分类的全连接(fc)层.
  • 移除ResNet-101的 average pooling层和 fc层,只使用卷积层来计算feature maps.
  • 采用在ImageNet训练的ResNet-101模型进行权重初始化.
  • ResNet-101的最后一个卷积层输出是 2048-d 的,采用一个权重随机初始化的 1×11×1 的卷积层来进行降维到 1024-d.
  • 采用k2(C+1)channelk2(C+1)−channel卷积层生成score maps.

Position-sensitive score maps & Position-sensitive RoI pooling.


  • 为了更好的对每个ROI中的位置信息进行编码,这里将各个ROI框(rectangle) 根据规则网络分为 k×kk×k 个单元格. 即,对一个ROI框,其尺寸为 whw∗h,一个单元格的尺寸为 wk×hk≈wk×hk.
  • R-FCN的最后一个卷积层用来产生每一个类别的 k2k2 个score maps.
  • 在第 (i,j)(i,j) 个单元格中,(0i,jk1)(0≤i,j≤k−1),定义一个 position-sensitive RoI pooling 操作,仅对第 (i,j)(i,j) 个score map 进行 pool 处理:
    γc(i,jΘ)=(x,y)bin(i,j)zi,j,c(x+x0,y+y0Θ)/nγc(i,j∣Θ)=∑(x,y)∈bin(i,j)zi,j,c(x+x0,y+y0∣Θ)/n
    其中,
    • rc(i,j)rc(i,j) 是在第 (i,j)(i,j)个单元格中 cc−类的池化响应;
    • zi,j,czi,j,ck2(C+1)k2(C+1) 个score maps中的一个 score map;
    • (x0,y0)(x0,y0) 表示一个ROI的左上角位置( top-left corner);
    • nn 是单元格中的像素数量;

    • Θ" role="presentation">Θ 表示网络所有的学习参数.
    • (i,j)(i,j) 个单元格占用的范围是 [iwk]x<[(i&#43;1)wk][iwk]≤x<[(i&#43;1)wk][jhk]x<[(j&#43;1)hk][jhk]≤x<[(j&#43;1)hk].
    • 上述公式中的操作在 Figure 1 中进行了例示&#xff0c;其中一种颜色代表一对 (i,j)(i,j).
    • 上述公式进行了平均 pooling&#xff0c;但也进行了 max pooling.
  • 在ROI上进行 k2k2 个 position-sensitive scores 投票.

    • 这里通过平均scores来进行简单投票&#xff0c;得到各个ROI的 (C&#43;1)(C&#43;1) 维向量&#xff1a;
      γc(Θ)&#61;i,jγc(i,jΘ))γc(Θ)&#61;∑i,jγc(i,j∣Θ)).
    • 计算各类别的 softmax 响应&#xff1a;
      sc(Θ)&#61;eγc(Θ)/Cc&#61;0eγc(Θ)sc(Θ)&#61;eγc(Θ)/∑c′&#61;0Ceγc′(Θ).
      被用来计算训练过程中的 cross-entropy loss&#xff0c;在推断时用来对ROIs进行排名.
  • 对于bounding box regression&#xff0c;只需要把 C&#43;1C&#43;1 改为4即可.

    • 除了 k2(C&#43;1)k2(C&#43;1)-d 的卷积层之外&#xff0c;又添加了一个 4k24k2-d 的卷积层&#xff0c;用于边界框回归.
    • 4k24k2 个maps上&#xff0c;进行 position-sensitive RoI pooling 操作&#xff0c;得到各个 ROI 的4k24k2-d 向量&#xff1b;
    • 通过 average voting&#xff0c;得到 4-d 向量&#xff0c;参数化边界框 t&#61;(tx,ty,tw,th)t&#61;(tx,ty,tw,th).

训练


  • Loss on each ROI
    • cross-entropy loss&#xff1a;Lcls(sc)&#61;log(sc)Lcls(sc∗)&#61;−log(sc∗) —— 分类
    • box regression loss&#xff1a;LregLreg —— 边界框回归
      L(s,tx,y,w,h)&#61;Lcls(sc)&#43;λ[c>0]Lreg(t,t)L(s,tx,y,w,h)&#61;Lcls(sc∗)&#43;λ[c∗>0]Lreg(t,t∗)
      其中&#xff0c;
      cc∗ 是ROI的 ground-truth label&#xff0c;c&#61;0c∗&#61;0 表示背景.
      如果参数为true&#xff0c; [c>0]&#61;1[c∗>0]&#61;1&#xff1b;否则 [c>0]&#61;0[c∗>0]&#61;0.
      tt∗ 是ground truth box.
      λ&#61;1λ&#61;1.
  • 如果与 ground-truth box 的 IoU 大于 0.5的ROIs&#xff0c;设为positive examples&#xff1b; 小于0.5&#xff0c;设为negative examples.
  • 单尺度训练(single-scale training)&#xff0c;将图像裁剪为最短边为 600 pixels的尺寸
  • 单个GPU训练一张图片&#xff0c;共8GPUs&#xff0c;选取 B&#61;128B&#61;128 个 ROIs作为备选.
  • fine-tune R-FCN&#xff0c;weight_decay &#61; 0.0005&#xff0c; momentum&#61;0.9&#xff0c;20K次 mini-batches的 lr&#61;0.001&#xff0c; 10K次mini-batches的 lr&#61;0.0001.

推断

如Figure 2 所示.
- 输入图像是单尺度的&#xff0c;尺寸为 600×600
- RPN和R-FCN的 feature map是计算是共享的
- RPN 提取 ROIs&#xff0c;R-FCN 估计各个类的 scores&#xff0c;以及回归边界框.
- 最后进行 NMS(non-maximum suppression) 后处理&#xff0c;IoU 阈值为 0.3.


À trous and stride


  • R-FCN 继承了FCN的网络的特点
  • R-FCN 将 ResNet-101 的有效步长由 32 pixels 减少到 16 pixels&#xff0c;以增加 score map 的分辨率
  • 在 conv4 stage之前的网络层保持不变(stride&#61;16)
  • 第一个 conv5 网络块的步长由 stride&#61;2 修改为 stride&#61;1&#xff0c;所有 conv5 stage的卷积 filters 根据 “hole algorithm” 进行修改&#xff0c;以补偿减少的步长.

可视化

如 Figure 3 和Figure 4&#xff0c;图示了当 k×k&#61;3×3k×k&#61;3×3时&#xff0c;由 R-FCN 学习得到 position-sensitive score maps.
- 这些得到的 maps 应该对于物体的相对位置具有较强的响应. 例如&#xff0c;“top-center-sensitive” 对于物体的 top-center 附近的位置应该具有high socre.
- 如果候选 box 能够与真实物体重叠较精确&#xff0c;如Figure 3&#xff0c; 则ROI的 k2k2 个单元格中的大部分被激活&#xff0c;且得到的投票分数较高.
- 如果候选 box 与真实物体不能正确重叠&#xff0c;如Figure 4&#xff0c;则ROI 的 k2k2 个单元格中的一些是不被激活的&#xff0c;且投票分数较低.


Result

这里写图片描述


相关


  • R-FCN&#xff1a;基于区域的全卷积网络来检测物体
  • R-FCN: Object Detection via Region-based Fully Convolutional Networks

推荐阅读
  • 带添加按钮的GridView,item的删除事件
    先上图片效果;gridView无数据时显示添加按钮,有数据时,第一格显示添加按钮,后面显示数据:布局文件:addr_manage.xml<?xmlve ... [详细]
  • 微软头条实习生分享深度学习自学指南
    本文介绍了一位微软头条实习生自学深度学习的经验分享,包括学习资源推荐、重要基础知识的学习要点等。作者强调了学好Python和数学基础的重要性,并提供了一些建议。 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • 不同优化算法的比较分析及实验验证
    本文介绍了神经网络优化中常用的优化方法,包括学习率调整和梯度估计修正,并通过实验验证了不同优化算法的效果。实验结果表明,Adam算法在综合考虑学习率调整和梯度估计修正方面表现较好。该研究对于优化神经网络的训练过程具有指导意义。 ... [详细]
  • 也就是|小窗_卷积的特征提取与参数计算
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了卷积的特征提取与参数计算相关的知识,希望对你有一定的参考价值。Dense和Conv2D根本区别在于,Den ... [详细]
  • 本文介绍了Swing组件的用法,重点讲解了图标接口的定义和创建方法。图标接口用来将图标与各种组件相关联,可以是简单的绘画或使用磁盘上的GIF格式图像。文章详细介绍了图标接口的属性和绘制方法,并给出了一个菱形图标的实现示例。该示例可以配置图标的尺寸、颜色和填充状态。 ... [详细]
  • vb.net不用多线程如何同时运行两个过程?不用多线程?即使用多线程,也不会是“同时”执行,题主只要略懂一些计算机编译原理就能明白了。不用多线程更不可能让两个过程同步执行了。不过可 ... [详细]
  • Java太阳系小游戏分析和源码详解
    本文介绍了一个基于Java的太阳系小游戏的分析和源码详解。通过对面向对象的知识的学习和实践,作者实现了太阳系各行星绕太阳转的效果。文章详细介绍了游戏的设计思路和源码结构,包括工具类、常量、图片加载、面板等。通过这个小游戏的制作,读者可以巩固和应用所学的知识,如类的继承、方法的重载与重写、多态和封装等。 ... [详细]
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • 推荐系统遇上深度学习(十七)详解推荐系统中的常用评测指标
    原创:石晓文小小挖掘机2018-06-18笔者是一个痴迷于挖掘数据中的价值的学习人,希望在平日的工作学习中,挖掘数据的价值, ... [详细]
  • [echarts] 同指标对比柱状图相关的知识介绍及应用示例
    本文由编程笔记小编为大家整理,主要介绍了echarts同指标对比柱状图相关的知识,包括对比课程通过率最高的8个课程和最低的8个课程以及全校的平均通过率。文章提供了一个应用示例,展示了如何使用echarts制作同指标对比柱状图,并对代码进行了详细解释和说明。该示例可以帮助读者更好地理解和应用echarts。 ... [详细]
  • 我用Tkinter制作了一个图形用户界面,有两个主按钮:“开始”和“停止”。请您就如何使用“停止”按钮终止“开始”按钮为以下代码调用的已运行功能提供建议 ... [详细]
  • 前端开发工程师必读书籍有哪些值得推荐?我们直接进入代码复杂版式设置,如下所示,先写些标签,源码在这个链接里面:https://codepen.io/Shadid ... [详细]
author-avatar
主持人谷佳霓期_426
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有