目标检测算法YOLO简介

      YOLO全称为You Only Look Once,一种新的目标(object)检测方法,由Joseph Redmon等人于2015年提出,论文名为《You Only Look Once:Unified, Real-Time Object Detection》,论文见:https://arxiv.org/pdf/1506.02640.pdf ,项目网页:https://pjreddie.com/darknet/yolo/

      这里仅整理YOLOv1,以下内容主要来自论文:

      YOLO将目标检测视为空间分离的边界框和相关类别概率的回归问题(we frame object detection as a regression problem to spatially separated bounding boxes and associated class probabilities)。单个神经网络在一次评估中直接从完整图像预测边界框和类别概率YOLO可以直接基于完整图像做训练。由于整个检测管道是单个网络,因此可以直接在检测性能上进行端到端优化。

      YOLO将目标检测重新构建为单个回归问题(regression problem),直接从图像像素到边界框(bounding box)坐标和类别概率(class probabilities)。使用YOLO,你只需查看图像一次即可预测存在哪些目标以及它们所在的位置

      YOLO检测流程如下图所示:YOLO非常简单,单个卷积网络同时预测多个边界框和这些框的类别概率。YOLO在完整图像上进行训练并直接优化检测性能。与传统的目标检测方法相比,这种统一模型(unified model)有几个优点:

      1.首先,YOLO速度极快。由于我们将检测视为回归问题,因此不需要复杂的流程(pipeline)。我们只需在测试时在新图像上运行神经网络来预测检测结果。

      2.其次,YOLO在进行预测时对图像进行全局推理。与滑动窗口和基于候选区域(region proposal-based)的技术不同,YOLO在训练和测试期间看到整个图像,因此它隐式编码有关类别及其外观(appearance)的上下文信息(contextual information)。

      3.YOLO学习目标的泛化表示(generalizable representation)。由于YOLO具有高度通用性,因此在应用于新领域或意外输入时不太可能崩溃(break down)。

      YOLO在准确性方面仍然落后于最先进的(state-of-the-art)检测系统。虽然它可以快速识别图像中的目标,但很难精确定位某些目标,尤其是小目标。

      统一检测(Unified Detection):

      1.我们将目标检测的各个组成部分统一到单个神经网络中。我们的网络使用整个图像的特征来预测每个边界框。它还同时预测图像所有类别的所有边界框。这意味着我们的网络对完整图像和图像中的所有目标进行全局推理(reasons globally)。YOLO设计可实现端到端训练和实时速度,同时保持较高的平均精度。

      2.我们的系统将输入图像划分为SxS网格。如果目标的中心落入网格单元中,则该网格单元负责检测该目标

      3.每个网格单元预测B个边界框以及这些框的置信度分数(confidence score)。这些置信度分数反映了模型(model)对框(box)包含目标的置信度,以及模型认为框预测的准确性。如果该单元格中不存在目标,则置信度分数应为零。否则,我们希望置信度得分等于预测框(predicted box)与真实框(ground truth)之间的重叠程度(IOU,Intersection Over Union,当两个框完全重叠时,IOU值为1,表示预测框与真实框完全匹配;而当两个框没有重叠时,IOU值为0)。IOU计算公式如下图所示:

      4.每个边界框由5个预测组成:x、y、w、h和置信度。(x;y)坐标表示相对于网格单元边界的框中心。宽度和高度是相对于整个图像预测的。最后,置信度预测表示预测框(predicted box)与任何真实框(ground truth box)之间的IOU。

      5.每个网格单元还预测C个条件类别概率。这些概率取决于包含目标的网格单元。我们只预测每个网格单元的一组类别概率,而不管框B的数量。如下图所示:

      6.网络设计,如下图所示:网络的最终输出是预测的7x7x30张量

      (1).我们将该模型实现为卷积神经网络。网络的初始卷积层从图像中提取特征,而全连接层则预测输出概率和坐标。

      (2).我们的网络架构受到图像分类GoogLeNet模型的启发。我们的网络有24个卷积层(https://github.com/pjreddie/darknet/blob/master/cfg/yolov1.cfg),后面跟着2个全连接层。我们不使用GoogLeNet使用的inception模块,而是简单地使用1x1缩减层(reduction layer),后跟3x3卷积层。

      7.YOLO的局限性

      (1).YOLO对边界框预测施加了很强的空间约束(spatial constraints),因为每个网格单元只能预测两个框并且只能有一个类别。这种空间约束限制了我们的模型可以预测的附近目标的数量。我们的模型很难处理成群出现的小目标,例如鸟群。

      (2).由于我们的模型从数据中学习预测边界框,因此它很难推广到新的或不寻常的纵横比(unusual aspect ratios)或配置(configurations)的目标。我们的模型还使用相对粗糙的特征来预测边界框,因为我们的架构具有来自输入图像的多个下采样层。

      (3).当我们在近似检测性能的损失函数上进行训练时,我们的损失函数对小边界框和大边界框的错误处理相同。大框中的小错误通常是良性的(benign),但小框中的小错误对IOU的影响要大得多。我们的主要错误来源是不正确的定位(localization)。

      与其它检测系统的比较:

      (1).YOLO网络同时执行特征提取、边界框预测、非极大值抑制和上下文推理。YOLO网络不是静态特征(static feature),而是在线(in-line)训练特征并针对检测任务对其进行优化。

      (2).YOLO是一种通用检测器,可以学习同时检测各种目标(object)。

      (3).YOLO预测图像中多个类别的多个目标的边界框和类别概率。

      (4).YOLO系列属于One-Stage检测,而RCNN系列属于Two-Stage检测

      详细推理过程参见:YOLO Inference

      GitHubhttps://github.com/fengbingchun/NN_Test

  • 16
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
根据引用和中提供的信息,YOLO算法是一种基于深度学习的目标检测算法,它的全称是You Only Look Once。针对YOLO算法的改进方向,一些可能的方向包括: 1. 提高检测精度:尽管YOLO算法在速度方面表现出色,但在一些复杂场景下可能存在检测精度不高的问题。因此,改进YOLO算法的精度是一个重要的方向。可以通过引入更复杂的网络结构、增加网络层数或使用更丰富的特征表示等方法来提高检测的精度。 2. 处理小目标:YOLO算法在处理小目标方面可能相对较弱。因为YOLO算法在网络中采用了分辨率下采样的操作,这可能导致小物体的特征信息丢失。因此,改进YOLO算法以处理小目标是一个重要的方向,可以通过引入更细粒度的特征表示或使用多尺度特征融合等方法来提高小目标的检测性能。 3. 多尺度目标检测:目前的YOLO算法在检测不同尺度的目标时可能存在一定的困难。为了解决这个问题,研究人员可以考虑引入多尺度的特征表示或设计更加灵活的网络结构,以适应不同尺度物体的检测需求。 4. 实时目标跟踪:目标检测和目标跟踪是计算机视觉领域的重要问题。当前的YOLO算法主要关注目标检测,但对于目标的长期跟踪可能存在一定的挑战。因此,改进YOLO算法以实现实时目标跟踪是另一个潜在的改进方向。 综上所述,改进YOLO算法的方向包括提高检测精度、处理小目标、多尺度目标检测和实时目标跟踪等。这些方向都可以进一步提升YOLO算法目标检测领域的性能和应用范围。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值