anchor box只是先验知识,bounding box是一种过程,ground truth才是标准答案,

  • anchor boxes是一组提前预定义的边框,这些框的宽高和数据集中目标物体的宽高大体是一致的,换句话说,数据集中的绝大多数物体都能找到与其大小一致的anchor box。

    • 举例来说,如果数据集中包含苹果、猫,那么这组anchor boxes中就需要有和苹果、猫大小相仿的边框。为了尽可能多的覆盖数据集中可能出现的目标推的宽高,这些边框具有不同的宽高比(aspect ratio)和尺度(scale)

    • 边框可以反应一个物体的大致信息,边框的位置反应物体的大致位置,宽高比反应物体的身材比例,尺度反应物体的大小。

  • anchor box +/-/×/÷偏移量所得到的框是bounding box,然而bounding box会生成很多,这些bounding box经过非极大值抑制(NMS)之后就是我们传统意义上的预测值bounding box了。Ground truth box是真实标注框,也就是人工标注,一般被看作“真值”。

  • 为什么需要anchor boxes

    • 物体检测方法是非常直观的,就是在图片上,截一小块,检测这一小块包不包含物体,如果包含物体,该物体的位置就是刚刚截取的这个小块的位置,同时再预测一下它的类别是什么。那这种检测方法和anchor box又有什么关系呢? 其实,刚刚截取的这个小块就是一个anchor box

    • 图片上的每一处位置都有可能出现目标物体,并且目标的大小是不确定的。那有什么办法能检出所有的物体呢?最容易想到的办法就是,以一个像素为中心截取小块时,截取很多个不同宽高比和大小的小块,每个小块都检测一下,这样就可以做到不漏掉这个像素上的任何宽高比和大小的物体了;为了检出图像中不同位置的物体,从左到右,从上到下,把图像扫描一遍,每个像素上都取很多小块进行检测,这样就可以保证不同位置、不同大小的物体都不漏掉了。

    • 这种方法容易理解并且确实有效,但是缺点也是突出的----计算量太大了。假如一张图片大小为640*640,在图像中每一个像素上取10个不同宽高比不同大小的框做检测,则需要检测的框就会有640 x 640 x 10 = 4096000,太多了。

    • 这种方法有两个明显可以改善的点,一是4096000个扫描框重叠(overlap)太多了,一是这些框里有很多框是背景,不包含物体,没有检测的必要。所以,设法在保证覆盖(cover)整张图的基础上,略去重叠太严重的框,避开背景框,找高质量的、可能包含目标物体的候选框进行检测就显得尤为重要,可以以此来降低运算量,提高检测速度。

    • anchor boxes就是我们在检测之前确定的一系列候选框。我们默认,图片上会出现的所有物体,都会被我们设定的anchor boxes所覆盖。anchor box选择的好坏直接关系到两个方面:一是能不能很好的覆盖整张图,一是能不能框住图片中可能出现的每个物体。所以anchor box的设定非常重要,既关系到精度的好坏,又关系到速度的快慢(速度仅就以上所说的扫描法而言)。

  • anchor boxes是怎么生成的

    • 举例来说明:假如要在一个数据集上做物体检测, 该数据集的图片分辨率均为256 pixel * 256 pixel, 数据集里绝大多数数目标物体的尺寸为 40 pixel * 40 pixel80 pixel * 40 pixel。

    • 高宽比(aspect ratio)的确定

      • 这说明数据集中绝大多数物体的真值边框的高宽比为1:1和2:1. 根据这个信息就可以确定锚框的高宽比信息:为这个数据集设计anchor boxes时其高宽比至少需要包括1:1和2:1. 这里举例为方便就只取1:1和2:1。
    • 尺度(scale)的确定

      • 尺度是指物体的高或宽与图片的高或宽之间的比值。以像素为单位表示目标物体和图片的尺寸,如果图片的宽为256 pixel,物体的宽为40 pixel,则该物体的尺度为40/256=0.15625,也就是说该物体占了图片15.62%的宽度。

      • 为了选一组能更好的代表数据集里目标的尺度的尺度,我们应该以数据集中目标物体的尺度最大值和最小值为上下限。如,数据集中物体的尺度的最小值和最大值分别为0.15625和0.3125,我们准备在这个范围内设置3种scale,则可以选择 {0.15625, 0.234375, 0.3125}。

    • anchor boxes数量的确定

      • 设定的scales为 {0.15625, 0.234375, 0.3125},aspect ratios为{1:1, 2:1}, 则每一个锚点上的一组锚框的数量为3 * 2 = 6个,如下图所示,即有3种大小的,每一种大小都有两种高宽比。按照以上方法所说,锚点是指256*256图像中的每一个像素,按基于anchor的神经网络目标检测来讲,锚点为网络最终输出特征图上的每一个点。

      • 在这里插入图片描述

      • 一个锚点对应的一组锚框,同一种颜色的框为一种尺度下两种高宽比对应的锚框​。在检测任务中,输入图像经过骨干网络提取得到特征图,该图上的每个像素点,即为anchor锚点

    • 使用绝对坐标的(xmin,ymin,xmax,ymax)。 但是这种绝对坐标的表示方式,是以原始图像的像素值为基础的,这就需要知道图像的实际尺度,如果图像进行缩放,这种表示就无法准确的进行定位了。对图像的尺寸进行归一化,使用归一化后的坐标矩形框。坐标进行归一化,这样只要知道图像的scale就能够很容易在当前尺度下使用矩形框定位。

  • 在目标检测中,训练数据的标签通常是基于绝对坐标的表示方式的,而在训练的过程中通常会有尺度的变换这就需要将边框坐标转换为归一化后的形式。 在计算损失值时,为了平衡尺寸大的目标和尺寸小的目标对损失值的影响,就需要将矩形框表示为中心坐标的方式,以方便对矩形框的宽和高添加权重。 最后,要将归一化后的中心坐标形式转换为检测图像的原始尺度上

  • Anchor boxes的用途

    • 在网络中anchor boxes被用来编码目标物体的位置。目标检测一般是不会直接检测物体边框的绝对坐标的,取而代之的是检测其相对某一个锚框的偏移量,如下图中黑色真值框对蓝色边框的偏移。数据集中所有的目标均会被编码成对anchor boxes的偏移。

    • 在这里插入图片描述

    • 对一张图片来说,可能包含多个物体,有非常多个anchor boxes, 那怎么用anchor boxes对真值进行编码呢?

  • anchor boxes对真值bounding box编码的步骤

    • 对每一个anchor box,算出其和哪一个真值bounding box的交并比(intersection over union score)最大。

    • 如果交并比>50%,则当前anchor box负责当前真值bounding box对应物体的检测,求真值bounding box对该anchor box的偏移。

    • 如果交并比介于40%与50%之间,不能确定该anchor是不是包含该物体,属于含糊框。

    • 如果交并比<40%,则认为该anchor框到的都是背景,将该anchor划分为背景类。

    • 除了被分配物体的锚框外,对只含背景的锚框和含糊框,偏移赋0,分类赋背景。

  • 编码之后,物体检测类网络的回归目标变成回归编码好的偏移量了。网络的输入为图片,输出为每一锚框的分类和偏移量。网络最终输出的特征图上的每一个像素都有一组锚框(假如一组锚框的数量为6个,宽高比为2:1和1:1, 尺度为0.15625, 0.234375, 0.3125),设网络最终输出的特诊图分辨率为7*7,则该回归网络中的锚框数量总数为7x7x6=296个。网络接收到的真值为这296个anchor box是否为背景的分类信息(如果包含物体,则分离为物体类别)和每个anchor到目标物体bounding box的偏移量(含糊框和背景框的偏移量为0),网络的输出为296个框的偏移量和分类信息。

  • 对一个训练好的网络,其输出中,只包含背景的锚框的分类为背景,偏移为0;包含物体的锚框,其分类为物体的类别,偏移为锚框与物体真实边框之间的偏移

  • 为什么要回归偏移量而不是绝对坐标

    • 神经网络的特性之一是位移不变性,对一张包含树的照片,不管树在这张图片的左上角还是右下角,网络输出的分类都是树,分类结果不会因为树在照片中位置的变化而变化。所以,对于一棵树,不管它在图片中的位置是什么,回归网络都偏向于为它输出相同的位置坐标,可见位移不变性和我们需要的位置坐标变化是冲突的,这显然是不行的。转而回归偏移的话,不管树在图像中的什么位置,其对它所在的锚框的偏移量基本是一致的,更加适合神经网络回归。
  • 输出特征图和锚框有什么关系呢?锚框不是应该放在输入图上吗,为什么说输出特征图上的每一个点一组锚框

    • 如Fig.5所示,输出特征图(最右边3 x 3的小特征图)上的任何一个点都可以映射到输入图片上(感受野的意思),也就是说按照比例和网络的下采样,对输出特征图上的任意一点,在输入图片上都可以成比例找到它的对应位置。

    • 例如,在输出特征图上(0, 0)的点在输入图片上的对应位置为(2, 2), 网络的输出特征维度为3 * 3 * 84 ( = 3 * 3 * 6 * 14),则输出特征图上点(0, 0)处的84个通道对应的值为输入图(2, 2)位置上6个锚框的偏移量和分类值。3 * 3 * 84 = 3 * 3 * 6 * 14中的6为6个anchor box; 14=4+10,其中的4为(x,y,w,h)的偏移量,其中的10为类别数。

    • 在这里插入图片描述

    • 通过这样的隐式映射关系,将所有的anchor box都放在了输入图片上。

  • Anchor机制的优缺点

    • 使用anchor机制,使得网络可直接在此基础上进行目标分类及边界框坐标回归,适当设置anchor box能够提升检测效率,降低计算量;

    • 密集的anchor box可有效提高网络目标召回能力,对于小目标检测来说提升非常明显。

    • anchor机制中,需要设定的超参:尺度(scale)和长宽比( aspect ratio)是比较难设计的。这需要较强的先验知识

    • 冗余框非常之多:一张图像内的目标毕竟是有限的,基于每个anchor设定大量anchor box会产生大量的easy-sample,即完全不包含目标的背景框。这会造成正负样本严重不平衡问题,也是one-stage算法难以赶超two-stage算法的原因之一。

  • https://zhuanlan.zhihu.com/p/484555425

  • 5
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
### 回答1: Anchor BoxBounding Box的区别是,Anchor Box一种被设计用来做目标检测的技术,它是一种已经预定义的框架,用来指导模型检测特定物体的位置;而Bounding Box一种用来标记边界框的方法,用来提取特定物体的轮廓和位置信息。 ### 回答2: Anchor box(锚定框)和bounding box(边界框)是在目标检测和物体识别中常用的两个概念。 边界框(bounding box)是用于描述和定位目标物体的矩形框,通常由左上角和右下角的坐标表示。边界框可以准确地框住目标物体,以便进行目标检测和识别。 锚定框(anchor box),也称为先验框(prior box),是一组预定义的边界框,具有不同的尺寸和宽高比。锚定框通常是在输入图像中以相对位置进行均匀分布的。目标检测算法会根据锚定框对感兴趣的区域进行候选框的生成,然后判断这些候选框是否包含目标物体。 边界框和锚定框的区别在于它们的作用和使用方式。边界框用于描述目标物体的精确位置和边界,而锚定框用于生成检测器的候选框。边界框用于标注目标物体的位置,然后通过边界框的坐标信息进行目标定位和识别。而锚定框则在目标检测算法中作为一种基于先验知识的辅助工具,用于生成候选框,然后通过分类和回归等技术对候选框进行进一步的处理和筛选。 总而言之,边界框用于描述目标位置和形状,而锚定框用于生成候选框并辅助目标检测算法进行目标识别。 ### 回答3: anchor boxbounding box是在目标检测模型中常用的概念,用于定位和识别图像中的目标物体。 首先,bounding box是一个由四个坐标值(通常是左上角和右下角的坐标)定义的矩形框,用于标记图像中目标物体的位置和大小。bounding box可以围住目标物体,使得模型可以定位和识别目标。 而anchor box(也称为prior box)是在目标检测模型中使用的一组预定义的固定大小和宽高比的矩形框。这些anchor box通常是在训练模型之前通过聚类等方式选择得到的。目标检测模型使用这些anchor box作为候选框,通过对这些anchor box进行调整和分类,来实现对物体的定位和识别。 anchor boxbounding box的区别主要在于用途和性质上。bounding box是用于表示真实目标物体的位置和大小的框,而anchor box是一组预定义框,用于通过模型的候选框生成机制选取候选框。bounding box一般是根据真实目标物体标注得到的,而anchor box则是通过聚类等方式选择得到的。另外,bounding box是根据实际物体进行调整得到的,而anchor box则是通过在图像上定位和尺度空间的规定选择得到的。 在目标检测模型的训练中,通常会使用anchor box来生成候选框,然后通过和真实目标物体的bounding box比较,计算损失函数进行优化。这样模型可以通过学习来调整和预测出更好的bounding box来定位和识别目标物体。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

羞儿

写作是兴趣,打赏看心情

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值