目标检测中的anchor机制

news2024/11/15 21:43:43

目录

一、目标检测中的anchor机制

1.什么是anchor boxes?

二、什么是Anchor?

​编辑三、为什么需要anchor boxes?

四、anchor boxes是怎么生成的?

五、高宽比(aspect ratio)的确定

六、尺度(scale)的确定

七、anchor boxes数量的确定

八、Anchor boxes的用途 

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

十、所有的锚框是训练时的样本

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

十二、Anchor的机制

 十三、Anchor的优缺点

13.1 Anchor的优点:

13.2 Anchor的缺点:


一、目标检测中的anchor机制

1.什么是anchor boxes?

        在介绍Anchor之前,我们先介绍一下传统的人脸识别算法,是怎么检测出 图片中的人脸的。以下图为例,如果我们要检测图中小女孩的人脸位置,一个 比较简单暴力的方法就是滑窗,我们使用不同大小、不同长宽比的候选框在整 幅图像上进行穷尽式的滑窗,然后提取窗口内的特征(例如Haar、LBP、Hog 等特征),再送入分类器(SVM、Adaboost等)判断该窗口内包含的是否为人 脸。这种方法简单易理解,但是这类方法受限于手动设计的特征,召回率和准 确率通常不是很高。

        anchor boxes是一组提前预定义的边框,这些框的宽高和数据集中目标物 体的宽高大体是一致的,换句话说,数据集中的绝绝大多数物体都能找到与其 大小一致的anchor box。举例来说,如果数据集中包含苹果、猫,那么这组 anchor boxes中就需要有和苹果、猫大小相仿的边框。为了尽可能多的覆盖数 据集中可能出现的目标推的宽高,这些边框具有不同的宽高比(aspect ratio)和尺度(scale)。

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

二、什么是Anchor?

        那么,anchor到底是什么呢?如果我们用一句话概括——就是在图像上预 设好的不同大小,不同长宽比的参照框。(其实非常类似于上面的滑窗法所设 置的窗口大小)

        下图来自《动手学深度学习》中的例子,假设一个256x256大小的图片, 经过64、128和256倍下采样,会产生4x4、2x2、1x1大小的特征图,我们在这 三个特征图上每个点上都设置三个不同大小的anchor。当然,这只是一个例 子,实际的SSD模型,在300x300的输入下,anchor数量也特别多,其在 38x38、19x19、10x10、5x5、3x3、1x1的六个特征图上,每个点分别设置 4、6、6、6、6、4个不同大小和长宽比的anchor,所以一共有38x38x4+ 19x19x6+ 10x10x6+ 5x5x6+ 3x3x4+ 1x1x4= 8732个anchor。

        神经网络强大的拟合能力,我们不再需要计算Haar、Hog等特征,直接让 神经网络输出,每个anchor是否包含(或者说与物体有较大重叠,也就是IoU 较大)物体,以及被检测物体相对本anchor的中心点偏移以及长宽比例。以下 图为例:

三、为什么需要anchor boxes?

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

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

        这种方法容易理解并且确实有效,但是缺点也是突出的----计算量太大了。 假如一张图片大小为640*640,在图像中每一个像素上取10个不同宽高比不同 大小的框做检测,则需要检测的框就会有640 x 640 x 10 = 4096000,太多了。 或者,可以看一下retinanet (传送门)中用的锚框数量,如图Fig. 2所示,图中只 显示了所有框的1%,再多就看不清楚了。那怎么改进呢?  

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

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

四、anchor boxes是怎么生成的?

        举例来说明:假如要在一个数据集上做物体检测, 该数据集的图片分辨率 均为256 pixel * 256 pixel, 数据集里绝大多数数目标物体的尺寸为 40 pixel * 40 pixel或80 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个,如Fig.3所示,即有3种 大小的,每一种大小都有两种高宽比。按照以上方法所说,锚点是指256*256 图像中的每一个像素,按基于anchor的神经网络目标检测来讲,锚点为网络最 终输出特征图上的每一个点。

 

八、Anchor boxes的用途 

        在网络中anchor boxes被用来编码目标物体的位置。目标检测一般是不会 直接检测物体边框的绝对坐标的,取而代之的是检测其相对某一个锚框的偏移 量,如Fig.4中绿色真值框对蓝色边框的偏移。数据集中所有的目标均会被编码成 对anchor boxes的偏移。如图Fig.2, 锚框有非常多个,对一张图片来说,可能 包含多个物体,有非常多个anchor boxes, 那怎么用anchor boxes对真值进行 编码呢?

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

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

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

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

        d. 如果交并比则认为该anchor框到的都是背景,将该anchor划分为 背景类。

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

