YOLO v1学习笔记

YOLO v1学习笔记

  • 一、 概述
    • 1、优点:
    • 2、 缺点:
  • 二、模型详细介绍
    • 1、设计思路
    • 2、网络结构
    • 3、网络输出详细介绍
  • 三、损失函数
    • 1、位置误差
    • 2、置信度误差
    • 3、分类误差
  • 四、模型预测
    • 1、NMS算法

本文主要参考了一些博主的博客,并将自己的学习结果记录在此。欢迎大家学习交流!("_")原论文地址以及参考的大佬博客如下:

论文地址:

  • yolo v1论文

参考博客:

  • 【目标检测论文阅读】YOLOv1
  • YOLOv1深入理解
  • 目标检测模型YOLO-V1损失函数详解

一、 概述

YOLO——You Only Look Once 是2016年RGB大神的又一大作。Yolo直接将目标检测问题看作为一个回归问题,利用单一的网络,从图像像素信息直接预测出class和predict box。Yolo目前发布了四个版本,其中Yolo v1是Yolo系列模型的开山之作,有助于我们更好的理解Yolo系列模型。

1、优点:

  1. one stage的网络结构,将目标检测视为一种回归问题使得Yolo可以实时的对视频进行目标检测处理。
  2. 采用整幅图像进行检测,可以联系全局的图像信息特征,减少背景检测为物体的错误。
  3. 学习物体更泛化的特征表示,在新的领域上具有更好的适应性。

2、 缺点:

  1. 每个网格只对应两个bounding box,当物体的长宽比不常见(也就是训练数据集覆盖 不到时),效果较差。
  2. 原始图片只划分为7x7的网格,当两个物体靠的很近时,效果比较差。
  3. 最终每个网格只对应一个类别,容易出现漏检(物体没有被识别到)。
  4. 原始图片只划分为7x7的网格,当两个物体靠的很近时,效果比较差。

二、模型详细介绍

1、设计思路

YOLO v1学习笔记_第1张图片

  1. 将输入图片resize到 448 ∗ 448 448*448 448448大小
  2. 使用CNN进行特征提取,全连接层输出物体分类和predict box回归结果
  3. 非极大值抑制NMS筛选出最终的结果

Yolo是一个端到端的网络,图片输入后统一resize到 448 ∗ 448 448*448 448448大小,yolo将输入的图像分成 S ∗ S S*S SS ( S = 7 S=7 S=7)个gride cell,每个gride cell都有B( B = 2 B=2 B=2)个bounding box,最终通过NMS选择IOU最高的bounding box作为物体检测的输出,即每个格子只预测出一个物体。例如下图中的狗中心落在(1,4)这个gride cell中,则这个单元格只负责检测狗。
YOLO v1学习笔记_第2张图片

2、网络结构

YOLO v1学习笔记_第3张图片
输入:resize到448 x 448 x 3大小的图片,由于网络最后接入两层全连接层,全连接层需要固定输入的尺寸。

特征提取:使用1x1卷积层进行跨通道信息整合加3×3的卷积层取代googlenet的inception modules。

输出:后一个FC层得到一个1470 x 1的输出,将这个输出reshap一下,得到 7 x 7 x 30 的一个tensor,即最终每个单元格都有一个30维的输出,代表预测结果。具体如下
YOLO v1学习笔记_第4张图片

