Faster RCNN系列1——Anchor生成过程

news2024/11/15 22:46:22

Faster RCNN系列:

Faster RCNN系列1——Anchor生成过程
Faster RCNN系列2——RPN的真值与预测值概述
Faster RCNN系列3——RPN的真值详解与损失值计算
Faster RCNN系列4——生成Proposal与RoI
Faster RCNN系列5——RoI Pooling与全连接层

一、RPN模块概述

  RPN模块的输入、输出如下:

  • 输入:feature map(输入图像经过特征提取网络后得到的特征图)、物体标签(训练集中所有物体的类别和边框信息)
  • 输出:Proposal(生成的建议框)、分类Loss回归Loss

二、Anchor生成

  Anchor的本质是在原图大小上的一系列的矩形框,Anchor的生成过程和深度学习没有任何的关系,他的本质只是你设定好一些规则,并依据这些规则,在图像中生成不同尺寸,不同长宽比的框,并希望这些框能够最终覆盖你的物体。

  Anchor生成的核心代码如下:

def generate_anchors(base_size=16, ratios=[0.5, 1, 2], scales=2**np.arange(3, 6)) :
	#首先创建一个基本Anchor为[001515]
	base_ anchor = np.array([1, 1, base_ size, base_ size])1
	#将基本Anchor进行宽高变化,生成三种宽高比的s :Anchor
	ratio_anchors = _ratio_enum(base_anchor, ratio)
	#将上述Anchor再进行尺度变化,得到最终的9种Anchors
	anchors = np.vstack([_scale_enum(ratio_anchors[i, :], scales)
						for i in xrange (ratio anchors.shape [0])])
	井返回对应于feature map大小的Anchors
	return anchors

  传入参数中base_size=16,表示feature map上每一个的感受野大小,即feature map上的每一个点对应输入图像上 16 × 16 16×16 16×16大小的区域。ratios=[0.5, 1, 2],表示缩放比率;scales=2**np.arange(3, 6),即 s c a l e s = [ 2 3 , 2 4 , 2 5 ] = [ 8 , 16 , 32 ] scales=[2^{3}, 2^{4}, 2^{5}]=[8, 16, 32] scales=[23,24,25]=[8,16,32],表示缩放倍数。

  • base_ anchor = np.array([1, 1, base_ size, base_ size]) - 1

  这是一个左上角坐标为(0, 0),宽和高都为15的框,大小为16×16,之后的Anchor框都是在这个框的基础上,通过比率和倍数变换得到的。

  • ratio_anchors = _ratio_ enum(base_anchor, ratio)

  将上述生成的 16 × 16 16×16 16×16的基础框,按照 1 : 2 1:2 1:2 1 : 1 1:1 1:1 2 : 1 2:1 2:1三种比例进行变换,如下图所示:

在这里插入图片描述

  • anchors = np.vstack([_scale_enum(ratio_anchors[i, :], scales)
              for i in xrange (ratio anchors.shape [0])])

  将上述生成的Anchor按照 [ 8 , 16 , 32 ] [8, 16, 32] [8,16,32]的倍率进行变换,如下图所示:

在这里插入图片描述

  在Faster RCNN中,输入图像的大小为 3 × 600 × 800 3×600×800 3×600×800,下采样率为 16 16 16,feature map的大小为 512 × 37 × 50 512×37×50 512×37×50,因此一共有 37 × 50 × 9 = 16650 37×50×9=16650 37×50×9=16650个Anchors。而后通过分类网络与回归网络得到每一个Anchor的前景背景概率和偏移量,前景背景概率用来判断Anchor是前景的概率,回归网络则是将预测偏移量作用到Anchor.上使得Anchor更接近于真实物体坐标。

在这里插入图片描述

Anchor原理图

参考文章

Faster RCNN之Anchors的生成过程理解

《深度学习之Pytorch物体检测实战》

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/446878.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

jsp946+java物流信息管理平台-sqlserver

本系统是一个独立的系统,用来解决物流信息信息的管理问题。采用JSP技术构建了一个有效而且实用的物流信息信息管理平台,目的是为高效地完成对物流信息信息的管理。 1、内部办公功能:包含工作计划、通告管理、公文管理; 包括可以…

手机录音误删怎么恢复?恢复录音,就这么简单!

案例:手机录音删除了还能恢复吗? 【友友们,苹果手机录音删除了还可以恢复吗?里面有一些关于会议记录的录音,不小心被我删了,有哪些方法可以快速恢复录音文件?】 如果您在使用iPhone手机录音时误…

Python小姿势 - ### Python之禅

Python之禅 Python之禅(The Zen of Python)是Python之父Guido van Rossum所著的一篇文章,总结了Python语言的哲学。 文章开头写道: Beautiful is better than ugly. Explicit is better than implicit. Simple is better than com…

代码随想录--字符串--反转字符串题型

反转字符串 不能给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。 我们直接用双指针,一个指头一个指尾,swap交换,然后同时往中间走一步再进入循环交换即可。 反转字符串II 这道题我们容…

linux(18.04)编译安装python3.6的全过程,pip python不与linux系统环境混乱

因为使用要求,使得我需要在linux环境下安装一个独立的python环境,不干扰其他环境。 一,下载python资源包 两种下载方式二选一,谁快选谁 linux下载: 不同的python版本,安装过程是一样的,下载…

蒙层禁止页面滚动

学习链接&#xff1a;蒙层禁止页面滚动的方案 <!DOCTYPE html> <html> <head><meta charset"utf-8"><meta name"viewport" content"widthdevice-width, initial-scale1"><title>蒙层禁止页面滚动的方案<…

Map Reduce高级篇:Join-Reduce

