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

article/2025/9/7 3:54:02

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

  • 介绍
  • 应用
    • 生成锚点图
      • 步骤
    • 锚点匹配
      • 步骤

介绍

  锚点相当于在待预测的特征数据上预设出可能的物体边界框,即预设出特征数据可能代表的物体区域,每个区域通常由两个属性构成——尺度(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)对置信度标签做加权处理(宽高比例越像,权重越大)。

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


http://chatgpt.dhexx.cn/article/KS6XYBHW.shtml

相关文章

锚点用法

一、常见用法 1、给指定标签添加id和name: id或name都可以实现锚点,id是name的升级版,更有效,可以只用id。 2、给a标签的href绑定想要跳转到的位置的id。 二、js锚点定位 document.getElementById("divId").scrollInt…

html 锚点 中文,html怎么设置锚点

html设置锚点的方法:1、设置一个锚点链接“...”;2、在页面中需要的位置设置锚点;3、在href中的路径后面追加“#锚点名”即可。 本文操作环境:Windows7系统、HTML5版,DELL G3电脑 html中的锚点页面内跳转的锚点设置 页…

实现锚点跳转

实现锚点跳转要使用&#xff1a;a标签的href属性 其它某一个标签的id属性 设置某个标签的id属性a标签的href属性设置为&#xff1a;# 想要跳转位置的标签的id属性 <a href"#abc">点击跳转</a> ...... <div id"abc">将要跳转到这里&l…

使用 Vue3 实现锚点组件

目录 1. 需求介绍 2. 实现过程 2.1 表单结构介绍 2.2 确定锚点组件接收的参数及使用方法 2.2.1 form-dom&#xff1a;需要被锚点组件控制的表单实例 2.2.2 active-anchor&#xff1a;默认激活的锚点 2.2.3 title-class&#xff1a;表单标题特有的类名 2.2.4 将 锚点组件…

快速了解什么是锚点

一、什么锚点 锚点是网页制作中超级链接的一种&#xff0c;又叫命名锚记&#xff0c;像一个迅速定位器一样&#xff0c;是一种页面内的超级链接。 二、身边的锚点案例 1、我们可以在百度百科中搜索【薛之谦】 薛之谦&#xff08;中国内地男歌手、音乐制作人、演员&#xff09…

KNN的数据插补方法总结

sklearn中的KNN在缺失值填补中的用法 参考链接&#xff1a;K近邻填补缺失值 如果缺失值是离散的&#xff0c;使用K近邻分类器&#xff0c;投票选出K个邻居中最多的类别进行填补&#xff1b;如果为连续变量&#xff0c;则用K近邻回归器&#xff0c;拿K个邻居中该变量的平均值填…

KNN算法优缺点总结,以及机器学习流程的总结

KNN算法作为一个最简单&#xff0c;也是一个很实用的机器学习的算法&#xff0c;日常的使用中也能处理很多问题&#xff0c;这里做一下总结记录 优点 1、KNN可以处理分类问题&#xff0c;同时天然可以处理多分类问题&#xff0c;比如鸢尾花的分类 2、简单&#xff0c;易懂&a…

(理论+代码)KNN算法

KNN&#xff1a; 一种非参数、惰性学习方法&#xff0c;导致预测时速度慢当训练样本集较大时&#xff0c;会导致其计算开销高样本不平衡时&#xff0c;对稀有类别的预测准确率低KNN模型的可解释性不强 文章目录 KNN&#xff08;思想&#xff1a;物以类聚&#xff09;一、 距离度…

Knn算法实例(代码来自机器学习实战,我加了详细的注释,仅供学习)

knn算法代码 Knn算法—识别手写数字&#xff08;机器学习实战&#xff09; 一、Knn算法原理&#xff1f; 1.通俗的说就是&#xff1a;对于给定的输入向量在训练集中找到与该输入实例最近的k个实例&#xff0c;统计这k个实例中每个实例&#xff08;按照标签分类&#xff09;所…

KNN数据库检索(简读):A Fast Partial Video Copy Detection Using KNN and Global Feature Database

与之前的大部分部分视频拷贝检测&#xff08;PVCD&#xff09;算法不同&#xff0c;该算法会逐个扫描参考视频&#xff0c;我们将PVCD视为视频搜索/检索问题。 本文提出了一种快速的部分视频拷贝检测框架。在这个框架中&#xff0c;参考视频的所有帧CNN-feature都组织在…

