1. 引言

当前最先进的目标检测模型是由区域提案方法和基于区域的卷积神经网络引领的,由于共享计算,卷积网络花费的时间已经大大减小了,所以当前检测系统的瓶颈就是如何减小区域提案生成部分的花费时间。当前流行的区域提案方法之一SS就挺慢的,EdgeBoxes在提案生成的时候也很慢。

作者观察到用来生成特征图的基于区域的检测器(如fast RCNN)同样可以用于生成区域提案,于是作者提出使用一个深度卷积神经网络来计算提案,计算速度快到可以忽略,作者将这个用来计算提案的卷积网络叫做RPNs。它可以和后面的网络共享卷积层,于是计算每一个提案的边际成本就很低了。作者在检测器的前面加了几层卷积层用来生成实时的边框回归和目标置信分数,这几层卷积层构成了RPN。

作者引入了一个概念叫做anchor,它是一系列的尺度(大小)和比例(长宽比)不同的框。通过anchor这个概念所定义的模型避免了无数的图片或者不同尺度、比例的过滤器的使用。

为了将RPNs和Fast RCNN结合起来作者提出了一个交替进行训练和微调的反感,使用这个方案可以是网络寻思地融合并且卷积特征可以在两个模型里共享。

  1. 相关工作

目标提案。当前主流的目标提案方法主要有两类,一是基于超像素的(SS、CPMC、MCG,超像素是用一个个小色块逐渐融合变成较大的色块使计算机处理图片更快且显示出了物体边界),二是基于滑窗的。目标提案模块是独立于检测模块的。

用于目标检测的深度网络。RCNN主要是作为一个分类器,它不预测物体边界,它分类的准确率取决于提案划分的准确率。作者提到两个用深度网络来预测物体边界的网络,一个是overfeat,它在卷积层之前加了个全连接层来预测边界。一个是multibox,它的最后用于分类的全连接层可以同时预测边界,不过它并没有在提案和检测这两个模块之间共享特征。共享卷积计算目前吸引人们的点主要是它带来的速度的提升而不是精度,像overfeat和SPPnet都是为了提升速度才引入的共享计算。

  1. Faster RCNN

Faster RCNN是有两个模块结合而成的,一个是用于生成区域提案的卷积神经网络,一个是用于检测的Fast RCNN,RPN使用注意力机制告诉fast RCNN图片的哪里是重点。

    1. RPN

RPN是一个全卷积网络(FCN)接受任意大小的图片输入,输出一系列的矩形的目标提案,每个框带有一个目标置信分数。为了和fast rcnn层共享一套卷积层,作者使用了ZF和VGG16,分别有5和13层可共享的卷积层。

作者在最后一个共享的卷积层的输出(n*n)上加了一个小的滑窗用来降维,它是3*3大小的(因为这个大小的实验效果最好),ZF和VGG16的滑窗过后的维度分别为256和512。之后的特征图送到两个兄弟网络,一个是用于边框回归的reg模块一个是用于目标分类的cls模块。

      1. anchors

anchors是一系列预设好框,作者用了三种尺度三种比例一共k=9种anchors。

在图片上的每一个像素点用这个9个anchors去划定区域提案,所以reg层有4k个输出(一个框4个点一共k个框),cls层有2k个输出(是不是目标)

拥有平移不变性的anchors

如果改变了图片的大小那么提案还有与其相关的函数都要改变,使用anchors就可以保证平移不变性。对比实验中multibox用的是稀疏的800个anchors,它不能保证平移不变性,而且multibox有(4+1)*800维的全连接层输出,作者的这个方法只有(9+1)*9 维的卷积输出,这样一来参数量也比multibox大大减小了(1536 * (4 + 1) * 800 for GoogleNet  in MultiBox→512 *(4 + 2) * for VGG16)

