目标检测:锚点介绍及应用

2023-11-11

目标检测:锚点介绍及应用

介绍

  锚点相当于在待预测的特征数据上预设出可能的物体边界框,即预设出特征数据可能代表的物体区域,每个区域通常由两个属性构成——尺度(scale或size)和比例(ratios),即区域面积和区域矩形的宽高比例,也可以是锚点宽高数据。每个锚点都是在特征图像素点的基础上设置的,在设立锚点之前,每个像素点都可以代表原始图像的一个小区域,称为感受野,如果特征数据的感受野较大,则说明该特征可以代表原始图像较大的区域,一个特征数据的感受野越大,则说明该特征可以**“看”**到越大的区域,因此该特征上锚点尺度就应该越大(后续FPN会用到这一概念),例如在Faster R-CNN中,作者在最后一个特征层上做预测,尺度被设为 12 8 2 、 25 6 2 、 51 2 2 128^2、256^2、512^2 128225625122,比例被设置为 1 : 1 、 1 : 2 、 2 : 1 1:1、1:2、2:1 1:11:22:1,因此特征图上每个像素点往往对应多个锚点,从而对应原图多种区域,进一步可以对应多种可能存在物体的区域。

注意:

  • 同一特征可以同时预设多个尺度不同的锚点,即锚点尺度和特征感受野无一一对应关系,但他们往往是正相关的,即大感受野往往对应较大的锚点,反之亦然。如果特征感受野较大,则该特征往往对应大的尺度,即预测大的物体,因为它们可以看到更大的区域,又因为它们看到的区域比较大,因此预测小物体会不准,因为容易被同一区域内的其他物体所干扰。
  • 为了同时检测大物体和小物体,实际的目标检测算法往往在多组特征图上部署锚点,实现多尺度目标检测的功能,可以参考FPN网络;
  • 锚点尺度可以大于特征感受野,通俗来讲即使一个特征只能看到物体的一半,但他也可以利用这一半来预测整个物体。

在这里插入图片描述

应用

生成锚点图

  每个特征数据对应一组锚点,每个锚点对应原图上的一个小区域,如果想利用所有的锚点图参与边界框预测,必须要将每个锚点所对应的区域以坐标的形式表示出来,也就是将每个锚点区域表示出来,得到一组坐标数据(这里的坐标对应原始图像的绝对坐标),比如在上图中,要将右侧彩色框的坐标表示出来,并且和左图的特征数据做好对应关系。

步骤

  • 给定原始图像尺寸、特征图的尺寸(可以是多个,对应不同特征层参与预测)和每个锚点的尺寸(例如Faster R-CNN中的size和aspect_ratios,也可以是YOLO中的宽高数据);
  • 根据给定的锚点尺寸生成锚点模板坐标;
  • 利用原图尺寸和特征图尺寸计算步长,之后将特征图像素点按等比映射到原图区域位置(相当于感受野左上角,网格的交汇点),得到特征数据在原图上的映射坐标,坐标等距分布;
  • 映射坐标和锚点坐标相加,做一次坐标偏移,得到原图上的锚点图。

锚点模板

  以像素点为中心的一组锚点图,表示每个特征数据上的所有锚点框。以坐标的形式储存,(0,0)表示锚点中心,即原图像素点,如下图所示:

在这里插入图片描述

上图一共有九个框,表示当前特征(特征层)对应九个锚点,不同颜色代表不同的尺度,九个锚点对应3*3,即3个尺度、3个比例。(引自Faster R-CNN算法)

注:

  • 并非所有的目标检测算法都需要生成锚点图,例如YOLO算法修改了检测机制,不需要生成整张图像的锚点数据,只需要筛选“前景锚点”,之后再根据前景锚点坐标数据生成指定的锚点框即可;
  • 具体代码实现方法见:锚点生成器

锚点匹配

  在训练过程中,我们不仅需要利用锚点预测出边界框来,还需要指导每个锚点样本预测的对不对,利用期望值与预测值之间的差额来优化网络参数,也就是需要对每个锚点打标签,判定该锚点属于背景还是前景,如果是前景则需要再指明是属于标签中的哪个物体(第几个前景),便于后续给锚点生成锚点标签(即属于该锚点的物体类别和对应的回归参数)。

步骤

Faster R-CNN机制

  不同的预测机制具有不同的锚点匹配步骤,如果想利用整张图中所有的锚点参与预测(例如Faster R-CNN和RetinaNet算法),则需要根据每个锚点所代表的区域与物体边界框区域打标签,步骤如下:

  • 给定前景阈值、背景阈值、前景边界框坐标与锚点边界框坐标;
  • 逐一计算每个锚点与所有前景之间的IoU值,得到IoU矩阵;
  • 对IoU矩阵,沿物体方向求最大值,即得到每个锚点最大的IoU值及对应的前景物体;
  • 逐一判断每个锚点的最大IoU数值,大于前景阈值的标记成对应前景的序号、小于背景阈值的标记成-1,介于二者之间的舍弃,默认标记成-2。

