知方号

知方号

05目标检测<滑动窗口机制的工作原理是什么意思>

05目标检测

       

目录

一、问题的引入

二、解决方案-设定的anchor boxes

1.高宽比(aspect ratio)的确定

2.尺度(scale)的确定

3.anchor boxes数量的确定

三、Anchor 的在目标检测中是怎么用的

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

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

3、输出特征图和锚框有什么关系

四、 Anchor 的本质

         在了解RPN网络前我们先了解一些相关概念区域推荐(Anchor机制)。

一、问题的引入

       往往,图片上的每一处位置都有可能出现目标物体,并且目标的大小是不确定的。那有什么办法能检出所有的物体呢?最容易想到的办法就是,以一个像素为中心截取很多个不同宽高比和大小的小块,每个小块都检测一下包不包含物体,如果包含物体,该物体的位置就是刚刚截取的这个小块的位置,同时再预测一下它的类别是什么。这样就可以做到不漏掉当前这个像素上的任何宽高比和大小的物体了;那刚刚截取的这个小块就是一个anchor box。

       为了检出图像中不同位置的物体,使用滑动窗口的方式,从左到右,从上到下,把图像扫描一遍,每个像素点上都取很多小块进行检测,这样就可以保证不同位置、不同大小的物体都不漏掉了。Fig. 1是一个扫描检查的示例。

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

        其实,对于上面的问题有两个明显可以改善的点:

一是4096000个扫描框重叠(overlap)太多了一是这些框里有很多框是背景,不包含物体,没有检测的必要。

       所以,设法在保证覆盖整张图的基础上,略去重叠太严重的框,避开背景框,找高质量的、可能包含目标物体的候选框进行检测就显得尤为重要,可以以此来降低运算量,提高检测速度。

       anchor boxes就是我们在检测之前确定的一系列候选框。我们默认,图片上会出现的所有物体,都会被我们设定的anchor boxes所覆盖。anchor box选择的好坏直接关系到两个方面:

一是能不能很好的覆盖整张图一是能不能框住图片中可能出现的每个物体

       所以anchor box的设定非常重要,既关系到精度的好坏,又关系到速度的快慢(速度仅就以上所说的扫描法而言)。

二、解决方案-设定的anchor boxes

        使用设定的anchor boxes进行降低运算量,提高检测速度。anchor boxes如何设定呢?我们通过以下步骤完成:

高宽比(aspect ratio)的确定尺度(scale)的确定anchor boxes数量的确定

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

1.高宽比(aspect ratio)的确定

       因为绝大多数 数据集里目标物体的尺寸为 40 *40或80* 40,这说明数据集中绝大多数物体的真值边框的高宽比为1:1和2:1。 根据这个信息就可以确定锚框的高宽比信息,为这个数据集设计anchor boxes时其高宽比至少需要包括1:1和2:1。 这里举例为方便就只取1:1和2:1。

2.尺度(scale)的确定

       尺度是指物体的高或宽与图片的高或宽之间的比值。例如图片的宽为256px,图片中物体的宽为40px,则该物体的尺度为40/256=0.15625,也就是说该物体占了图片15.62%的宽度。

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

3.anchor boxes数量的确定

       我们的scales(尺度)为 {0.15625, 0.234375, 0.3125},高宽比 aspect ratios为{1:1, 2:1}, 则每一个锚点上的一组锚框的数量为3x2 = 6个。如下图所示,即有3种{0.15625, 0.234375, 0.3125}大小,每一种大小都有两种高宽比{1:1, 2:1}。

       按照以上方法所说,锚点是指256x256图像中的每一个像素,按基于anchor的神经网络目标检测来讲,锚点为网络最终输出特征图上的每一个点。

三、Anchor 的在目标检测中是怎么用的

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

1、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. 如果交并比

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至lizi9903@foxmail.com举报,一经查实,本站将立刻删除。