探索目标检测:边界框与锚框的奥秘

笔者在2022年开始学习目标检测的时候,对各种框的概念那是相当混淆,比如:

  • 中文名词:边界框、锚框、真实框、预测框等
  • 英文名词:BoundingBox、AnchorBox、Ground Truth等

同一个英文名词比如BoundingBox翻译成中文也有多个叫法。下面注重区分这些概念。

一、真实框Ground Truth & 边界框Bounding Box

1️⃣真实框Ground Truth与边界框Bounding Box的定义

目标检测需要识别图片中多个物体的位置与类别。

为了方便模型训练,我们人为地将图片中物体的位置与种类标注出来,这就是真实边界框Ground Truth

  • 「Ground Truth」等价于「Ground Truth Bounding Box(GT BBox)」

边界框Bounding Box则更多的是一种泛指,它可以指代各个类型的框。


2️⃣GT BBox的标注常见于两种形式:
  1. PascalVOC的xml标注文件: ( x 1 , y 1 , x 2 , y 2 ) (x_1, y_1, x_2, y_2) (x1,y1,x2,y2),分别是矩形框左上角、右下角的坐标;
    如下图中的坐标(1, 1)
  2. COCO的json标注文件: ( x , y , w , h ) (x, y, w, h) (x,y,w,h),xy是矩阵框的中心点坐标,wh是矩阵框的宽高;

标注文件中每行表示一个物体,一般是:图片文件名、物体类别、边缘框。

请添加图片描述



二、边界框的回归 BoundingBox Regression

模型对其「预测框」进行微调,使其接近Ground Truth Bounding Box。
如下图对红色的BBox回归,使其接近绿色的GT Box。

请添加图片描述



三、锚框Anchor Box

1️⃣Ground Truth Bounding Box与Anchor的区别:

锚框Anchor是算法自动生成出的,GT BBox是人为的标注框。

目前定位精准的目标检测算法还是基于锚框的,即Anchor-based。


2️⃣锚框的使用:
在训练集上利用k-means等方法聚类出多个大小宽高不同的锚框
预测:每个锚框中是否含有目标物体
预测:从该锚框到边界框的偏移

3️⃣在目标检测任务中,我们如何选择锚框尺寸?

1)要么设定好锚框的尺寸:

  •   anchors:- [10,13, 16,30, 33,23]  # P3/8- [30,61, 62,45, 59,119]  # P4/16- [116,90, 156,198, 373,326]  # P5/32
    

2)要么通过k-means自动生成锚框,比如yolov5默认通过k-means自动生成锚框尺寸

3)作为超参数学习。我还没见过,估计这会产生额外的计算量


4️⃣锚框的标注过程

主流的目标检测算法大多基于锚框Anchor Box,每一个锚框都是一个训练样本。

对于每个锚框,要么标注成背景(负样本),要么关联上一个真实边界框(正样本)。

一张图片可能会产生上万个锚框,其中绝大多数都是背景,即大量的负样本,与之相比,正样本可能只有几十个。

请添加图片描述

图. 锚框的标注
  • 假设4个目标物体对应着4个GT BBox,模型对每个目标物体各生成9个锚框;
  • 计算每个GT与Anchor之间的IoU值,找到当前最大的IoU值 x 23 x_{23} x23,将锚框关联上BBox_3,由它去预测BBox_3。删去该行该列;
  • 继续找当前最大的IoU值 x 71 x_{71} x71,重复如上操作,删去该行该列;

与BBox关联的锚框作为正样本,其他的作为背景就是负样本

PS:Anchor的概念最早出现在Faster RCNN提出的RPN网络,RPN网络的Anchor启发了后面的SSDYolov2算法。



四、额外:召回与排序的概念

召回:将所有“可能的正确结果”返回给排序

排序:会将所有召回的结果进行排序,将最靠前的结果作为最终答案