十、所有的锚框是训练时的样本

        编码之后,物体检测类网络的回归目标变成回归编码好的偏移量了。网络 的输入为图片,输出为每一锚框的分类和偏移量。网络最终输出的特征图上的 每一个像素都有一组锚框(假如一组锚框的数量为6个,宽高比为2:1和1:1, 尺度为0.15625, 0.234375, 0.3125,如Fig.3所示),设网络最终输出的特诊图 分辨率为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为(x,y,w,h)的偏移量,14 中的10为类别数。

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

        Fig.5 网络输出的最终的特征图(图中3 x 3的特征图)上(0,0)的点对应输入 图片上(2,2)的点,则最终输出特征图上点(0,0)对应的所有通道的值则为输 入图点(2,2)上的一组锚框的偏移和分类回归值  

十二、Anchor的机制

        以每个anchor为中心点,人为设置不同的尺度(scale)和长宽比(aspect ratio),即可得到基于anchor的多个anchor box,用以框定图像中的目标,这 就是所谓的anchor 机制。如下图所示,左侧显示了基于一个anchor点生成的9 个anchor boxes(红、绿、蓝三种颜色),右侧显示了该特征图上密集分布的所 有anchor boxes。

 十三、Anchor的优缺点

        在知道了Anchor的原理和机制之后,下面我们就来讲讲Anchor的优缺点 了:

13.1 Anchor的优点:

        ① 使用anchor机制产生密集的anchor boxes,使得网络可直接在此基础 上进行目标分类及边界框坐标回归;

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

13.2 Anchor的缺点:

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

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

        ③网络实质上是看不见anchor boxes的,在anchor boxes的基础上进行边界 回归更像是一种在范围比较小时候的强行记忆。

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

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

相关文章

数字影像产业园:打造数字经济高地,赋能未来产业

成都国际数字影像产业园凭借其得天独厚的区位优势、完善的配套设施、先进的产业定位和便捷的交通条件,逐步成为成都市乃至全国数字影像、文创、媒体产业的重要聚集地。 成都国际数字影像产业园位于成都市金牛区的核心地带,其主导产业为数字影像、文创、媒…

LCD电子广告牌课程设计

概述 1.1课程设计简介 亮丽实用的广告牌可以给我们的生活添加光彩、可以给店铺招揽生意。传统的广告牌都是固定的汉字,并且时间长了会掉色,使汉字模糊难认,这就给我的生活带来很多的不便。尤其到了晚上传统广告牌就会失去其该有的作用。所以在…

四季变换,制氮机使用注意事项

随着四季的轮回变换,大自然展现着不同的风貌。对于制氮机而言,季节的变换同样会带来不同的使用挑战和注意事项。本文将为您揭示四季变换对制氮机使用的影响,帮助您更好地掌握制氮机的季节使用须知。 春季 温湿度变化:春季温湿度逐…

VitePress做一个自己的知识博客

创建项目 // 1.创建项目,直接在空项目下安装vitepress(npm/yarn等都可以,这个可以看官网,官网给了好几种安装方式) yarn add -D vitepress // 2.初始化配置项目(npm/官网也给了多种包管理工具的安装方式) yarn vitepress init // 初始化命令执行完会遇到以下几个问题 ┌ Welc…

C语言之数组

目录 一、数组的概念 二、一维数组的使用 数组的创建 数组的初始化 数组的使用 三、一维数组在内存中的存储 四、sizeof计算数组元素个数 五、二维数组的使用 数组的创建 数组的初始化 数组的使用 六、二维数组在内存中的存储 七、C99中的变长数组 八、总结 一、…

linux系统安装anaconda,并通过java程序调用python程序

虚拟环境准备 首先准备一块空的分区,安装anaconda至少要20g以上才能执行简单程序,这里准备20G的磁盘空间 创建分区,执行以下步骤,之后执行reboot重启 fdisk /dev/sda p n 回车 回车 w查看当前系统创建的分区,我这里是名为sda3的…

Docker:认识Docker Bridge网络

文章目录 为什么需要网络管理Docker网络架构简介CNMLibNetwork驱动Docker网络管理命令网络命令基本操作网络详解docker Bridge网络 容器之间的网络通信DNS解析 为什么需要网络管理 容器的网络默认会与宿主机器以及其他的容器相互隔离,但是还需要考虑到下面的这些问…

