YOLO概述

发布时间 2023-09-16 23:47:32作者: 失控D大白兔

一. 目标检测

目标检测(Object Detection)是计算机视觉里的一个重要领域
其主要任务是识别和定位视频图片中的特定物体,如人、车辆、动物、物体等,并将其标注出来

早期的时候,目标检测主要使用提取特征给分类器(SVM)进行分类的方法。这些方法通常基于图像的低级特征,如边缘、纹理和颜色等,以及一些经验规则来识别目标。
然而,基于特征的方法在处理复杂场景、光照变化和目标变形等方面存在一定的局限性。

随着深度学习的兴起,基于深度神经网络的目标检测方法取得了巨大的突破
基于深度学习的目标检测算法如下

  • Faster R-CNN: 引入了区域提议网络,可以同时生成候选目标区域和对每个区域进行分类,从而实现了准确且高效的目标检测
  • YOLO: 基于深度学习的实时目标检测算法,将目标检测任务转化为一个回归问题,通过单个卷积神经网络直接预测目标的类别和位置,实现了实时的目标检测
  • SSD :在多个不同层次的特征图上进行目标检测,通过多个尺度的特征图来检测不同大小的目标
  • Mask R-CNN :在Faster R-CNN的基础上增加了对目标实例的分割(Instance Segmentation)能力,可以同时预测目标的类别、位置和像素级的分割掩码
  • RetinaNet :引入一种称为Focal Loss的损失函数来解决目标检测中的类别不平衡问题,使得算法在处理大量背景样本和少量目标样本时表现更好

目标检测的一般处理流程

  1. 图像预处理:首先对输入图像进行预处理操作,如调整大小、归一化、去噪等
  2. 特征提取:从图像中提取有助于识别目标的特征。常用的特征提取方法包括边缘检测、颜色直方图、纹理特征等
  3. 候选区域生成:在目标检测中,通常会生成一些可能包含目标的候选区域。这些候选区域可以通过使用滑动窗口、图像分割或深度学习等方法来生成
  4. 目标分类:对于每个候选区域,目标检测算法会使用分类器或深度神经网络来判断该区域是否包含目标。常用的分类器包括支持向量机(SVM)、卷积神经网络(CNN)等
  5. 目标定位(边界框回归):如果某个候选区域被分类为目标,则目标检测算法会进一步定位目标在图像中的准确位置,通常使用边界框(Bounding Box)来表示目标的位置
  6. 后处理:对检测结果进行后处理操作,如非极大值抑制(Non-maximum Suppression)来消除重叠的检测框,以及过滤掉置信度低的检测结果

其主干分为三部分

  • Backbone(主干网络)
    目标检测网络的基础部分,负责从输入图像中提取特征
    常用的特征提取网络包括VGGNet、ResNet、MobileNet等。这些网络通常是预训练的,在大规模图像分类任务上取得了较好的性能

  • Neck(特征融合层)
    这一部分负责将主干网络提取的特征进行融合和调整,以便更好地适应目标检测任务。常见的操作包括特征金字塔(FPN)、空间金字塔池化(SPP)、多尺度特征融合等
    融合后的特征将被传递给检测头进行目标分类和边界框回归

  • Detection head(检测头)
    主要负责对融合后的特征进行目标分类和边界框回归
    检测头输出的结果是检测到的目标类别和位置信息

二. YOLO介绍

YOLO(You Only Look Once)是一种流行的目标检测算法,它的特点是实时性能较强。
传统的目标检测算法通常分为两个阶段:首先使用区域提取方法生成候选目标区域,然后对这些候选区域进行分类和边界框回归
这种两阶段的方法在速度上较慢,尤其对于实时应用而言不太适用
YOLO通过将目标检测任务转化为回归问题,将输入图像分成一个固定大小的网格,并预测每个网格中可能存在目标的边界框和类别
对于候选框的提取和分类,只需要进行一次前向传递,大大提高了检测速度

2.1 YOLOv1

核心思想:将整张图片作为网络的输入,直接在输出层对BBox的位置和类别进行回归
基本思想

分类器输出的是一个类别,而目标检测器输出的是一个框
我们不仅要识别出对应的类别,还需要确认框的大小和位置

朴素的思想是采用滑动窗口分类方法,挨个遍历所有大小和位置的候选框,进行分类,这种方法操作复杂并且十分耗时

由于框的信息可以用一个向量来表示,这与传统分类输出类别的one-hot向量没有本质区别
所以可以将输出换成候选框的向量信息,同时增加一个置信度,转化成回归问题
但是这种回归只能输出一个目标,当然我们也可以设置多个向量,但毕竟不能完全匹配目标
因此我们将图像进行网格划分,每个网格由一个候选框向量负责

实现方法
将一幅图像分成SxS个网格,如果某个object的中心落在这个网格中,则这个网格就负责预测这个object
每个网络需要预测B个BBox的位置信息和confidence(置信度)信息,一个BBox对应着四个位置信息和一个confidence信息
confidence代表了所预测的box中含有object的置信度和这个box预测的有多准两重信息

2.2 YOLOv2
2.3 YOLOv3