Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks论文笔记

本文主要是介绍Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks论文笔记,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

http://blog.csdn.net/bailufeiyan/article/details/50575150(感谢大神们)

Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks

这篇文章讲述了 Faster R-CNN,介绍了 RPN、Translation-Invariant Anchors、loss-function 等概念。实现了 RPN 网络和 Fast-RCNN 网络的融合,即,在提取 OP 的同时进行物体检测。

Abstract

依赖 op 的 object detection 网络取得了目前最优的性能。SPPnet 和 Fast RCNN 网络,都降低了检测时间,同时,OP 也成为了计算瓶颈。在本文的工作中,介绍了 Region proposal Network(RPN),可以得到 cost-free 的 op。RPN 网络是全卷积网络,同时预测出 object 的 边界以及 object 的分数。*RPN 可以端到端的生成高质量的 OP,之后使用 Fast-RCNN 进行检 测。使用简单的交替优化,RPN 和 Fast R-CNN 可以分享卷积特征。使用 VGG-16 网络,检测 系统使用 GPU 可以达到 5fps,同时,每张图像仅仅使用 300 个 op,*在 PASCAL VOC2007 数 据集 map73.2%,2012 的数据集上 map 为 70.4%,都取得了目前最好的性能。

内容整理

Faster R-CNN 可以看做是对 Fast R-CNN 的进一步加速,可以快速获得 proposal。一般 的做法都是利用显著性目标检测(如 Selective search)过一遍待检测图,得到 proposal。基 于区域的深度卷积网络虽然使用了 GPU 进行加速,但是 op 的提取却都是在 CPU 上实现 的,这就大大地拖慢了整个系统的速度。然后作者提出,卷积后的特征图也可以用来生成 regionproposals 的。通过增加两个卷积层来实现 RegionProposalNetworks(RPNs), 其中一 个用于编码每一个卷积,将其生成低维特征;另一个,对于每一个卷积输出分数和边界(分 数是 2k 个,包含了 object 和 non-object 两个分数)。

Region Proposal Networks

RPNs 从任意尺寸的图片中得到一系列的带有分数的objectproposals。具体流程是:使 用一个小的网络在最后卷积得到的特征图上进行滑动扫描,这个滑动的网络每次与特征图上 n*n 的窗口全连接(这里 n=3),然后映射到一个低维向量,例如 256D 或 512D, 最后将这个 
低维向量送入到两个全连接层,即 box 回归层(box-regression layer (reg))和 box 分类层(box- regression layer (reg))。 
RPNs 是全卷积网络,为了与 Fast R-CNN 共享卷积,作者给出了一种简单的训练方法:通 过交替优化来学习共享的特征,主要有 4 步:1. 使用前面的方法训练一个 RPN。用 ImageNet 的 model 初始化,然后针对 region proposal task 进行微调。2. 利用第一步得到 的 proposals 使用 Fast R-CNN 来训练另一一个单独的 detection network, 到这里两个网 络还是分开的,没有 share conv layers 。3. 利用第二部训练好的 detection network 来初始 化 RPN , 然后训练,这里训练的时候固定 conv layers ,只微调 RPN 那一部分的网络 层。4. 再固定 conv layers ,只微调 Fast R-CNN 的 fc 层。也就是交替微调 rpn 和 fast- rcnn 网络。 
这里写图片描述

Translation-Invariant Anchors

在每一个滑动窗口,可以预测出 k 的 proposal,对应着是 4k 个坐标(x,y,w,h)以 及 2k 个分数(object/not-object)。这里引入了 anchor(锚点),我理解的是,为了保证平移 不变性,需要确定锚点(这里好像是窗口中心),之后以锚点为中心进行多个尺度、宽高比 
的采样。如上图右边,文中使用了 3 个尺度( 128, 256, and 512)以及 3 个比例(1:1,1:2,2:1), 也就是这里 k 为 9。

A Loss Function for Learning Region Proposals

为了训练网络,作者使用二分类的标签(0,1)。只有符合以下两点才被认为是正样本: 与 ground-truth box 有最高的 IoU 或与任意一个 ground-truth box 的 IoU 大于 0.7 的 anchor。如果与所有 ground-truth box 的 IoU 都小于 0.3 的 anchor 都标为 negative label。 其余非正非负的被丢掉。 
对于每一个 anchor box i, 其 loss function 定义为: 
这里写图片描述

其中,pi 是预测其是一个 object 的 probability ,当其 label 为 positive 时,pi为 1,否则为0。ti={tx,ty,tw,th}是预测的 boundingbox, ti是与这个 anchor 相对应的 ground-truth box 。 classification loss Lcls 是一个二分类(是或者不是 object)的 softmax loss 。

Optimization

使用 back-propagation and stochastic gradient descent (SGD) 对这个 RPN 进行训练,每 张图片随机采样了 256 个 anchors , 这里作者认为如果使用所有的 anchors 来训练的话,会 使得负样本占据主要地位。所以这里作者将采样的正负比例为 1:1. 新增的两层使用高斯来 初始化,其余使用 ImageNet 的 model 初始化。

Experiment

在 FasterRCNN 中,OP 的个数大大减少,在网络 forward 的过程中,一张图像只生成约 300 个 OP 的框,同时由于 OP 在网络中通过 GPU 生成,计算的时间约 10ms,Cost 非常小,常规方法主要是通过 CPU 计算,耗时都在 500MS 以上 
这里写图片描述

FasterRCNN 的 RPN 网络中,其实单纯的 RPN 网络对于 OP 指标的提升并不明显,但是 将 OP 融入到网络中去是其最大的亮点,同时可以达到实时,在 OP 的性能提升上相比较传 统的方法大约提高 1.5 个百分点