2024年大数据、区块链与物联网国际会议(ICBDBLT 2024)

2024 International Conference on Big Data, Blockchain, and Internet of Things 【1】大会信息 会议简称:ICBDBLT 2024 大会地点:中国青岛 审稿通知:投稿后2-3日内通知 会议官网:www.icbdblt.com 【2】会议简介 即将召开的…

Linux内网数据代理与数据映射实验

背景介绍 有两台主机,其中一台可以联网,而另一台只能与联网主机,尝试通过配置,使该主机也能正常上网,这常应用于企业内部不联网的服务器,需要安全可靠或临时上网的场景,借助另一台可以上网的内…

Docker:认识Bind Mounts绑定卷

文章目录 绑定卷bind mount创建卷操作案例使用mount创建绑定卷 使用场景管理卷和绑定卷的区别? 绑定卷bind mount -v和-mount都可以进行绑定卷的创建 创建卷 功能:完成卷映射 语法: docker run -v name:directory[:options]...参数&…

python数据分析--- ch1-2 python初识入门

python数据分析--- ch1-2 python初识入门 1. 安装并启动jupyter2. 打印变量print()练一练 3. 变量与赋值 input()3.1 示例--饮料交换3.2 饮料交换完整code3.3 jupyter中写入code到py文件中3.4 在终端运行.py文件 : python 文件名3.5练一练1:简易版2&…

[leetcode]删除链表中倒数第k个结点

. - 力扣(LeetCode) class Solution { public:ListNode* trainningPlan(ListNode* head, int cnt) {int n 0;ListNode* node nullptr;for (node head; node; node node->next) {n;}for (node head; n > cnt; n--) {node node->next;}retu…

【WEB前端2024】3D智体编程:乔布斯3D纪念馆-第38课-密室逃脱-3D互动剧情

【WEB前端2024】3D智体编程:乔布斯3D纪念馆-第38课-密室逃脱 使用dtns.network德塔世界(开源的智体世界引擎),策划和设计《乔布斯超大型的开源3D纪念馆》的系列教程。dtns.network是一款主要由JavaScript编写的智体世界引擎&…

基于VLC可见光通信的室内光通信信道信噪比分析matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 matlab2022a 3.部分核心程序 ..................................................................... % 接收功率计算Pr …

周一美股集体低开后转涨,早盘仅道指小幅下跌,英伟达跌超3%后转涨超1%

美国非农就业报告发布“次日”,三大股指低开,但早盘均成功转涨。美股七姐妹涨跌各异,苹果WWDC大会今晚开幕,但早盘转跌,一度跌超1%;1拆10股正式生效的英伟达盘初曾跌超3.2%,开盘1.5小时内首次转…

纷享销客常见问题FAQ

运维和安全职责边界 应用专属是部署在客户私有云或者客户公有云租户的IT环境中的,由纷享销客与客户共同维护系统的稳定性。一般来说客户主要负责维护IT基础环境和账号权限的管理而纷享销客则负责在客户环境中进行应用系统的部署、优化和日常运维工作。在安全方面&am…

如何实现办公终端安全

在网络安全日益严峻的当下,可信白名单作为一种高效的终端安全防护手段,正在逐渐受到业界的广泛关注和应用。本文将简要探讨可信白名单如何实现终端安全的原理、方法及其在实际应用中的优势与挑战。 首先,我们需要了解可信白名单的基本原理。可…

深度探讨:为何训练精度不高却在测试中表现优异?

深度探讨:为何训练精度不高却在测试中表现优异? 在深度学习领域,我们经常遇到这样一个看似矛盾的现象:模型在训练集上的精度不是特别高,但在测试集上却能达到出色的表现。这种情况虽然不是常规,但其背后的…

2024第十六届亚洲水技术展览会Aquatech China

Aquatech China 2024第十六届亚洲水技术展览会 专注水行业覆盖全领域—荷兰阿姆斯特丹水展中国展 2024.12.11-13 上海新国际博览中心 展会背景 Aquatech品牌创立于1968年。作为水处理行业历史悠久 的展览会,荷兰国际水处理展览会(Aquatech Amsterdam)至今已有近55…

机器学习实验------PCA

目录 一、介绍 二、算法流程 (1)数据中心化 (2)计算协方差矩阵 (3)特征值分解 (4)选择特征 三、运行结果展示 四、实验中遇到的问题 五、PCA的优缺点 优点: 缺点…