Faster R CNN

3 FASTER R-CNN

我们的Faster R CNN 由两个模块组成,第一个模块是 proposes regions 的全卷积网络,第二个是使用 proposed regions 的 Faster R CNN 检测器。

3.1 Region Proposal Networks

RPN以一个图像作为输入,并输出一组矩形object proposal 每个提案都有 客观的score,我们用一个完全卷积的我网络对这个过程进行建模。由于我们的最终目标是与faster r cnn 目标检测网络共享计算,我们假设这两个网络共享一组公共的卷积层。

为了产生proposal region 我们在最后一个共享卷积层输出的卷积特征图上滑动了一个小网络。该小网络采用输入卷积特征的 nxn 空间窗口作为输入。每个滑动窗口映射到一个低维特征。这个特征被输入到两个完全连接的同级层:一个boxes回归层, 一个box分类层。本文使用n=3,输入图像上的有效感受野很大。由于迷你网络以滑动的方式工作,全连接层是在所有空间位置共享的。该体系结构自然由nxn卷积层和两个1x1卷积层(分别用于reg和cls)实现。

3.1.1 Anchors

在每个滑动窗口位置,我们同时预测多个region proposal,其中每个位置最大可能方案数为k,因此reg层有4k输出编码k个框的坐标,cls输出2k分数,估计每个proposal region的的对象概率和非对象概率。

anchor位于滑动窗口的中心,默认情况下,我们使用3个尺度和3个纵横比,一共9个anchor,对于W×H的feature map 来说,一共有WHk个anchor。

Translation-Invariant Anchors

我们的方法保证了平移不变性。我们的方法有(4 + 2)× 9 维卷积输出层,因此我们的proposal 层的参数很少。

Multi-Scale Anchors as Regression References

我们的anchor解决了多尺度的挑战。对于多尺度,第一种,图像/特征金字塔的方法非常费时,如DPM,第二种,在feature map上使用多尺度的滑动窗口,使用不同的filter尺寸来训练不同长径比的模型。基于anchor的方法,依赖单一尺度的图像和feature map,并且使用单一大小的filter。可以很好的解决多尺度和大小问题。

3.1.2 Loss Function

我们给两种anchors指定正标签(1)与ground truth的IoU最高的anchor(2)IoU大于0.7的anchor,一个单一的ground truth 可以为多个anchor指定正标签。利用这些定义,我们对图像的loss函数定义为:

其中,pi时anchor作为一个对象的预测概率,如果anchor is positive,即IoU满足以上两个条件之一,那么ground truth 的标签值pi为1。ti是表示预测bounding boxes的4个坐标的参数,ti是与positive anchor 相关联的ground truth的向量。分类损失是两个类上的log loss,我们使用

R是robust loss function(smooth L1)。前面乘了p*i表示回归loss只对positive anchors激活,否则为0。

对于bounding box regression,我们采用以下4个坐标的参数化:

其中带* *号的是用于groud truth的坐标,不带 *号的是是anchor和predicted boxes,然而,我们实现bounding box 的方法不同于以往RoI的方法。在我们的公式中,用于回归的feature在feature map 上有相同的空间大小(3x3)。
为了解释不同的尺寸,学习了k个bounding box regressors,每个regressor负责一个尺度和纵横比,他们互相不共享权值。

3.1.3 Training RPNs

每一个mini-batch都是由一张图像产生的,它包含很多positive的anchor和negative的anchor,可以对所有anchor的loss函数进行优化,但这将偏向负样本,因为它们的量远大于正样本,所以,我们在图像中随机抽样256个anchor,其中采样的正样本和负样本比例为1:1,如果正样本不足128,则用负样本填充。

3.2 Sharing Features for RPN and Fast R-CNN

4-Step Alternating Training.

我们采用了一种使用的四步训练算法,通过交替优化学习共享特征,第一步,我们训练RPN,使用ImageNet预训练。第二步, 我们使用RPN产生的proposal region,通过快速R-CNN来训练一个单独的检测器网络,该网络进行预训练,此时,这两个网络不共享卷积层。第三步,我们使用检测器网络来初始化RPN训练,但是我们fix共享卷积层,只对unique layer of RPN进行微调,此时,这两个网络共享卷积层。第四步,保持共享卷积层的固定,我们微调unique layers of fast R-CNN。

还有一个更为简单的方法,就是end-to-end的训练方法,将RPN和Fast R-CNN结合起来一起训练。

补充RoI pooling

ROI pooling具体操作如下:
(1)根据输入image,将ROI映射到feature map对应位置;
(2)将映射后的区域划分为相同大小的sections(sections数量与输出的维度相同);
(3)对每个sections进行max pooling操作;
这样我们就可以从不同大小的方框得到固定大小的相应 的feature maps。值得一提的是,输出的feature maps的大小不取决于ROI和卷积feature maps大小。ROI pooling 最大的好处就在于极大地提高了处理速度。

参考:https://blog.csdn.net/AUTO1993/article/details/78514071

有一些实现细节,比如RPN网络得到的大约2万个anchor不是都直接给Fast-RCNN,因为有很多重叠的框。文章通过非极大值抑制的方法,设定IoU为0.7的阈值,即仅保留覆盖率不超过0.7的局部最大分数的box(粗筛)。最后留下大约2000个anchor,然后再取前N个box(比如300个)给Fast-RCNN。Fast-RCNN将输出300个判定类别及其box,对类别分数采用阈值为0.3的非极大值抑制(精筛),并仅取分数大于某个分数的目标结果(比如,只取分数60分以上的结果)

