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

988 阅读9分钟

前言

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

本文讲的很浅,仅用于帮助小白理解基本概念。后续还会发一些深入理解anchor的文章,请继续关注公众号CV技术指南。

点个关注 ,专注于计算机视觉的技术总结、最新技术跟踪、经典论文解读。

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

什么是锚框(anchor box)?

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

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

……

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

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

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

图片

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

  • 预测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%:

图片

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

图片

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

图片

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

图片

改进锚框配置

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

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

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

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

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

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

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

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

文章名称:Face detection - An overview and comparison of different solutions

文章链接:www.liip.ch/en/blog/fac…

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

图片

图片

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

作者:Anders Christiansen

编译:CV技术指南

原文链接:towardsdatascience.com/anchor-boxe…

欢迎关注公众号 CV技术指南 ,专注于计算机视觉的技术总结、最新技术跟踪、经典论文解读。

在公众号中回复关键字 “技术总结”可获取公众号原创技术总结文章的汇总pdf。​​

其它文章

增量学习深度神经网络

深度学习中的人体姿态估计概述

小目标检测常用方法总结

CV技术指南--精华文章汇总分类

归一化方法总结 | 欠拟合与过拟合技术总结

NMS总结 | 损失函数技术总结

注意力机制技术总结 | 特征金字塔技术总结

池化技术总结 | 数据增强方法总结

论文创新的常见思路总结 | GPU多卡并行训练总结

CNN结构演变总结(一)经典模型

CNN结构演变总结(二)轻量化模型

CNN结构演变总结(三)设计原则

CNN可视化技术总结(一)特征图可视化

CNN可视化技术总结(二)卷积核可视化

CNN可视化技术总结(三)类可视化

CNN可视化技术总结(四)可视化工具与项目

计算机视觉中的图像标注工具总结

各种 Optimizer 梯度下降优化算法回顾和总结

汇总 | 国内外经典开源数据集

Softmax 函数和它的误解

提高机器学习模型性能的常用策略

资源分享 | SAHI:超大图片中对小目标检测的切片辅助超推理库

计算机视觉中的图像标注工具总结

Batch Size对神经网络训练的影响

神经网络超参数的调参方法总结

使用 Ray 将 PyTorch 模型加载速度提高 340 倍

计算机视觉中的图像标注工具总结

2021年小目标检测最新研究综述

经典论文系列--胶囊网络:新的深度学习网络

计算机视觉专业术语总结(一)构建计算机视觉的知识体系

计算机视觉中的小样本学习综述