名词解释 | Anchor Boxes—高质量目标检测的关键

简介: 本文介绍了anchor的基本概念,基于anchor的实际应用流程,以及anchor的设置

在学习用于目标检测的卷积神经网络时,最难掌握的概念之一是锚框(anchor)的概念。它也是可以调整以提高数据集性能的最重要参数之一。事实上,如果锚框(anchor)没有正确调整,神经网络甚至永远不会知道某些极大、极小或不规则物体的存在,也永远没有机会检测到它们。幸运的是,你可以采取一些简单的步骤来确保不会落入这个陷阱。

 

什么是锚框(anchor box)?


当使用 YOLO 或 SDD 等神经网络来预测图片中的多个目标时,该网络实际上会进行数以千计的预测,并且只显示它确定为目标的那些。多个预测以以下格式输出:

预测 1:(X、Y、高度、宽度)、类别

……

预测 ~80,000:(X,Y,高度,宽度),类别


其中 (X, Y, Height, Width) 称为“边界框(bounding box)”,或围绕目标的框。该框和目标类由人工注释者手动标记。


在一个极其简化的示例中,假设我们有一个模型,它有两个预测并接收以下图像。

ac2400778e72f2424dc76e4ed8ace1fc.png

我们需要告诉我们的网络它的每个预测是否正确,以便它能够学习。但是我们告诉神经网络它的预测应该是什么?预测的类应该是:


  • 预测1:梨


  • 预测2:苹果


或者应该是:


  • 预测1:苹果


  • 预测2:梨


如果网络预测:


  • 预测1:苹果


  • 预测2:苹果


我们需要网络的两个预测器来判断他们的工作是预测梨还是苹果。要做到这一点,有几个工具。预测器可以专门研究特定大小的对象、具有特定纵横比(高与宽)的对象或图像不同部分的对象。

 

大多数网络使用所有三个标准。在我们的梨/苹果图像示例中,我们可以将预测 1 用于图像左侧的目标,将预测 2 用于图像右侧的目标。然后我们就会得到网络应该预测什么的答案:

  • 预测1:梨


  • 预测2:苹果

实践中的anchor box


基于anchor-based的目标检测模型通常执行以下操作:


1.  为每个预测器创建数千个“锚框”或“先验框”,代表它专门预测的目标的理想位置、形状和大小。


2. 对于每个anchor box,计算哪个目标的bounding box有最高重叠除以非重叠。这称为 IOU (Intersection Over Union)。


3. 如果最高IOU大于50%,告诉anchor box它应该检测给出最高IOU的目标。


4. 否则如果IOU大于40%,告诉神经网络真正的检测是不明确的,不要从那个例子中学习。


5. 如果最高IOU小于40%,那么anchor box应该预测没有目标。


这在实践中效果很好,成千上万的预测器在决定它们的目标类型是否出现在图像中方面做得非常好。


将RetinaNet 中的锚框可视化如下图所示,这里只展示了其中的 1%:

99181208e899a82782a926fdf2b78d86.png

使用默认锚框配置可能会创建过于专业化的预测器,并且图像中出现的目标可能无法使用任何锚框实现 50% 的 IOU。在这种情况下,神经网络永远不会知道这些目标存在,也永远不会学习预测它们。我们可以将锚框调整得更小,比如这个 1% 的样本:

a38a8ed15fe92160c069b5d63b9055b8.png

在 RetinaNet 配置中,最小的锚框尺寸是 32x32。这意味着许多比这更小的物体将不会被检测到。下面是来自 WiderFace 数据集的一个例子,我们将边界框与它们各自的锚框匹配,但有些却漏了:

网络异常,图片无法展示
|

在这种情况下,只有四个ground truth边界框与锚框重叠。神经网络永远不会学习预测其他人脸。我们可以通过更改默认的锚框配置来解决这个问题。减少最小的锚框大小,所有的人脸至少与我们的一个锚框对齐,我们的神经网络可以学习检测它们!

网络异常,图片无法展示
|

改进锚框配置


作为一般规则,在深入训练模型之前,你应该了解以下有关数据集的问题:


  • 你希望能够检测到的最小尺寸的box是多少?


  • 你希望能够检测到的最大尺寸的box是多少?


box可以做成什么形状?例如,汽车探测器可能有短而宽的锚框,只要汽车或摄像头不可能侧向转动。


可以通过实际计算数据集中最极端的尺寸和纵横比来粗略估计这些。YOLO v3 是另一个目标检测器,它使用 K 均值来估计理想的边界框。另一种选择是学习锚框配置。

一旦你想通了这些问题,你就可以开始设计你的锚框了。


如果边界框和锚框的中心不同,得到的 IOU会很小。即使有小的锚框,如果锚框之间的步幅很宽,也可能会错过一些gound truth框。改善这种情况的一种方法是将 IOU 阈值从 50% 降低到 40%。