思考与讨论

  1. 这篇文章的主要贡献是,实现了 OP 提取和检测的卷积数据共享,做到了 OP cost-free, 并且,只使用 300 个 OP 就可以达到很好的性能,在这里 OP 性能提升了 1.5 个点,检测提 升了 8 个点。
  2. 在训练时,RPN 网络在 PASCAL VOC 上 op 的 ground-truth,是使用 selective search 方法获取的 op,将其作为 GT 是否合适?
  3. 另一方面,加入 RPN 网络,训练时间明显增加,fast-rcnn 只需要进行 40000 次迭代, 使用 faster-rcnn,在四个阶段分别进行 RCN 网络 80000 次迭代,fast-rcnn 网络 40000 次迭 代,RCN 80000 次迭代,fast-rcnn40000 次迭代。

这篇关于Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks论文笔记的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/983426

相关文章

AI hospital 论文Idea

一、Benchmarking Large Language Models on Communicative Medical Coaching: A Dataset and a Novel System论文地址含代码 大多数现有模型和工具主要迎合以患者为中心的服务。这项工作深入探讨了LLMs在提高医疗专业人员的沟通能力。目标是构建一个模拟实践环境,人类医生(即医学学习者)可以在其中与患者代理进行医学

【学习笔记】 陈强-机器学习-Python-Ch15 人工神经网络(1)sklearn

系列文章目录 监督学习:参数方法 【学习笔记】 陈强-机器学习-Python-Ch4 线性回归 【学习笔记】 陈强-机器学习-Python-Ch5 逻辑回归 【课后题练习】 陈强-机器学习-Python-Ch5 逻辑回归(SAheart.csv) 【学习笔记】 陈强-机器学习-Python-Ch6 多项逻辑回归 【学习笔记 及 课后题练习】 陈强-机器学习-Python-Ch7 判别分析 【学

系统架构师考试学习笔记第三篇——架构设计高级知识(20)通信系统架构设计理论与实践

本章知识考点:         第20课时主要学习通信系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分),而在历年考试中,案例题对该部分内容的考查并不多,虽在综合知识选择题目中经常考查,但分值也不高。本课时内容侧重于对知识点的记忆和理解,按照以往的出题规律,通信系统架构设计基础知识点多来源于教材内的基础网络设备、网络架构和教材外最新时事热点技术。本课时知识

论文翻译:arxiv-2024 Benchmark Data Contamination of Large Language Models: A Survey

Benchmark Data Contamination of Large Language Models: A Survey https://arxiv.org/abs/2406.04244 大规模语言模型的基准数据污染:一项综述 文章目录 大规模语言模型的基准数据污染:一项综述摘要1 引言 摘要 大规模语言模型(LLMs),如GPT-4、Claude-3和Gemini的快

论文阅读笔记: Segment Anything

文章目录 Segment Anything摘要引言任务模型数据引擎数据集负责任的人工智能 Segment Anything Model图像编码器提示编码器mask解码器解决歧义损失和训练 Segment Anything 论文地址: https://arxiv.org/abs/2304.02643 代码地址:https://github.com/facebookresear

数学建模笔记—— 非线性规划

数学建模笔记—— 非线性规划 非线性规划1. 模型原理1.1 非线性规划的标准型1.2 非线性规划求解的Matlab函数 2. 典型例题3. matlab代码求解3.1 例1 一个简单示例3.2 例2 选址问题1. 第一问 线性规划2. 第二问 非线性规划 非线性规划 非线性规划是一种求解目标函数或约束条件中有一个或几个非线性函数的最优化问题的方法。运筹学的一个重要分支。2

【C++学习笔记 20】C++中的智能指针

智能指针的功能 在上一篇笔记提到了在栈和堆上创建变量的区别,使用new关键字创建变量时,需要搭配delete关键字销毁变量。而智能指针的作用就是调用new分配内存时,不必自己去调用delete,甚至不用调用new。 智能指针实际上就是对原始指针的包装。 unique_ptr 最简单的智能指针,是一种作用域指针,意思是当指针超出该作用域时,会自动调用delete。它名为unique的原因是这个

查看提交历史 —— Git 学习笔记 11

查看提交历史 查看提交历史 不带任何选项的git log-p选项--stat 选项--pretty=oneline选项--pretty=format选项git log常用选项列表参考资料 在提交了若干更新,又或者克隆了某个项目之后,你也许想回顾下提交历史。 完成这个任务最简单而又有效的 工具是 git log 命令。 接下来的例子会用一个用于演示的 simplegit

记录每次更新到仓库 —— Git 学习笔记 10

记录每次更新到仓库 文章目录 文件的状态三个区域检查当前文件状态跟踪新文件取消跟踪(un-tracking)文件重新跟踪(re-tracking)文件暂存已修改文件忽略某些文件查看已暂存和未暂存的修改提交更新跳过暂存区删除文件移动文件参考资料 咱们接着很多天以前的 取得Git仓库 这篇文章继续说。 文件的状态 不管是通过哪种方法,现在我们已经有了一个仓库,并从这个仓

忽略某些文件 —— Git 学习笔记 05

忽略某些文件 忽略某些文件 通过.gitignore文件其他规则源如何选择规则源参考资料 对于某些文件,我们不希望把它们纳入 Git 的管理,也不希望它们总出现在未跟踪文件列表。通常它们都是些自动生成的文件,比如日志文件、编译过程中创建的临时文件等。 通过.gitignore文件 假设我们要忽略 lib.a 文件,那我们可以在 lib.a 所在目录下创建一个名为 .gi