目标检测和边界框笔记

锚框

目标检测算法通常会在输入图像中采样大量的区域,然后判断这些区域中是否包含我们感兴趣的目标,并调整区域边缘从而更准确地预测目标的真实边界框(ground-truth bounding box)。不同的模型使用的区域采样方法可能不同。这里我们介绍其中的一种方法:它以每个像素为中心生成多个大小和宽高比(aspect ratio)不同的边界框。这些边界框被称为锚框(anchor box)。我们将在后面基于锚框实践目标检测。

PyTorch检测仓库a-PyTorch-Tutorial-to-Object-Detection

生成多个锚框

假设输入图像高为 h,宽为w。分别以图像的每个像素为中心生成不同形状的锚框。设大小为s\in (0,1]且宽高比为r>0,那么锚框的宽和高将分别为ws\sqrt{r}hs/\sqrt{r}。当中心位置给定时,已知宽和高的锚框是确定的。

下面分别设定好一组大小s_{1},...,s_{n}和一组宽高比rr_{1},...,r_{m}。如果以每个像素为中心时使用所有的大小与宽高比的组合,输入图像将一共得到whnm个锚框。虽然这些锚框可能覆盖了所有的真实边界框,但计算复杂度容易过高。因此,通常只对包含s_{1}r_{1}的大小与宽高比的组合感兴趣,即

(s_{1},r_{1}),(s_{1},r_{2}),...,(s_{1},r_{m}),(s_{2},r_{1}),(s_{3},r_{1}),...,(s_{n},r_{1})

也就是说,以相同像素为中心的锚框的数量为n+m-1。对于整个输入图像,我们将一共生成wh(n+m-1)个锚框。

9.4.2 交并比

如果目标的真实边界框已知,如何量化与真实边界的重合情况。一种直观的方法是衡量锚框和真实边界框之间的相似度。我们知道,Jaccard系数(Jaccard index)可以衡量两个集合的相似度。给定集合A和B,它们的Jaccard系数即二者交集大小除以二者并集大小:

J(A,B)=\frac{A\cap B}{A\cup B}

实际上,可以把边界框内的像素区域看成是像素的集合。如此一来,可以用两个边界框的像素集合的Jaccard系数衡量这两个边界框的相似度。当衡量两个边界框的相似度时,我们通常将Jaccard系数称为交并比(Intersection over Union,IoU),即两个边界框相交面积与相并面积之比,如图所示。交并比的取值范围在0和1之间:0表示两个边界框无重合像素,1表示两个边界框相等。

Image Name

标注训练集的锚框

在训练集中,将每个锚框视为一个训练样本。为了训练目标检测模型,我们需要为每个锚框标注两类标签:一是锚框所含目标的类别,简称类别;二是真实边界框相对锚框的偏移量,简称偏移量(offset)。在目标检测时,首先生成多个锚框,然后为每个锚框预测类别以及偏移量,接着根据预测的偏移量调整锚框位置从而得到预测边界框,最后筛选需要输出的预测边界框。

发布了18 篇原创文章 · 获赞 1 · 访问量 1414

猜你喜欢

转载自blog.csdn.net/wjsjjss/article/details/104447930