作为回归引用(Regression References的多尺度的anchors

目前流行的多尺度边框预测主要有两种,一种是基于图像金字塔,这种方法里图片被变换成好几个尺寸,每一个尺寸都计算一个特征图,这种方法是有效的但是很花时间。第二种方法是在特征图上使用多尺度的滑窗,比如DPM,它使用了几种边长比例不同的滑窗,每种滑窗使用不同大小的过滤器分别训练,这种方法可以被叫做过滤器金字塔。第二种方法常常和第一种方法结合在一起。

作者提出的这个anchors也是一种金字塔结构,它只需要使用一种大小的滑窗,这种多尺度的anchors设计使是实现共享卷积计算的关键。

      1. 损失函数

每个anchor被打上1/0标签代表正/负样本,被标记为正样本的anchor有两种,一是和某个GT重叠的所有anchors里IOU最高的那个;二是和一个GT重叠度大于0.7的,一般来说主要是第二种情况,但少数样本会出现第一种情况。和任意一个GT的IOU都小于0.3的被标记为负样本,非正非负的样本不参与后续的训练。损失函数和fast RCNN一样是一个多任务的损失函数:

i是anchor在mini-batch里的索引,pi是预测的框里是否有目标的可能性,是GT标签为0或1,只有它等于1的时候回归损失才会被激活。ti是框的4个定位点,是GT的定位点。作者通过实验得出结果λ=10的时候效果最好,所以λ=10,使reg和cls的权重大致相等。

边框回归计算

x是预测的框,xa是anchor的框,x*是GT框。

有时间了再继续读完

Faster RCNN论文阅读的更多相关文章

  1. Faster R-CNN论文阅读摘要

    论文链接: https://arxiv.org/pdf/1506.01497.pdf 代码下载: https://github.com/ShaoqingRen/faster_rcnn (MATLAB) ...

  2. [原创]Faster R-CNN论文翻译

    Faster R-CNN论文翻译   Faster R-CNN是互怼完了的好基友一起合作出来的巅峰之作,本文翻译的比例比较小,主要因为本paper是前述paper的一个简单改进,方法清晰,想法自然.什 ...

  3. k[原创]Faster R-CNN论文翻译

    物体检测论文翻译系列: 建议从前往后看,这些论文之间具有明显的延续性和递进性. R-CNN SPP-net Fast R-CNN Faster R-CNN Faster R-CNN论文翻译   原文地 ...

  4. Faster R-CNN论文详解 - CSDN博客

    废话不多说,上车吧,少年 paper链接:Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks ...

  5. Faster RCNN论文学习

    Faster R-CNN在Fast R-CNN的基础上的改进就是不再使用选择性搜索方法来提取框,效率慢,而是使用RPN网络来取代选择性搜索方法,不仅提高了速度,精确度也更高了 Faster R-CNN ...

  6. Faster RCNN论文解析

    Faster R-CNN由一个推荐区域的全卷积网络和Fast R-CNN组成, Fast R-CNN使用推荐区域.整个网络的结构如下: 1.1 区域推荐网络 输入是一张图片(任意大小), 输出是目标推 ...

  7. Fast R-CNN论文阅读摘要

    论文链接: https://arxiv.org/pdf/1504.08083.pdf 代码下载: https://github.com/rbgirshick/fast-rcnn Abstract Co ...

  8. Fast R-CNN论文阅读笔记

    论文地址:Fast R-CNN R-CNN的缺陷 (1)训练是一个多级的流水线.R-CNN首先在候选目标上微调一个卷积神经网络,使用log loss.然后使用SVMs充当目标分类器,以取代softma ...

  9. R-CNN论文阅读摘要

    论文链接: https://arxiv.org/pdf/1311.2524.pdf Abstract Our approach combines two key insights: (1) one c ...

  10. RCNN论文阅读笔记

    一摘要: 两个主要工作:1将cnn和自上而下的区域提案结合进行定位和对象分割:2当训练数据稀缺时,先预训练然后微调. rccn工作分为四步:1输入一张图片 2用selective search算法对每 ...

随机推荐

  1. 关于Springboot启动报错 Whitelabel Error Page: This application has no explicit mapping

    Whitelabel Error Page This application has no explicit mapping for /error, so you are seeing this as ...

  2. cURL error 1014: SSL verify failed 报错

    报错 [ERROR] cURL error 1014: SSL verify failed (see https://curl.haxx.se/libcurl/c/libcurl-errors.htm ...

  3. 在js中正则表达式验证小时分钟,将输入的字符串转换为对应的小时和分钟

    文章目录 1.预备知识 2.在js中的代码片段 3.测试结果 1.预备知识 splict()方法 Date()的相关方法 setHours()的用法 2.在js中的代码片段 //验证小时和分钟 var ...

  4. go-zero docker-compose 搭建课件服务(七):prometheus+grafana服务监控

    0.转载 go-zero docker-compose 搭建课件服务(七):prometheus+grafana服务监控 0.1源码地址 https://github.com/liuyuede123/ ...

  5. Android掌控WiFi不完全指南

    前言 如果想要对针对WiFi的攻击进行监测,就需要定期获取WiFi的运行状态,例如WiFi的SSID,WiFi强度,是否开放,加密方式等信息,在Android中通过WiFiManager来实现 WiF ...

  6. 基于Seq2Seq和注意力机制的句子翻译

    Seq2Seq(Attention) 目录 Seq2Seq(Attention) 1.理论 1.1 机器翻译 1.1.1 模型输出结果处理 1.1.2 BLEU得分 1.2 注意力模型 1.2.1 A ...

  7. day03-CSS

    CSS 1.css介绍 css指的是层叠样式表(cascading style sheets) 官方文档:https://www.w3school.com.cn/css/index.asp 为什么需要 ...

  8. iptables和firewalld基础

    1.四表五链概念: filter表 过滤数据包 Nat表 用于网络地址转换(IP.端口) Mangle表 修改数据包的服务类型.TTL.并且可以配置路由实现QOS Raw表 决定数据包是否被状态跟踪机 ...

  9. Python基础之函数:3、多层语法糖、装饰器和装饰器修复技术及递归函数

    目录 一.多层语法糖 1.什么是多层语法糖: 2.多层语法糖用法: 二.有参装饰器 1.什么是有参装饰器: 2.有参装饰器的作用: 三.装饰器修复技术 1.什么是装饰器修复技术: 四.递归函数 1.什 ...

  10. Go语言核心36讲40

    我相信,经过上一次的学习,你已经对strings.Builder和strings.Reader这两个类型足够熟悉了. 我上次还建议你去自行查阅strings代码包中的其他程序实体.如果你认真去看了,那 ...