当前位置: 首页 > news >正文

【计算机视觉 | 目标检测】锚点预匹配(Anchor pre-matching)的理解

一、简单理解

锚点预匹配是一种常见的目标检测方法,在多阶段目标检测中经常使用。

它的主要思想是在图像中生成一些锚点(也称为锚定框或者锚点框),然后通过预测锚点框的位置和类别来检测图像中的目标。

在锚点预匹配中,模型会对每个锚点框预测其是否包含目标、目标的类别以及目标框的位置信息。为了预测准确,通常会根据锚点框的位置和大小对其进行一些预处理,比如缩放或平移。最终,通过一系列的筛选和筛选,筛选出图像中的目标物体。

二、步骤

在目标检测任务中,锚点预匹配是一种常见的策略。其基本思想是在输入图像上先设置一组锚点,然后对每个锚点预测该锚点所对应的目标框。

具体来说,锚点预匹配通常会分为以下几个步骤:

  1. 生成锚点:在输入图像上生成一组锚点,通常是以不同的尺度和长宽比生成的一组矩形框。

  2. 与真实框匹配:将生成的每个锚点与真实框进行匹配,通常会使用一些匹配算法,如IoU匹配。

  3. 为匹配的锚点标注:对于匹配上的锚点,为其标注所对应的目标框的类别和位置信息。

  4. 非匹配锚点的处理:对于没有匹配上真实框的锚点,可以将其视为背景或忽略不计。

通过锚点预匹配,可以将目标检测任务转化为一组锚点的分类和回归任务,从而减少了目标检测的搜索空间,提高了检测的效率。同时,锚点预匹配也可以通过不同尺度和长宽比的锚点的设置,提高模型对于不同尺度和形状目标的检测能力。

2.1 生成锚点

在目标检测中,锚点(anchors)是用来预测目标位置和大小的重要元素。

锚点是一种在图像中产生固定大小和宽高比的区域,它们被用来生成候选框,这些候选框可以被检测网络进一步筛选或调整。

锚点的生成过程是通过在输入图像的不同位置和尺度上密集地生成一组矩形框来实现的。一般来说,锚点的生成是根据原始图像尺寸和固定的区域大小和宽高比进行计算的。在实际中,通常会在图像的多个不同尺度上生成锚点,以便在检测小目标和大目标时都能取得良好的效果。

在生成锚点后,它们将被用作目标检测模型的输入。模型会预测每个锚点与其最接近的真实目标之间的偏移量和目标的类别。一般来说,模型会使用回归损失函数来衡量预测框与真实框之间的差异,并使用交叉熵损失函数来衡量目标类别的预测精度。

锚点的数量、大小和宽高比等超参数需要进行仔细的调整,以获得最佳的检测效果。在一些先进的目标检测算法中,如Faster R-CNN和RetinaNet等,通过引入不同尺度的锚点,可以有效地处理不同大小的目标,提高目标检测的准确性和速度。

常用的锚点尺度通常是根据特征图的大小来决定的。通常情况下,特征图的大小越小,则锚点的尺度越小;特征图的大小越大,则锚点的尺度越大。

一些常用的锚点尺度包括:

  1. 32x32

  2. 64x64

  3. 128x128

  4. 256x256

  5. 512x512

这些尺度通常是通过试验和经验确定的,可以根据具体应用场景和数据集的特点来进行调整。

2.2 与真实值匹配

在目标检测任务中,一般会将真实的目标标注为一个矩形框,该矩形框包含目标的位置和大小等信息。在训练模型时,需要让模型能够正确地检测出这些目标,并预测出它们的位置和大小。为了达到这个目的,通常采用与真实值匹配的方法来评估模型的预测结果。

与真实值匹配的方法通常包括两个步骤:首先,生成一些候选框(也称为锚点或先验框),这些框通常根据不同的尺寸和长宽比来生成,以覆盖各种可能的目标形状和大小。然后,将生成的候选框与真实框进行匹配,确定每个候选框应该被标记为正样本(表示包含目标)还是负样本(表示不包含目标),并计算每个正样本对应的目标框与候选框之间的损失或误差,以便训练模型。

与真实值匹配的方法通常有两种:一种是基于重叠面积(如IoU)的方法,即将候选框和真实框之间的IoU作为匹配度量;另一种是基于距离(如欧几里得距离)的方法,即将候选框和真实框之间的距离作为匹配度量。根据匹配度量的不同,可以采用不同的算法来确定每个候选框的匹配情况和计算对应的损失。常用的匹配算法包括最大重叠法、最小重叠法、匈牙利算法等。

2.3 为匹配的锚点标注

在目标检测任务中,锚点预测出来的边界框通常需要与真实的边界框进行匹配,才能得到最终的检测结果。而为了将预测出来的边界框与真实的边界框进行匹配,需要对每个锚点进行标注。这些标注通常包括以下信息:

  1. 锚点的中心点坐标;
  2. 锚点的宽度和高度;
  3. 该锚点是否包含物体(即正负样本标记);
  4. 如果该锚点包含物体,还需要标注物体的类别以及物体的真实边界框。