注:

  • 若该锚点属于前景,则对应值为 [ 0 , M − 1 ] [0, M-1] [0,M1],其中M为当前图片的物体数量,使每个属于前景的锚点都有一个真实前景物体做对应,便于后续生成类别标签以及回归参数标签;
  • iou值计算公式:

IoU = S a ∩ t S a ∪ t \text{IoU}=\frac{S_{a\cap t}}{S_{a\cup t}} IoU=SatSat

其中下标 a a a t t t分别表示锚点区域和前景标签区域,也就是相交的面积除以相并的面积。

YOLO机制

  如果只期望利用边界框附近,并且形状相似的锚点参与预测(例如YOLO算法),则只需要筛选出指定的锚点(即前景锚点),并且打上标签即可,步骤如下:

  • 逐一计算物体边界框和预设锚点模板之间的IoU(默认0.2),对于每个物体匹配出宽高比例比较像的预设锚点(这里每个物体可能会匹配多个锚点模板);

  • 之后将每个预测特征数据视为一个网格,边界框中心坐标向下取整,得到网格左上角坐标,用于判断物体边界框属于哪个预测特征,该特征上的锚点才可能是前景锚点,再结合刚才匹配到的预设锚点,得到前景锚点,前景锚点满足两点:宽高比例和物体边界框宽高比例类似、物体中心位于该锚点内部(也就是网格内部);

  • 对于每个匹配到的锚点,逐一计算网格左上角坐标和边界框中心之间的偏移量,并且再提取对应边界框的宽高数据,得到锚点的坐标标签,之后根据中心点坐标得到置信度标签,再利用锚点与边界框之间的IoU(或GIoU)对置信度标签做加权处理(宽高比例越像,权重越大)。

注:以上仅是笔者个人见解,若有问题,欢迎指正。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

目标检测:锚点介绍及应用 的相关文章

  • 7.代理模式

    1 UML 2 代码 include
  • Onvif协议学习:5、设备搜索

    Onvif协议学习 5 设备搜索 文章目录 Onvif协议学习 5 设备搜索 1 前言 2 WS Discovery原理 3 单播 多播 组播 和广播的区别 4 设备搜索 1 搜索IPC 方式1 2 搜索IPC 方式2 原文链接 https
  • Spring Cloud gateway 六 Sentinel nacos存储动态刷新

    微服务当前这么火爆的程度 如果不能学会一种微服务框架技术 怎么能升职加薪 增加简历的筹码 spring cloud 和 Dubbo 需要单独学习 说没有时间 没有精力 要学俩个框架 而Spring Cloud alibaba只需要你学会一个
  • 《区块链开发实战:Hyperledger Fabric关键技术与案例分析》读书笔记

    区块链技术被认为是轮子 铁轨 电力 互联网之后 又一个具备颠覆性的核心技术 区块链改变的将是价值传递的方式 将解决人类社会诞生以来一直在思考的问题 如何获取未知的信任 随着业界对比特币系统技术架构的深入了解 人们发现这些技术除了应用在比特币
  • 【Try to Hack】宽字节注入

    博客主页 开心星人的博客主页 系列专栏 Try to Hack 欢迎关注 点赞 收藏 留言 首发时间 2022年7月4日 作者水平很有限 如果发现错误 还望告知 感谢 导航小助手 编码 魔术引号 宽字节注入产生原因 指定表名时单引号问题 数
  • JS逆向——一个新的视频爬虫

    仅限技术交流和学习记录 严禁用于任何商业用途 否则后果自负 侵删 个人觉得坑还挺多 但难度不算大的一篇js逆向 来吧 先分析 起初解析pc网页端 感觉有点难度 然后就转到移动网页端了 其实是一模一样的 除了接口和接口非加密参数不一样 所以没