如果这篇文章对您有些许帮助,请帮忙点个赞👍或收个藏📃。您的支持是我继续创作的动力💪!


不要害怕,不要着急。保持每日的前进☀️与积极的内心❤️,命运总在曲折中馈赠最好的礼物。

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

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

相关文章

[原创](现代Delphi 12指南):[macOS 64bit App开发]: [1]如何使用原生NSAlert消息框 (runModal模式)

[作者] 常用网名: 猪头三 出生日期: 1981.XX.XX 企鹅交流: 643439947 个人网站: 80x86汇编小站 编程生涯: 2001年~至今[共24年] 职业生涯: 22年 开发语言: C/C++、80x86ASM、Object Pascal、Objective-C、C#、R、Python、PHP、Perl、 开发工具: Visual Studio、Delphi、XCode、…

LangChain的向量RAG与MCP在意图识别的主要区别

LangChain的向量RAG与MCP在意图识别实现上的区别主要体现在技术路径、流程设计以及应用场景三个方面: 1. 技术路径差异 LangChain向量RAG 语义相似度驱动:通过用户输入的原始查询与向量化知识库的语义匹配实现意图识别。例如,用户提问"…

[特殊字符] Spring Cloud 微服务配置统一管理:基于 Nacos 的最佳实践详解

在微服务架构中,配置文件众多、管理复杂是常见问题。本文将手把手演示如何将配置集中托管到 Nacos,并在 Spring Cloud Alibaba 项目中实现统一配置管理 自动刷新机制。 一、为什么要使用 Nacos 统一配置? 传统方式下,每个服务都…

2025平航杯—团队赛

2025平航杯团队赛 计算机取证 分析起早王的计算机检材,起早王的计算机插入过USB序列号是什么(格式:1)分析起早王的计算机检材,起早王的便签里有几条待干(格式:1)分析起早王的计算机检材,起早王的计算机默认浏览器是什…

JSON-RPC 2.0 规范中文版——无状态轻量级远程过程调用协议

前言 JSON-RPC是一种简单、轻量且无状态的远程过程调用(RPC)协议,它允许不同系统通过标准化的数据格式进行通信。自2010年由JSON-RPC工作组发布以来,已成为众多应用中实现远程交互的基础协议之一。本规范主要表达了JSON-RPC 2.0版…

微控制器编程 | ISP、IAP 与 ICP 的原理与比较

注:英文引文,机翻未校。 图片清晰度限于引文原状。 Introduction to Programming of Microcontroller: ISP, IAP and ICP 微控制器编程介绍:ISP、IAP 和 ICP Date: 30-11-2022 1. What is Microcontroller Programming 什么是微控制器编…

Allegro23.1新功能之新型via structure创建方法操作指导

Allegro23.1新功能之新型via structure创建方法操作指导 Allegro升级到了23.1后,支持创建新型via structure 通过直接定义参数来生成 具体操作如下 打开软件,选择 Allegro PCB Designer

IBM WebSphere Application Server 7.0/8.5.5证书过期问题处理