关于RPN:
https://blog.csdn.net/qq_36269513/article/details/80421990

关于nms:
https://www.cnblogs.com/makefile/p/nms.html

Faster R CNN相关推荐

  1. 经典神经网络 | Faster R-CNN论文解析

    论文题目:Faster R-CNN: T owards Real-Time Object Detection with Region Proposal Networks 论文链接:https://ar ...

  2. 万字深度好文!视觉-语言(VL)智能:任务、表征学习和大型模型

    来源:AI科技评论 编译:Jocelyn 编辑:陈彩娴 本文对视觉-语言(VL)智能按时间顺序进行了全面调研,并将这一领域的发展总结为三个阶段: 第一个阶段是2014-2018年,其间,专门的模型被设 ...

  3. 【AI视野·今日CV 计算机视觉论文速览 第162期】Fri, 27 Sep 2019

    AI视野·今日CS.CV 计算机视觉论文速览 Fri, 27 Sep 2019 Totally 55 papers ?上期速览✈更多精彩请移步主页 Interesting: TODO(rjj): de ...

  4. 【AI视野·今日CV 计算机视觉论文速览 第160期】Wed, 25 Sep 2019

    AI视野·今日CS.CV 计算机视觉论文速览 Wed, 25 Sep 2019 Totally 39 papers ?上期速览✈更多精彩请移步主页 Interesting: ?Interactive ...

  5. tensorflow 人面关键点识别_人工智能算法-图像识别项目

    电缆缺陷检测 各省市电网,需要建立一套完善的电缆线部件缺陷检测的平台,为各省市的电缆线部件 缺陷提供智能化的解决方案,进一步确保电网系统的安全运行.现在有些省市的电网缺陷部 件的检测仍采用人工查缺的方 ...

  6. 万字深度好文!VL最强总结!

    点击 机器学习算法与Python学习 ,选择加星标 精彩内容不迷路 本文转自AI科技评论 本文对视觉-语言(VL)智能按时间顺序进行了全面调研,并将这一领域的发展总结为三个阶段: 第一个阶段是2014 ...

  7. 【AI视野·今日CV 计算机视觉论文速览 第159期】Tue, 24 Sep 2019

    AI视野·今日CS.CV 计算机视觉论文速览 Tue, 24 Sep 2019 Totally 67 papers ?上期速览✈更多精彩请移步主页 Interesting: ?基于层次点和边缘交互的网 ...

  8. 关于数学建模、机器学习与深度学习的思考

    2016年5月,开始接触水利行业的洪水预警工作,然后就进入了数学建模的过程,进行洪水与降雨分析,后续经过了机器学习与深度学习的跑坑,对数学工具在现实工程进行作用进行总结. 数学建模:通过数学公式为手段 ...

  9. Learning Spatio-Temporal Transformer for Visual Tracking——精读笔记

    本篇精读笔记,对原文重要部分做了严格翻译,如摘要和总结.对正文部分做了提炼,对重点部分突出标注.对参考文献做了分类.本文内容较长,如果时间有限可以直接跳到感兴趣的小节阅读. 论文地址:https:// ...

最新文章

  1. 为什么顶尖高手,都是长期主义者?
  2. 微前端在美团外卖的实践
  3. 算法-- 删除排序链表中的重复元素(Java)
  4. Windows核心编程 第九章 线程与内核对象的同步(下)
  5. CENTOS6.6下zabbix2.4.7搭建
  6. asp.net 图片 上传 打水印 高质量缩略图
  7. react(82)--方法写在effects里面
  8. kakfa怎么看消息是否堆积_纯种哈士奇多少钱一只,怎么看是否是纯种哈士奇
  9. python3 os_Python3 标准库:os
  10. Filter过滤器链(多个过滤器)
  11. Node.js+windows
  12. 太赞了!终于有人把怎么在IDEA中使用Java热部署插件JRebel讲清楚了...
  13. angular4之管道
  14. html语言单个单元格背景颜色,html如何设置表格和单元格的背景颜色
  15. cba比赛比分预测_昨日预测CBA一红一黑,今日继续给大家带来CBA全部比赛4场
  16. Eclipse中Folder和SourceFolder
  17. 制造业必须应用RPA的十大环节
  18. 不用手机的群控,什么原理
  19. CSS overflow的几种属性值
  20. Shiro的 rememberMe 功能使用指导(为什么rememberMe设置了没作用?)

热门文章

  1. 类的继承层次结构的宽度和深度
  2. 密钥远程登录与scp
  3. 【SUMO学习】初级 OSMWebWizard
  4. 中国首富“叒”换人了
  5. 阿里云正式发布小程序Serverless 为用户提供一套代码多端使用
  6. 真实烟雾效果PS笔刷
  7. adb在小米电视上安装QQ 并使用遥控器操控部分功能
  8. truck 用法java_编写Java程序,创建一个父类交通工具类(Vehicles),以及两个子类,分别是轿车类(Car)和卡车类(Truck)。...
  9. 五款最棒的Go语言开发工具?
  10. 查询MIMIC-III