详解RPN网络[通俗易懂]

详解RPN网络[通俗易懂]引言RPN(RegionProposalNetwork)是Faster-RCNN网络用于提取预选框(也就是RCNN中使用selectivesearch算法进行RegionProposal的部分),我们知道RCNN及Fast-RCNN中一个性能瓶颈就是提取预选框的部分,而RPN很好地对这个部分进行了优化,原因在于它将卷积神经网络引入了进来,使用特征提取的形式生成出预选框的位置从而降低了selectivesearch算法带来的计算时间上的开销。RPN(RegionProposalNetwor

大家好,又见面了,我是你们的朋友全栈君。

引言

RPN(Region Proposal Network)是Faster-RCNN网络用于提取预选框(也就是RCNN中使用selective search算法进行Region Proposal的部分),我们知道RCNN及Fast-RCNN中一个性能瓶颈就是提取预选框的部分,而RPN很好地对这个部分进行了优化,原因在于它将卷积神经网络引入了进来,使用特征提取的形式生成出预选框的位置从而降低了selective search算法带来的计算时间上的开销。

RPN( Region Proposal Network) :-

在这里插入图片描述
CNN从特征图中学习分类的方式,RPN也从特征图中学习生成这些候选框。一个典型RPN网络如图所示。它的网络流程如下:

step1

在第一步中,我们的输入图像通过卷积神经网络,其最后一层将特征图作为输出;

step2

在这一步骤中,滑动窗口通过上一步骤得到的特征图进行运行。滑动窗口的大小为n*n(这里是3×3)。对于每个滑动窗口,生成一组特定的锚,但有3种不同的长宽比(1:1, 1:2, 2:1)和3种不同的长宽(128, 256和512)的方框,如下所述:

  1. 有3种不同的长宽比和3种不同的方框,所以特征图中每个像素共可有9种方案;
  2. 在特征图大小为W * H的情况下,锚箱的总数量和特征图每个位置的锚数量为K,可以给出W * H * K。

下图显示了尺寸为(600, 900)的图像的(450, 350)位置的9个锚点。
在这里插入图片描述
在上图中,三种颜色代表三种比例或尺寸(128×128, 256×256, 512×512)。让我们把绿色的盒子/锚单列出来。这三个盒子的高度宽度比例分别为1:1、1:2和2:1。

step3

现在,我们已经为特征图的每个位置设置了9个锚定框。但可能有很多盒子里没有任何物体。因此,模型需要学习哪些锚箱可能有我们的对象。有我们的物体的锚箱可以被归类为前景,其他的则是背景。同时,模型需要学习前景框的偏移量,以适应物体。 这就把我们带到了下一个步骤。

step4

锚箱的定位和分类是由边界箱调节器层和边界箱分类器层完成的。边界盒分类器计算地面真实盒与锚定盒的物性得分,并以一定的概率(又称物性得分)将锚定盒分类为前景或背景。
Bounding box Regressor层学习x,y,w,h值相对于已分类为前景的Anchor Box的偏移(或差异),其中(x,y)是盒子的中心,w和h是宽度和高度。由于RPN是一个模型,每个模型都有一个成本函数来训练,所以RPN也是如此。 RPN的损失函数可以表示如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

举例

让我们用一个例子来回顾RPN的整个流程。假设我们有一张大小为600×800的图像,在通过卷积神经网络(CNN)块后,这幅输入图像缩小为38×56的特征图,特征图的每个位置都有9个锚点盒。那么我们就有38 * 56 * 9=1192个建议或锚箱需要考虑。而每个锚箱都有两个可能的标签(前景或背景)。如果我们把特征图的深度定为18(9个锚点x 2个标签),我们将使每个锚点都有一个有两个值的向量(通常称为预测值),代表前景和背景。如果我们将预测值送入softmax/logistic回归激活函数,它将预测标签。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/152296.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 如何查看vue版本和vue/cli的版本

    如何查看vue版本和vue/cli的版本经常有人以为vue-V是查看vue的版本,但其实不是,一开始自己迷迷糊糊也以为是,后来查文档之后才知道正确答案,特此在这里总结一下,那么这条博客就当是开启学习vue3之路的第一条笔记叭~如果查看vue版本和vue/cli脚手架的版本,这里共有两种方式:一、命令行vue版本npmlistvuevue/cli版本vue-V部分截图:二、package.json文件查看package.json文件相关依赖版本号:…

  • 高并发架构消息队列面试题(全面解剖面试官心理)

    高并发架构消息队列面试题(全面解剖面试官心理)

  • 2020年精心收集的十个Java开发网站

    2020年精心收集的十个Java开发网站不管谁手里都藏着些许自己觉得好用的网站,今天专门找大厂出来的同学同事觉得好用的网站分享给大家,如果这里有你没收藏还不知道觉得还蛮有用的网站可以给我点个赞,大家一起进步,一起学习,同时也可以分享你觉得好用实用的网站,分享快乐0.0好了,废话不多说,咋们上干货:一、GithubGitHub是一个面向开源及私有软件项目的托管平台,一个拥有数十亿行代码的网站,每天有数百万开发者聚集在一起,研究开源软件中存在的问题。对于我们程序猿来说,如果不想重复造轮子,就必须要站在巨人的肩膀上,那么巨人是谁呢?就是Gi

  • linux某用户 计划任务,Linux计划任务管理

    linux某用户 计划任务,Linux计划任务管理Linux计划任务管理前言:在Linux操作系统中,除了用户即时执行的命令操作以外,还可以配置在指定的时间、指定的日期执行预先计划好的系统管理任务(如定期备份、定期采集监测数据)。RHEL6系统中默认已安装了at、cronie软件包,通过atd和crond这两个系统服务实现一次性、周期性计划任务的功能,并分别通过at、crontab命令进行计划任务设置。一、at命令一次性计划任务前提条件:对应的系…

  • Linux ab 压力测试

    Linux ab 压力测试

  • 查看端口 并关闭端口

    查看端口 并关闭端口假如在Windows平台下,我们的端口号被谁占用了,以8080端口为例:       在,命令行输入:netstat-nao出现: 协议 本地地址     外部地址    状态     PID TCP  0.0.0.0:135      0.0.0.0:0       LISTENING  

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号