YOLOv3 模型中的多尺度融合与训练

YOLO-V3 模型设计思想

YOLOv3 模型中的多尺度融合与训练_第1张图片
下半部分描述了生成候选区域的过程,首先将原图划分成多个小方块,每个小方块的大小是 32 × 32 32\times 32 32×32,然后以每个小方块为中心分别生成一系列锚框,整张图片都会被锚框覆盖到。在每个锚框的基础上产生一个与之对应的预测框,根据锚框和预测框与图片上物体真实框之间的位置关系,对这些预测框进行标注。

这里的锚框生成方式和两阶段的算法不同,两阶段的算法通过RPN网络在特征图上生成Anchor

目前我们计算损失函数是在特征图P0的基础上进行的,它的步幅stride=32。特征图的尺寸比较小,像素点数目比较少,每个像素点的感受野很大,具有非常丰富的高层级语义信息,可能比较容易检测到较大的目标。为了能够检测到尺寸较小的那些目标,需要在尺寸较大的特征图上面建立预测输出。如果我们在C2或者C1这种层级的特征图上直接产生预测输出,可能面临新的问题,它们没有经过充分的特征提取,像素点包含的语义信息不够丰富,有可能难以提取到有效的特征模式。

在目标检测中,解决这一问题的方式是,将高层级的特征图尺寸放大之后跟低层级的特征图进行融合,得到的新特征图既能包含丰富的语义信息,又具有较多的像素点,能够描述更加精细的结构。

YOLOv3 模型中的多尺度融合与训练_第2张图片
YOLOv3 模型中的多尺度融合与训练_第3张图片
具体的网络实现方式如 图 所示:
YOLOv3 模型中的多尺度融合与训练_第4张图片
生成多层级的输出特征图P0、P1、P2
YOLO-V3在每个区域的中心位置产生3个锚框,在3个层级的特征图上产生锚框的大小分别为P2 [(10×13),(16×30),(33×23)],P1 [(30×61),(62×45),(59× 119)],P0[(116 × 90), (156 × 198), (373 × 326]。越往后的特征图上用到的锚框尺寸也越大,能捕捉到大尺寸目标的信息;越往前的特征图上锚框尺寸越小,能捕捉到小尺寸目标的信息。

YOLOv3 模型中的多尺度融合与训练_第5张图片
YOLOv3 模型中的多尺度融合与训练_第6张图片
YOLOv3 模型中的多尺度融合与训练_第7张图片
YOLOv3 模型中的多尺度融合与训练_第8张图片
从锚框到预测框的映射关系
预测框的生成举例:
锚框的位置都是固定好的,不可能刚好跟物体边界框重合,需要在锚框的基础上进行位置的微调以生成预测框。预测框相对于锚框会有不同的中心位置和大小,采用什么方式能得到预测框呢?我们先来考虑如何生成其中心位置坐标。
YOLOv3 模型中的多尺度融合与训练_第9张图片
比如上面图中在第10行第4列的小方块区域中心生成的一个锚框,如绿色虚线框所示。以小方格的宽度为单位长度,此小方块区域左上角的位置坐标是:

在这里插入图片描述

此锚框的区域中心坐标是:
在这里插入图片描述
可以通过下面的方式生成预测框的中心坐标:
在这里插入图片描述
其中 t x t_x tx t y t_y ty 为实数
在这里插入图片描述
由于Sigmoid的函数值在0∼1之间,因此由上面公式计算出来的预测框的中心点总是落在第十行第四列的小区域内部。
在这里插入图片描述
锚框的大小是预先设定好的,在模型中可以当作是超参数,上图中画出的锚框尺寸是:
在这里插入图片描述
通过下面的公式生成预测框的大小:
在这里插入图片描述
YOLOv3 模型中的多尺度融合与训练_第10张图片

YOLOv3 模型中的多尺度融合与训练_第11张图片
YOLOv3 模型中的多尺度融合与训练_第12张图片
YOLOv3 模型中的多尺度融合与训练_第13张图片

YOLOv3 模型中的多尺度融合与训练_第14张图片
YOLOv3 模型中的多尺度融合与训练_第15张图片
YOLOv3 模型中的多尺度融合与训练_第16张图片
YOLOv3 模型中的多尺度融合与训练_第17张图片
YOLOv3 模型中的多尺度融合与训练_第18张图片
YOLOv3 模型中的多尺度融合与训练_第19张图片
YOLOv3 模型中的多尺度融合与训练_第20张图片
YOLOv3 模型中的多尺度融合与训练_第21张图片
YOLOv3 模型中的多尺度融合与训练_第22张图片
YOLOv3 模型中的多尺度融合与训练_第23张图片
YOLOv3 模型中的多尺度融合与训练_第24张图片
YOLOv3 模型中的多尺度融合与训练_第25张图片
YOLOv3 模型中的多尺度融合与训练_第26张图片
YOLOv3 模型中的多尺度融合与训练_第27张图片

首先由特征提取网络对输入图像提取特征,得到 3 个不同大小的输出特征图,当输入图像宽高为 416416 时,三个 输出特征图为 1313、2626、5252,分别对应于输入的 32 倍、16 倍、8 倍下 采样,YOLOv3 在数据集上聚类得到 9 组 anchor。将三个输出特征图划分为 S*S 的网格,每个网格分别有 3 个预设的 anchor,当目标中心落在某个网格中时,就用该网格去检测它并且用和 ground truth 交并比最大的 anchor 去预测,而剩余两组 anchor 则不参与预测。

你可能感兴趣的:(深度学习,目标检测,计算机视觉)