证书过期错误日志: [3/14/16 7:22:20:332 PDT] 0000007d WSX509TrustMa E CWPKI0312E: The certificate with subject DN CNMXSYSTEMS, OUctgNodeCell01, OUctgNode01, OIBM, CUS has an end date Mon Jan 11 11:17:18 PST 2016 which is no longer valid. [3/14/…

select,poll,epoll区别联系

selsect,poll,epoll区别联系 目录 一、区别 二、联系 select、poll 和 epoll 都是在 Linux 系统中用于实现 I/O 多路复用的机制,它们的主要目的是让程序能够同时监控多个文件描述符,以判断是否有事件发生,从而提高 I/O 操作的效率。 一、区…

curl和wget的使用介绍

目录 一、curl 和 wget 区别 二、wget的使用 2.1 参数说明 2.2 wget 使用示例 三、curl的使用 3.1 参数说明 3.2 curl使用示例 一、curl 和 wget 区别 wget 和 curl 都可以下载内容。它们都可以向互联网发送请求并返回请求项,可以是文件、图片或者是其他诸如…

日语学习-日语知识点小记-构建基础-JLPT-N4阶段(12): ておき ます

日语学习-日语知识点小记-构建基础-JLPT-N4阶段(12): ておき ます。 1、前言(1)情况说明(2)工程师的信仰 2、知识点(1)~ておき ます。(2&#x…

高质量水火焰无损音效包

今天设计宝藏给大家分享的是Cinematic Elements: Fire & Water音频资源库包含大量高质量的火焰和水的声音效果。它具有非常强烈的个性特征和次世代的音效。火焰和水是两个令人印象深刻而 interessing 的元素。它们的表现形式从微小无害到巨大毁灭性都有。因此,它们的声音特…

毕业论文 | 传统特征点提取算法与匹配算法对比分析

传统特征点提取算法与匹配算法对比分析 一、特征点提取算法对比二、特征匹配算法对比三、核心算法原理与公式1. **Harris角点检测**2. **SIFT描述子生成**3. **ORB描述子**四、完整Matlab代码示例1. **Harris角点检测与匹配**2. **SIFT特征匹配(需VLFeat库)**3. **ORB特征匹配…

【网络原理】从零开始深入理解HTTP的报文格式(二)

本篇博客给大家带来的是网络HTTP协议的知识点, 续上篇文章,接着介绍HTTP的报文格式. 🐎文章专栏: JavaEE初阶 🚀若有问题 评论区见 ❤ 欢迎大家点赞 评论 收藏 分享 如果你不知道分享给谁,那就分享给薯条. 你们的支持是我不断创作的动力 . 王子,公主请阅…

Microsoft .NET Framework 3.5 离线安装包 下载

Microsoft. NET Framework 3.5 是支持生成和运行下一代应用程序和XML Web Services 的内部Windows 组件, 对 .NET Framework 2.0 和 3.0 中的许多新功能进行了更新和增补, 且附带了 .NET Framework 2.0 Service Pack 1 和 .NET Framework 3.0 Service…

Flask + ajax上传文件(三)--图片上传与OCR识别

本教程将详细介绍如何使用Flask框架构建一个图片上传与文字识别(OCR)的Web应用。我们将使用EasyOCR作为OCR引擎,实现一个支持中文和英文识别的完整应用。 环境准备 首先,确保你已经安装了Python 3.7+环境,然后安装必要的依赖库: pip install flask easyocr pillow werkz…

模型部署技巧(一)

模型部署技巧(一) 以下内容是参考CUDA与TensorRT模型部署内容第六章,主要针对图像的前/后处理中的trick。 参考: 1.部署分类器-int8-calibration 2. cudnn安装地址 3. 如何查找Tensor版本,与cuda 和 cudnn匹配 4. ti…

MySQL--数据引擎详解

存储引擎 MySQL体系结构 连接层: 主要接收客户端的连接,然后完成一些链接的处理,以及认证授权的相关操作和安全方案,还要去检查是否超过最大连接数等等,比如在连接MySQL服务器时需要输入用户名,密码&#…

【含文档+PPT+源码】基于微信小程序的健康饮食食谱推荐平台的设计与实现

项目介绍 本课程演示的是一款基于微信小程序的健康饮食食谱推荐平台的设计与实现,主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的 Java 学习者。 1.包含:项目源码、项目文档、数据库脚本、软件工具等所有资料 2.带你从零开始部署运行本…

当OA闯入元宇宙:打卡、报销和会议的未来狂想

引言:虚实共生中的组织基因突变 元宇宙正以虚实共生的形态重构人类协作的底层逻辑。传统OA系统建立的物理规则——指纹打卡验证在场性、纸质票据堆砌信任链、会议室排期协调时空资源——在元宇宙的数字原野上迎来基因级重组。这场变革不仅是技术工具的迭代&#xf…