Join关联操作 背景 在实际的数据库应用中&#xff0c;我们经常需要从多个数据表中读取数据&#xff0c;这时就可以使用SQL语句中的连接&#xff08;JOIN&#xff09;&#xff0c;在两个或者多个数据表中查询数据。在使用MapReduce框架进行数据查询的过程中&#xff0c;也会涉…

React Refs

React 支持一种非常特殊的属性 Ref &#xff0c;可以用来绑定到 render() 输出的任何组件上。 这个特殊的属性允许引用 render() 返回的相应的支撑实例 &#xff08; backing instance &#xff09;。这样就可以确保在任何时间总是拿到正确的实例。 使用&#xff1a; 绑定一…

Linux基础—DHCP原理与配置

Linux基础—DHCP原理与配置 一、DHCP工作原理1.了解DHCP服务使用DHCP的优势DHCP的分配方式 2.DHCP的IP地白动获取工作原理: 二、配置DHCP服务器三、DHCP场景应用实验 一、DHCP工作原理 1.了解DHCP服务 DHCP(Dynamic HostConfiguration Protocol&#xff0c;动态主机配置协议) …

网络基础入门

目录 网络存在的意义 网络发展 网络在哪里&#xff1f; 网络是分层的 理解分层 软件可以分层 网络协议栈也是层状结构 认识协议 协议是什么 协议分层 网络传输需要解决的四个问题 OSI七层模型&#xff08;了解为主&#xff09; TCP/IP五层&#xff08;或四层&…

LVS --一文精通

目录 dns解析 下一跳机制 LVS:NAT LVS: IP TUN隧道 LVS: DR DR> TUN > NAT > FULL NAT dns解析 DNS本地域名服务器&#xff0c;当用户访问一个网址&#xff0c;计算机就会提出域名解析请求&#xff0c;并发给本地域名服务器&#xff0c;本地域名服务器收到请求…

你真正了解低代码么?(国内低代码平台状况分析)

■ 写在前面■ 低代码产品如何分类&#xff0c;90% 的人都没有搞清楚■ 低代码平台如何比较&#xff1f;Point 在哪儿&#xff1f;一个比喻大家全听懂■ “拼”出来的低代码平台&#xff0c;真的好用吗&#xff1f;■ 推荐一款 C 端低代码产品 ■ 写在前面 都说技术是生产力&a…

每日一个小技巧:1分钟告诉你如何给黑白照片上色

你是否有过这样的经历&#xff1a;在家翻出爷爷奶奶的旧照片时&#xff0c;发现它们都是黑白色的&#xff0c;无法体现当时的真实色彩&#xff1f;由于一些老照片的拍摄时间较早&#xff0c;因此都是以黑白形式存在的&#xff0c;这样的照片不仅影响观感&#xff0c;还抑制了我…

SAS学习第11章:试验设计

试验设计必须遵循以下原则&#xff1a;重复、随机、局部控制。 重复即每个处理都要有至少2个试验单位&#xff0c;目的是估计试验误差&#xff0c;降低试验误差。若只有1个观测值&#xff0c;无法估计试验误差。平均数抽样误差估计值大小与重复次数的平方成反比&#xff0c;适…

Linux基础——DNS服务器原理及搭建

Linux基础——DNS服务器原理及搭建 一、DNS服务器原理1.DNS系统分布式数据结构2.DNS查询类型3.DNS服物器类型 二、搭建DNS域名解析服务器步骤1.安装bind软件包2. 查看需要修改的配置文件所在路径3. 修改主配置文件4. 修改区域配置文件&#xff0c;添加正向区域配置5.配置正向区…

量化择时——LSTM深度学习量化择时(第1部分—因子测算)

之前我们尝试使用SVM&#xff0c;将时序数据转为横截面的数据&#xff0c;使用机器学习的方法进行预测 量化择时——SVM机器学习量化择时&#xff08;第1部分—因子测算&#xff09;&#xff1a; https://blog.csdn.net/weixin_35757704/article/details/129909497 但是因为股…

轻松解决ChatGPT网络报错,畅享沟通

ChatGPT的确很不错&#xff0c;无论是在什么岗位&#xff0c;使用它都可以让工作的你提升效率&#xff0c;可是我们经常会遇到一个神奇的网络报错&#xff08;当我们一会不使用就来个这样的效果提示&#xff09;&#xff0c;是不是头大&#xff1f; 好了&#xff0c;开始进入正…

实验二:华为云ModelArts订阅口罩检测模型

华为云ModelArts订阅口罩检测模型 1、通过实验提示的网址进入口罩检测模型&#xff1b;拖动窗口找到并点击订阅按钮&#xff1b;勾选温馨提示中复选框内容&#xff1b; 2、点击红色“前往控制台”按钮&#xff0c;选择华北-北京四&#xff0c;并确定&#xff1b; 3、等待同步完…

Jakarta EE - Java EE的又一个名字

Jakarta EE并不是新技术&#xff0c;他的前身就是大家熟悉的Java EE&#xff0c;老一辈的程序员可能还记得J2EE&#xff0c;是的&#xff0c;他们都是同一个东西&#xff0c;至于为什么会改来改去&#xff0c;这里面就有很多故事了。 1998年12月&#xff0c;SUN公司发布了JDK1…

PySide6/PyQT多线程之 线程锁/线程安全

前言 PySide6/PyQT多线程同时访问同一个共享资源或对象&#xff0c;程序可能会出现预期之外的结果。所以需要考虑线程安全问题。 使用PySide6/PyQT开发GUI应用程序&#xff0c;在多个线程同时访问同一个共享对象时候&#xff0c;如果没有进行同步处理那就可能会导致数据不一致或…