3、网络输出详细介绍

  • 7 x 7为网络划分后得到gride cell,每个单元格都是原始的448 x 448 x 3经过特征提取后得到输出,包含图像大部分区域的特征,每个gride cell都有两个bounding box和20个类别预测值(PASCAL VOC数据集),每个bounding box包含着4个坐标值和一个confidence值,即每个网格总共对应着30维的向量。

  • 30维向量中2个bounding box位置信息,每个bounding box都包含着4个坐标值(x, y, w, h),其中(x, y)为bounding box的中心点坐标,他是相对于所属gride cell左上角的位置进行了归一化结果(或者说是相对于所属gride cell的偏移值),如下图所示,bounding box的中心点所属gride cell坐标为(3,3),x,y现在分别代表着bounding box的实际中心坐标,计算其归一化值为x/(width/S)-3,y/(height/S)-3。(w,h)为bounding box的宽和高,是相对于整张图片的归一化值,w,h现在分别代表着bounding box的实际的宽和高,计算其归一化值为w/img_width,h/img_height。归一化的作用不会导致太难的收敛。
    YOLO v1学习笔记_第5张图片

  • 30维向量中2个bounding box的confidence信息,每个bounding box都包含着一个confidence,confidence的计算如下,其中Pr(Object)为bounding box是否包含目标,当不包含目标时该值为0,包含目标时该值为1(体现的是是否包含对象,并不在乎是哪一个对象)。IOU为bounding box与ground truth的交并比,由于在预测阶段无法知道真实的对象所在的位置,因此IOU的值仅在训练阶段计算。Confidence的值用以表示当前bounding box是否包含物体以及包含物体的准确性。

    P r ( O b j e c t ) ∗ I O U t r u t h p r e d Pr(Object)*IOU\frac{truth}{pred} Pr(Object)IOUpredtruth

  • 30维向量中20类物体分类的概率,对于PASCAL VOC数据集中的20个物体类别进行预测,其表征的是由该单元格负责预测的两个边界框中的目标属于各个类别的概率。注意这些概率值其实是在各个边界框置信度下的条件概率,之所以写成条件概率,意思是如果该网格存在一个对象Object,那么它是 P r ( c l a s s i ∣ O b j e c t ) Pr(class_i|Object) Pr(classiObject)(体现的是已经有一个对象在网格中,具体是哪一个对象)。也就是说不管一个单元格预测多少个边界框,该单元格只预测一组类别概率值(YOLO1的一大缺点)。
    YOLO v1学习笔记_第6张图片

三、损失函数

Yolo的损失函数的计算如下图所示。通过ground truth和输出之间的sum-squared error进行计算的,包含着位置误差、置信度误差和分类误差,所以相当于把分类问题也当成回归问题来计算loss。
YOLO v1学习笔记_第7张图片
公式参数解释:

  • 1 i j o b j \Bbb1_{ij}^{obj} 1ijobj表示gride cell i中存在对象object,并且gride cell的第j个bounding box与
  • 1 i j n o o b j \Bbb1_{ij}^{noobj} 1ijnoobj表示第i个gride cell 的第j个bounding box中不存在对象

1、位置误差

主要是计算bbox的(x,y,w,h)和对应的ground truth box的 (x,y,w,h)之间的sum-squared error,其中只有负责(IOU比较大)的bounding box的数据才会进行误差计算,其他不满足条件的bounding box不参与。在对宽度和高度进行误差计算时,进行了开方运算,由宽度和高度决定的bounding box对IOU计算的影响所决定的,如下图所示,具有相同偏移量F的小目标和大目标的检测,宽度和高度值较大的具有较好的IOU,据此,采用开方运算,其函数图像如图所示。
YOLO v1学习笔记_第8张图片
YOLO v1学习笔记_第9张图片

2、置信度误差

置信度的预测分为了有object的gride cell置信度计算和没有object的gride cell置信度计算。单元格中所有的bounding box都要参与计算,即第三行公式计算第i个gride cell中第j个bounding box包含object时置信度损失,第四行计算第i个gride cell中第j个bounding bo不x包含object时置信度损失。
从损失函数上看,当网格i中的第j个预测框包含物体的时候,用上面的置信度损失,而不包含物体的时候,用下面的损失函数。对没有object的box的confidence loss,赋予小的loss weight, 记为在pascal VOC训练中取0.5。有object的box的confidence loss和类别的loss的loss weight正常取1。

3、分类误差

类别损失这里也用了均方误差,实际上,感觉这里用交叉熵更好一些。其中 表示有无object的中心点落到网格i中,如果网格中包含有物体object的中心的话,那么就负责预测该object的概率。

四、模型预测

训练好的YOLO网络,输入一张图片,将输出一个 7730 的张量(tensor)来表示图片中所有网格包含的对象(概率)以及该对象可能的2个bounding box和confidence。为了从中提取出最有可能的那些对象和位置,YOLO采用NMS(Non-maximal suppression,非极大值抑制)算法。

1、NMS算法

————————华丽的分割线…未完待续!撒花!!!————————

你可能感兴趣的:(深度学习,人工智能,计算机视觉)