随机推荐

  • html页面刷新或关闭前的操作

    页面会触发beforeunload或者pagehide事件 1 代码实现 const listenerCallbacks new Set const listenerCenter add listener listenerCallbacks
  • python unpack infinity,Python-输入包含NaN、infinity或对于dtype(“float64”)来说太大的值...

    我是新来的Python 我正在尝试使用sklearn cluster 这是我的代码 from sklearn cluster import MiniBatchKMeans kmeans MiniBatchKMeans n clusters
  • 安装JAVA 并配置环境变量

    1 在官网下载安装包 这里选择的是Java8 选择对应版本 本人使用的windows10 x86系统 JDK1 8官网下载地址 https www oracle com java technologies downloads java8 2
  • poi 导出word工具类,支持模板内容换行

    package com sinosoft sinoep modules taskOrder common import org apache poi xwpf usermodel import java util List import j
  • Log4j详细使用教程

    林炳文Evankaka原创作品 转载请注明出处http blog csdn net evankaka 日志是应用软件中不可缺少的部分 Apache的开源项目Log4j是一个功能强大的日志组件 提供方便的日志记录 在apache网站 jaka
  • 关于设计与实现毕业设计题目

    设计与实现毕业设计题目1 10题 1 基于知识图谱构建人物关系的设计与实现 2 电子资源使用统计平台USSER的设计与实现 3 工业机器人焊缝跟踪与自动涂胶系统的设计与实现 4 初中语文微课的设计与实现研究 5 新型5G红外热成像测温系统设
  • pimpl 惯用法

    现在这里有一个名为 CSocketClient 的网络通信类 定义如下 网络通信的基础类 SocketClient h zhangyl 2017 07 11 class CSocketClient public CSocketClient
  • 深度神经网络中的Inception模块介绍

    深度神经网络 Deep Neural Networks DNN 或深度卷积网络中的Inception模块是由Google的Christian Szegedy等人提出 包括Inception v1 Inception v2 Inception
  • 机器学习之SVM

    文章目录 一 SVM基本介绍 二 SVM工作原理 1 线性支持向量机 数据可分 2 软边距支持向量机 数据不可分 三 sklearn实现SVM 注 SVM涉及距离 需要先数据标准化处理 1 线性SVM LinearSVC 构造函数的参数及默
  • sql删除所有binglog日志

    删除所有binglog日志 SQL PURGE BINARY LOGS BEFORE DATE SUB NOW INTERVAL 0 DAY 注意 命令执行后还会保留最新的一个binlog 应该是处于打开状态删除不掉
  • TestNG 测试套件(二)

    1 配置类 package com course testng suite import org testng annotations AfterMethod import org testng annotations AfterSuite
  • HTML 基础

    HTML 标题 HTML 标题 Heading 是通过 h1 h6 标签来定义的 实例 h1 这是一个标题 h1 h2 这是一个标题 h2 h3 这是一个标题 h3 尝试一下 HTML 段落 HTML 段落是通过标签 p 来定义的 实例 p
  • 分析师:芯片短缺至少还将持续一年

    众所周知 半导体行业对需求突然增加的反应很慢 一些分析家认为 现在芯片需求超过供应约30 要赶上需求将需要三到四个季度 从本质上讲 这意味着芯片短缺将一直持续到2022年 芯片需求正在蓬勃发展 如今 几乎所有电子设备中都装有芯片 因此对半导
  • 面试官:谈谈你对大数据平台架构的理解?

    笼统的来说 大数据的架构一共有五层 首先是数据源层 即最原始的数据层 数据在这一层里 还只是杂草地里的野菜 如果要问这片地的具体信息 目前来讲有三个地方 一个地方是企业内部自有数据 例如淘宝 京东等电商平台的用户信息 订单信息 商品信息等
  • 数字化转型成熟度模型介绍

    中关村信息技术和实体经济融合发展联盟提出了一种数字化转型成熟度模型系列标准 目前已经被众多央企采用 作为数字化转型战略框架和评价的依据 用友作为全球领先的数智化服务商 也参与了这一系列标准的制定 今天我们就来介绍一下这套成熟度模型 并讨论对
  • k8s基础概念:port ,targetport,nodeport

    在Kubernetes中 有三种类型的端口与Service相关 port targetPort和NodePort 它们分别用于不同的用途 port port字段定义了Service暴露给集群内部和外部的端口号 当你创建一个Service时
  • web前端职业规划(转)

    关于一个WEB前端的职业规划 其实是有各种的答案 没有哪种答案是完全正确的 全凭自己的选择 只要是自己选定了 坚持去认真走 就好 在这里 我只是简要说一下自己对于这块儿内容的理解 有一个观点想要分享给大家的是 任何规划和目标的实现都依赖于知
  • 矩阵连乘问题C++实现

    矩阵连乘问题C 1 认真审阅题目 明确题目的已知条件和求解的目标 2 问题建模 3 算法设计 4 编码实现 1 认真审阅题目 明确题目的已知条件和求解的目标 给定n个矩阵 A1 A2 A3 An 其中Ai与Ai 1 i 1 2 3 4 n
  • 从0到1带你构建——低代码开发入门案例

    个人简介 个人主页 前端杂货铺 学习方向 主攻前端方向 也会涉及到服务端 Node js 个人状态 在校大学生一枚 已拿多个前端 offer 秋招 未来打算 为中国的工业软件事业效力 n 年 推荐学习 前端面试宝典 Vue2 Vue3 Vu
  • 目标检测:锚点介绍及应用

    目标检测 锚点介绍及应用 介绍 应用 生成锚点图 步骤 锚点匹配 步骤 介绍 锚点相当于在待预测的特征数据上预设出可能的物体边界框 即预设出特征数据可能代表的物体区域 每个区域通常由两个属性构成 尺度 scale或size 和比例 rati