在训练过程中,将预测出来的边界框与标注的真实边界框进行比较,计算损失函数,然后根据损失函数来更新模型参数,使模型能够更准确地预测边界框。因此,为匹配的锚点标注是目标检测中非常重要的一步。

2.4 非匹配锚点的处理

在目标检测中,锚点(anchor)是预定义的一些框,它们是不同比例和尺寸的矩形框,用于检测图像中不同大小的目标。每个锚点都有一些先验信息,如宽度、高度、宽高比等。

在目标检测任务中,将锚点与真实边界框匹配是很关键的一步,它决定了模型最终输出的检测结果。如果一个锚点与一个真实边界框的IoU(Intersection over Union)大于某个阈值(如0.5),那么它就会被认为是正样本(positive anchor),反之则被认为是负样本(negative anchor)。对于那些IoU介于正样本和负样本之间的锚点,则被视为中立样本(neutral anchor)。

对于正样本和中立样本,它们都需要被标注。对于正样本,它们的标注就是与其匹配的真实边界框的位置和类别信息。对于中立样本,它们的标注通常是一个全0向量,表示它们不需要对应任何真实边界框。至于负样本,它们通常不需要进行任何标注,因为它们不包含目标信息。

但是,在实际应用中,由于正样本和中立样本的数量往往比负样本少得多,这会导致在训练过程中负样本的数量占据绝大部分,从而使得模型容易出现偏差。为了解决这个问题,一种常见的做法是采用难例挖掘(hard example mining)技术,即在负样本中选取一部分最难分类的样本,将它们作为训练样本,以提高模型的鲁棒性和性能。

在目标检测中,常用的正样本和负样本定义是:

  • 正样本:与真实目标框 IoU 大于等于一定阈值(如 0.5)的锚点。
  • 负样本:与真实目标框 IoU 小于一定阈值(如 0.4)的锚点。

因此,IoU 阈值为 0.5 是用来判断正样本的。一些目标检测算法也会在正负样本之间引入中性样本,其 IoU 值在一定范围内,但一般不会单独处理,而是视作负样本或正样本的一种。

相关文章:

  • 智联物联分享之物联网协议MQTT简述,MQTT协议特点
  • Echarts立体柱状图
  • SpringBoot定时任务@Scheduled注解详解
  • Gen-LaneNet论文精读总结
  • Spring Cloud Alibaba全家桶——微服务网关Gateway组件
  • 基于微信PC端小程序抓包方法
  • SQL Server 实现邮件发送功能(配置步骤及存储过程源码)
  • 刘禹锡最经典诗文10首,每一首都是千古名作,读懂受益一生
  • mybatisplus快速实现动态数据源切换
  • Vue-条件渲染的基本使用(v-if,v-show,v-else相关指令使用)
  • PMP项目管理认证第一节(备考阶段准备)
  • 【数据结构】TopK,堆排序, --堆的初始化与应用
  • 自然语言处理: 知识图谱的十年
  • 关于加解密、加签、验签等
  • 分布式事务问题
  • 分享一款快速APP功能测试工具
  • 【附node操作实例】redis简明入门系列—字符串类型
  • 【跃迁之路】【733天】程序员高效学习方法论探索系列(实验阶段490-2019.2.23)...
  • 30天自制操作系统-2
  • cookie和session
  • GDB 调试 Mysql 实战(三)优先队列排序算法中的行记录长度统计是怎么来的(上)...
  • jQuery(一)
  • MD5加密原理解析及OC版原理实现
  • php中curl和soap方式请求服务超时问题
  • Redis的resp协议
  • thinkphp5.1 easywechat4 微信第三方开放平台
  • Vue2 SSR 的优化之旅
  • weex踩坑之旅第一弹 ~ 搭建具有入口文件的weex脚手架
  • 从零开始在ubuntu上搭建node开发环境
  • 道格拉斯-普克 抽稀算法 附javascript实现
  • 给github项目添加CI badge
  • 技术:超级实用的电脑小技巧
  • 前端相关框架总和
  • 前端之Sass/Scss实战笔记
  • 前嗅ForeSpider中数据浏览界面介绍
  • 线性表及其算法(java实现)
  • 小程序01:wepy框架整合iview webapp UI
  • 移动端 h5开发相关内容总结(三)
  • 用Canvas画一棵二叉树
  • 用Node EJS写一个爬虫脚本每天定时给心爱的她发一封暖心邮件
  • 【干货分享】dos命令大全
  • #[Composer学习笔记]Part1:安装composer并通过composer创建一个项目
  • #HarmonyOS:软件安装window和mac预览Hello World
  • #单片机(TB6600驱动42步进电机)
  • (pojstep1.1.2)2654(直叙式模拟)
  • (五)c52学习之旅-静态数码管
  • (轉貼)《OOD启思录》:61条面向对象设计的经验原则 (OO)
  • .360、.halo勒索病毒的最新威胁:如何恢复您的数据?
  • .aanva
  • .NET Core 将实体类转换为 SQL(ORM 映射)
  • .net core 依赖注入的基本用发
  • .NET Standard 的管理策略
  • .NET 自定义中间件 判断是否存在 AllowAnonymousAttribute 特性 来判断是否需要身份验证
  • .Net开发笔记(二十)创建一个需要授权的第三方组件
  • .NET下ASPX编程的几个小问题