David Pacassi Torrico 最近的一篇文章比较了当前人脸检测的 API 实现,强调了正确指定锚框的重要性。


可以看到除了小脸外,算法都做得很好。下面是一些 API 根本无法检测到任何人脸的图片,但我们的新模型检测到了很多:

93ac310e2a32428779285f482dd05ce2.jpg


eca5701c3b1191ff1a0151724874eb93.jpg

这篇仅仅是了解anchor的文章,后续还会发一些关于深入理解anchor的文章,请继续关注公众号CV技术指南。

相关文章
|
机器学习/深度学习 算法 计算机视觉
深度学习目标检测系列:一文弄懂YOLO算法|附Python源码
本文是目标检测系列文章——YOLO算法,介绍其基本原理及实现细节,并用python实现,方便读者上手体验目标检测的乐趣。
53248 0
|
9月前
|
机器学习/深度学习 计算机视觉 网络架构
YOLOv11改进策略【Backbone/主干网络】| CVPR 2024替换骨干网络为 UniRepLKNet,解决大核 ConvNets 难题
YOLOv11改进策略【Backbone/主干网络】| CVPR 2024替换骨干网络为 UniRepLKNet,解决大核 ConvNets 难题
865 0
YOLOv11改进策略【Backbone/主干网络】| CVPR 2024替换骨干网络为 UniRepLKNet,解决大核 ConvNets 难题
|
9月前
|
机器学习/深度学习 计算机视觉
YOLOv11改进策略【注意力机制篇】| 添加SE、CBAM、ECA、CA、Swin Transformer等注意力和多头注意力机制
YOLOv11改进策略【注意力机制篇】| 添加SE、CBAM、ECA、CA、Swin Transformer等注意力和多头注意力机制
2611 2
YOLOv11改进策略【注意力机制篇】| 添加SE、CBAM、ECA、CA、Swin Transformer等注意力和多头注意力机制
|
5月前
|
人工智能 监控 安全
人人都是造梦者:AI时代的创意落地指南
有好想法因为"不会技术"而只能停留在脑海里?如果技术门槛不再是阻碍,你最想实现什么?在发现好想法后,如何落地自己的AI创意?这个过程可能需要哪些东西?本文手把手教你如何让自己的创意落地。
280 16
人人都是造梦者:AI时代的创意落地指南
|
机器学习/深度学习 编解码 Java
YOLO11创新改进系列:卷积,主干 注意力,C3k2融合,检测头等创新机制(已更新100+)
《YOLO11目标检测创新改进与实战案例》专栏已更新100+篇文章,涵盖注意力机制、卷积优化、检测头创新、损失与IOU优化、轻量级网络设计等多方面内容。每周更新3-10篇,提供详细代码和实战案例,帮助您掌握最新研究和实用技巧。[专栏链接](https://blog.csdn.net/shangyanaf/category_12810477.html)
YOLO11创新改进系列:卷积,主干 注意力,C3k2融合,检测头等创新机制(已更新100+)
|
机器学习/深度学习 人工智能 文字识别
ultralytics YOLO11 全新发布!(原理介绍+代码详见+结构框图)
本文详细介绍YOLO11,包括其全新特性、代码实现及结构框图,并提供如何使用NEU-DET数据集进行训练的指南。YOLO11在前代基础上引入了新功能和改进,如C3k2、C2PSA模块和更轻量级的分类检测头,显著提升了模型的性能和灵活性。文中还对比了YOLO11与YOLOv8的区别,并展示了训练过程和结果的可视化
19595 0
|
12月前
|
存储 编译器 C语言
【c++丨STL】vector的使用
本文介绍了C++ STL中的`vector`容器,包括其基本概念、主要接口及其使用方法。`vector`是一种动态数组,能够根据需要自动调整大小,提供了丰富的操作接口,如增删查改等。文章详细解释了`vector`的构造函数、赋值运算符、容量接口、迭代器接口、元素访问接口以及一些常用的增删操作函数。最后,还展示了如何使用`vector`创建字符串数组,体现了`vector`在实际编程中的灵活性和实用性。
678 4
|
机器学习/深度学习 人工智能 运维
构建高效运维体系:从自动化到智能化的演进之路
在当今数字化时代,运维作为保障企业IT系统稳定运行的关键环节,正经历着前所未有的变革。本文将探讨如何通过实施自动化和引入智能化技术,构建一个更加高效、可靠的运维体系,以应对日益复杂的业务需求和技术挑战。
427 29
|
NoSQL Java 关系型数据库
2023最全Java面试题及答案汇总
所有的面试题目都不是一成不变的,面试题目只是给大家一个借鉴作用,最主要的是给自己增加知识的储备,有备无患。
|
数据挖掘 数据处理 索引
一文秒懂Pandas中的crosstab与pivot
一文秒懂Pandas中的crosstab与pivot
456 0