天天看点

YOLO算法详解创新点算法概述算法详解实验结果

论文地址:You Only Look Once: Unified, Real-Time Object Detection

创新点

YOLO实现了实时处理图片,达到45FPS;Fast YOLO达到155FPS,但是检测准确率不高。

优势:

  1. 速度快。
  2. 做预测时全局了解图像,对背景预测错误出现的概率比Fast R-CNN小。
  3. YOLO学习目标的一般特征,具有较高通用性,应用到新领域,不太可能发生故障。

但是YOLO检测准确性不高,虽然可以快速识别图像中的对象,但是很难准确定位一些目标,尤其是小目标。

算法概述

YOLO使用整张图片的特征预测bounding box。

  1. 将图片分为
    YOLO算法详解创新点算法概述算法详解实验结果
    的网格。如果某个目标中心落在一个网格,则该网格负责检测该目标。有些目标中心点可能落在多个网格的边界,可通过nms进行筛选。
  2.  每个网格预测
    YOLO算法详解创新点算法概述算法详解实验结果
    个bounding box及其置信度。置信度反映了bounding box包含对象的信心程度,以及bounding box预测目标的准确程度。置信度定义为:
    YOLO算法详解创新点算法概述算法详解实验结果
    。如果不含目标,则confidence=0,如果含有目标,则confidence=
    YOLO算法详解创新点算法概述算法详解实验结果
  3. YOLO算法详解创新点算法概述算法详解实验结果
    每个bounding box包括5个预测值:
    YOLO算法详解创新点算法概述算法详解实验结果
    及置信度。(x,y)表示bounding box中心坐标,与网格相关,训练过程将x,y,w,h进行归一化。
  4. 每个网格预测
    YOLO算法详解创新点算法概述算法详解实验结果
    个条件类别概率
    YOLO算法详解创新点算法概述算法详解实验结果
    。不论每个网格中bounding box有多少个,每个网格只预测一组类别概率。
  5. 在测试阶段,我们将条件类别概率与bounding box置信度相乘,
    YOLO算法详解创新点算法概述算法详解实验结果
    ,得到每个bounding box属于特定类别的confidence score。
  6. 因此最终预测值变为
    YOLO算法详解创新点算法概述算法详解实验结果
    的张量。
YOLO算法详解创新点算法概述算法详解实验结果

YOLO在VOC数据集上测试,参数

YOLO算法详解创新点算法概述算法详解实验结果

,因为VOC数据集含有20类,因此设置

YOLO算法详解创新点算法概述算法详解实验结果

,最终预测值为

YOLO算法详解创新点算法概述算法详解实验结果

的张量。

算法详解

1. 网络结构

YOLO网络有24个卷积层,紧跟2个全联接层,整体网络结构如图所示。

Fast YOLO网络使用较少卷积层,只有9个。

YOLO算法详解创新点算法概述算法详解实验结果

2. 训练过程

在ImageNet数据集上使用网络前20个卷积层紧接着一个平均池化层及一个全连接层进行预训练,我们添加4个卷积层和2个全连接层,并进行初始化。为了增加细粒度信息,我们将网络输入分辨率由

YOLO算法详解创新点算法概述算法详解实验结果

提高到

YOLO算法详解创新点算法概述算法详解实验结果

网络最后一层采用线性激活函数,其他层采用pRelu(修正线性激活函数):

YOLO算法详解创新点算法概述算法详解实验结果

3. 损失函数

作者采用sum-squared error(平方和)的方式把坐标误差和分类误差整合到一起。但如果二者的权值一致,容易导致模型不稳定,训练发散。因为很多grid cell是不包含物体的,因此grid cell的confidence score为0。所以采用设置不同权重方式来解决,一方面提高坐标误差的权重,另一方面降低不包含目标的bounding box的confidence loss权值,loss权重分别是

YOLO算法详解创新点算法概述算法详解实验结果

,

YOLO算法详解创新点算法概述算法详解实验结果

。而对于包含object的box的confidence loss权值还是原来的1。损失函数如下所示:

YOLO算法详解创新点算法概述算法详解实验结果
YOLO算法详解创新点算法概述算法详解实验结果

第一项Loss表示bounding box中心坐标误差,第二项Loss表示bounding box宽与高的误差,之所以使用平方根,为了提高对小目标的检测准确性。比如大目标w=8,预测值w=10;小目标w=1,预测值w=3.不采用平方根,对于大小目标误差相同为4;而采用平方根,对于大目标误差为0.11,小目标误差为0.54.

第三项与第四项分别为该网格的bounding boxes有目标与无目标情况下的confidence Loss。

第五项表示预测类别的误差。

实验结果

1. 实时性系统比较

YOLO算法详解创新点算法概述算法详解实验结果

YOLO在实时检测方面,准确性较高,相比于Faster R-CNN等非实时检测,虽然mAP较低,但FPS较高,满足实时性要求。

2. 误差分析

YOLO算法详解创新点算法概述算法详解实验结果
  • Correct: correct class and IOU > :5
  • Localization: correct class, :1 < IOU < :5
  • Similar: class is similar, IOU > :1
  • Other: class is wrong, IOU > :1
  • Background: IOU < :1 for any object

YOLO相比于Fast R-CNN,有较多定位误差,Fast R-CNN有较多背景误判。

3. Fast R-CNN与YOLO结合

YOLO算法详解创新点算法概述算法详解实验结果

提升mAP,但是耗费时间增加。

4. VOC12上测试结果

YOLO算法详解创新点算法概述算法详解实验结果

5. YOLO在其他数据集上测试

YOLO算法详解创新点算法概述算法详解实验结果
YOLO算法详解创新点算法概述算法详解实验结果

YOLO算法缺点

  1. 依照论文,每张图产生49个网格,98个bounding box,最多检测出49个目标,对于距离较近的成群小目标,检测效果差。
  2. 定位不准。Loss主要来自于定位误差,小误差对小bounding box影响远大于同等误差对大bounding box影响。
  3. 不擅长检测特征相似的某类物体,擅长实时检测多类物体。

继续阅读