KNN的优化算法2:KD-tree

传统KNN缺点&#xff1a;数据量特别大时&#xff0c;需要计算参考点和每个样本点的距离&#xff0c;计算量非常大&#xff0c;所以提出一种优化算法-----kd-tree. 为了提高kNN搜索的效率&#xff0c;可以考虑使用特殊的结构存储训练数据&#xff0c;以减小计算距离的次数。 kd…

KNN算法及其MATLAB代码

一、KNN算法原理 1.算法概述 k近邻(k-Nearest Neighbor&#xff0c;简称kNN)学习是一种常用的监督学习方法&#xff0c;其工作机制非常简单&#xff1a;给定测试样本&#xff0c;基于某种距离度量找出训练集中与其最靠近的k个训练样本&#xff0c;然后基于这k个"邻居&qu…

kNN算法解析及应用【内附详细代码和数据集】

首先&#xff0c;我们需要了解什么是“kNN” kNN英文全称k Nearest Neighbor&#xff0c;即k近邻算法。 用途&#xff1a;分类问题kNN的工作原理&#xff1a;事先有一个有标签的样本数据集&#xff0c;然后输入没有标签的新数据后&#xff0c;将新数据的每个特征和样本集里的数…

KNN算法介绍及代码实现

k-近邻法简介 k近邻法(k-nearest neighbor, k-NN)是1967年由Cover T和Hart P提出的一种基本分类与回归方法。它的工作原理是&#xff1a;存在一个样本数据集合&#xff0c;也称作为训练样本集&#xff0c;并且样本集中每个数据都存在标签&#xff0c;即我们知道样本集中每一个数…

机器学习——KNN及代码实现

KNN KNN即k-nearest neighbor(k近邻法)&#xff0c;多应用于分类问题。 k近邻法的输入为实例的特征向量&#xff0c;对应于特征空间中的点。输出为实例的类别。 K近邻法原理 给定一个训练数据集&#xff0c;对新的输入数据&#xff0c;在训练数据集中找到与该实例最邻近的k个…

KNN算法及其改进

KNN算法优缺点 优点 (1) 精度高 (2) 对异常值不敏感&#xff1a;某个异常值对整个结果不造成影响&#xff1b; (3) 无数据输入假定&#xff1a;无数据的独立性等假设&#xff1b;缺点 (1) 计算复杂度高&#xff1a;因为要计算的点需要与所有点计算距离&#xff0c;所以复杂度很…

机器学习算法-KNN代码实现

机器学习算法-KNN代码实现 一、KNN算法初步理解二、代码实现1.数据集处理2.创建model3.可视化 总结 一、KNN算法初步理解 统计学习方法书上的解释&#xff1a;给定一个训练数据集&#xff0c;对于新的输入实例&#xff0c;在训练数据集中找到与该实例最邻近的k个实例&#xff…

【数据挖掘基础】——KNN算法+sklearn代码实现(6)

🤵‍♂️ 个人主页:@Lingxw_w的个人主页 ✍🏻作者简介:计算机科学与技术研究生在读 🐋 希望大家多多支持,我们一起进步!😄 如果文章对你有帮助的话, 欢迎评论 💬点赞👍🏻 收藏 📂加关注+ 目录 介绍算法的例子 KNN算法原理

KNN的优化算法1:距离加权

参考文章&#xff1a;https://www.cnblogs.com/bigmonkey/p/7387943.html 对参考文章中最后一部分说的有问题的地方进行了修改。 权值加权&#xff1a;为每个点的距离增加一个权重&#xff0c;使得距离近的点可以得到更大的权重&#xff0c;在此描述如何加权。 反函数 该方法最…

机器学习之深入理解K-means、与KNN算法区别及其代码实现

K-means方法是一种非监督学习的算法&#xff0c;它解决的是聚类问题。 1、算法简介&#xff1a;K-means方法是聚类中的经典算法&#xff0c;数据挖掘十大经典算法之一&#xff1b;算法接受参数k,然后将事先输入的n个数据对象划分为k个聚类以便使得所获得的聚类满足聚类中的对象…