YOLO v1,v2,v3总结

YOLOv1

相比于两步法,yolo v1用网络直接回归出目标框和框置信度得分并对类别进行分类,没有提取建议区域的步骤,比两步法更快(可以将yolo v1看作是faster rcnn中的RPN网络的高精度版)。
从另一种角度理解,yolov1将图像分为了77共49个grid,输出的张量为77*30,分别对应每个grid,这其实就是粗暴地将划分出地grid作为建议区,然后执行两部法的第二部对其进行回归和分类。
YOLO v1,v2,v3总结_第1张图片

YOLO v1,v2,v3总结_第2张图片
上图为对应某grid cell的输出张量,对应输出内容,损失函数分为框置信度损失、框定位损失和分类损失,损失函数如下图所示:
YOLO v1,v2,v3总结_第3张图片
计算损失前首先根据标签确认是前景还是背景,如果是背景,则只计算置信度损失;如果是前景,则继续计算定位损失和分类损失。但这个损失计算的方式存在一个问题,那就是无法应对背景较多的情况,因为当背景较多时,置信度损失在反向传播的过程中占据了较大的比重,往往会影响到定位损失和分类损失的反向传播,尽管作者对置信度损失乘了一个小于1的系数,但无法根治此问题。所以yolo对于目标较少的情况不友好,而rcnn则对此问题免疫。
另外,yolo v1对小目标也不友好,因为它的网络只是单纯地进行下采样提升感受野,但是没有多种尺度的特征的拼接,损失了大部分细粒度信息,所以对小目标的检测有天然的劣势,后续的yolo版本通过多种尺度的拼接来提升小目标的检测效果。

YOLO v2

yolov2从各个维度对yolov1做了改进。
首先批次归一化BN的出现,大大提升了模型的泛化能力和训练速度,yolov2将其引入。
为解决yolov1小目标效果较差的问题,yolov2对中间层不同尺度的特征进行拼接,利用更细粒度的特征来提升小目标检测的性能。
YOLO v1,v2,v3总结_第4张图片
另外,yolo v2去除了全连接层,一卷到底,一是减少了参数提升了速度,二是获取更多的空间信息,三是对输入图像的尺寸不受限制,可以输入多种尺度的图像进行多尺度训练。
在这里插入图片描述
相对于yolov1直接回归目标框,yolov2增加了anchor box,即通过k-means对数据集中的gt框进行聚类得到五个锚定框,然后预测相对于锚定框的偏移量。这种做法其实是引入了数据集的先验信息,让网络学到这些信息并在这些信息的基础上进行预测。

YOLO v3

为进行非互斥的类别预测,yolov3使用多个独立的逻辑分类器进行类别预测,即使用sigmod代替softmax,对每一个输出计算二元交叉熵损失。
在这里插入图片描述
为进一步提升小目标检测能力,yolov3在多尺度特征融合上做了改进,使用了FPN网络进行三个不同尺度特征的融合(类似于U-Net),并在上采样部分的三个尺度的特征输出口分别接检测头,三个检测头分别负责大中小三种粒度的目标的检测。
YOLO v1,v2,v3总结_第5张图片

你可能感兴趣的:(YOLO v1,v2,v3总结)