【深度学习-目标检测】05 - YOLOv1 论文学习与总结

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

论文学习

在这里插入图片描述

1. 摘要

  1. YOLO的提出:作者提出了YOLO,这是一种新的目标检测方法。与传统的目标检测方法不同,YOLO将目标检测视为一个回归问题,直接从图像像素到边界框坐标和类别概率的映射。
  2. 方法特点
    • 统一的架构:YOLO使用单一的神经网络直接从完整图像中预测边界框和类别概率。这种统一的架构使得YOLO在检测性能上可以进行端到端的优化。
    • 实时性能:YOLO极其快速。基础的YOLO模型可以实时处理图像,每秒处理45帧。而更小的版本,Fast YOLO,可以处理高达155帧每秒,同时仍保持较高的平均精度(mAP)。
  3. 性能比较
    • 与其他实时检测系统相比,YOLO在本地化错误方面表现更好,但在背景误判方面的表现较差。
    • YOLO在从自然图像到其他领域(如艺术作品)的泛化能力方面优于其他检测方法,如DPM和R-CNN。

补充:YOLO将目标检测视为回归问题的理解

想象一下,你有一张包含多个物体的照片,比如一张客厅的照片,里面有沙发、电视和一只猫。现在,如果我们要用一个计算机程序来识别这张照片中的物体及其位置,这就是一个典型的目标检测问题。

  1. 在传统的目标检测方法中,这个过程通常分为两步:
    • 定位:首先识别出照片中可能有物体的区域(比如沙发的位置、电视的位置和猫的位置)。
    • 分类:然后对这些区域进行分类,判断它们是什么物体(比如这是沙发、那是电视、还有一只猫)。
  2. 而在YOLO这种使用回归方法的目标检测中,这个过程被简化为一步:
    • 程序一次性直接从照片中“预测”出每个物体的位置(用边界框坐标表示)和类别(用类别概率表示)。这里的“预测”就是回归问题中的输出。
    • 具体来说,对于照片中的每个物体(比如猫),YOLO会输出:
      • 边界框坐标:这是一组连续的数值,描述了猫在照片中的确切位置。通常包括猫所在区域的左上角和右下角的坐标。
      • 类别概率:这是一组数值,表示这个区域是猫的概率有多高,以及它可能是其他类别(如沙发、电视)的概率。

所以,YOLO通过一次计算就能告诉我们:“在这个位置有一只猫,我有90%的把握它是猫,10%的可能是其他东西。” 这就是回归问题在YOLO中的应用。

一般来说,YOLO会预测五个值(中心x坐标,中心y坐标,宽度,高度,类别概率)。

2. 引言

  1. 人类视觉系统的效率:作者首先指出,人类能够迅速且准确地通过视觉系统识别图像中的物体、它们的位置以及它们之间的相互作用。这种能力使我们能够轻松地执行复杂任务,例如驾驶汽车。

  2. 计算机视觉的挑战:作者强调,如果能开发出快速且准确的目标检测算法,那么计算机将能够在没有特殊传感器的情况下驾驶汽车,为残疾人提供实时场景信息,甚至实现通用的、响应灵敏的机器人系统。

  3. 现有目标检测系统的局限性

    • 传统的目标检测系统通常将分类器重新用于检测。这些系统通过在测试图像中的不同位置和尺度上评估分类器来检测物体。
    • 例如,形变部件模型(DPM)使用滑动窗口方法,而最近的方法如区域卷积神经网络(R-CNN)使用区域提议方法来首先生成潜在的边界框,然后在这些提议的框上运行分类器。
    • 这些复杂的流程不仅速度慢,而且难以优化,因为每个组件都需要单独训练。
  4. YOLO的提出:鉴于现有方法的这些局限性,作者提出了YOLO,这是一种全新的目标检测方法。 YOLO将目标检测视为一个单一的回归问题,直接从图像像素到边界框坐标和类别概率的映射。

3. 统一检测

  1. 目标检测的统一化

    • YOLO方法将目标检测的多个组成部分统一到一个单一的神经网络中。这种统一化的方法使得从整个图像中直接预测边界框和类别概率成为可能。
    • 与传统的、由多个阶段组成的目标检测方法不同,YOLO的统一网络同时处理多个任务,包括特征提取、边界框预测和类别概率预测。
  2. 网络结构
    在这里插入图片描述

    • YOLO网络将输入图像划分为一个S×S的网格。如果某个物体的中心落在一个网格单元内,那么这个网格单元就负责检测该物体。
    • 每个网格单元预测B个边界框和这些框的置信度(confidence scores)。置信度反映了模型对框中包含物体的把握,以及预测框与实际框的匹配程度。
    • 每个边界框包含5个预测值:中心点的x和y坐标、宽度、高度和置信度。
    • 每个网格单元还预测C个条件类别概率,这些概率是在网格单元包含物体的条件下计算的。
      在这里插入图片描述
  3. 训练和优化

    • YOLO网络在整个图像上进行训练,直接优化检测性能,而不是像传统方法那样分别训练不同的组件。
    • 网络使用大量的真实图像进行训练,学习如何准确地预测物体的位置和类别。
  4. 实时性能

    • 由于YOLO将检测过程简化为单一网络的前向传递,因此它能够以非常快的速度运行,实现实时目标检测。
    • YOLO的这种快速性能使其适用于需要实时反馈的应用,如自动驾驶汽车和机器人导航。

4. 训练

  1. 预训练卷积层
    • YOLO首先在ImageNet 1000类竞赛数据集上预训练其卷积层。这一步骤旨在让网络学习到丰富的特征表示,这些特征对于后续的目标检测任务至关重要。
    • 预训练使用的是网络的前20个卷积层,后接平均池化层和全连接层。
  2. 转换为检测模型
    • 在预训练完成后,模型被转换为目标检测模型。这包括在网络中添加额外的卷积层和全连接层,这些层的权重是随机初始化的。
    • 为了适应目标检测任务,输入图像的分辨率被提高到448×448。
  3. 损失函数
    • YOLO使用平方和误差作为其损失函数。这个选择简化了优化过程,但并不完全符合目标检测的最终目标,即最大化平均精度。
    • 损失函数对不同类型的误差(如定位误差、分类误差)进行加权,以处理不同重要性的误差。
  4. 训练细节
    • 在训练过程中,使用了多种技术来提高模型的泛化能力和减少过拟合。这包括dropout和数据增强(如随机缩放和平移图像,调整图像的曝光和饱和度)。
    • 训练使用不同的学习率安排,初始阶段使用较低的学习率,随后逐渐提高。
  5. 边界框预测的特殊处理
    • YOLO对边界框的宽度和高度预测使用平方根变换,以更好地处理不同大小的边界框。
    • 训练时,只有与真实边界框重叠最多的预测框被认为是“负责”该目标的,这有助于模型学习到更准确的边界框。

5. 推理

  1. 单次网络评估
    • 在推理(即目标检测)阶段,YOLO只需要对测试图像进行一次网络评估。这与传统的目标检测方法不同,后者可能需要多次评估来检测图像中的不同区域。
    • 这种单次评估方法使得YOLO能够快速处理图像,实现实时目标检测。
  2. 网格设计和空间约束
    • YOLO将输入图像划分为S×S的网格,并在每个网格单元内进行预测。这种设计强制实现了预测的空间多样性,即每个网格单元负责检测位于其内部的目标。
    • 这种方法有助于减少重复检测和提高检测的准确性。
  3. 边界框和类别预测
    • 对于每个网格单元,YOLO预测多个边界框和这些框的置信度,以及条件类别概率。
    • 置信度反映了模型对框中包含物体的把握,以及预测框与实际框的匹配程度。条件类别概率则表示在检测到物体的情况下,它属于各个类别的概率。
  4. 非极大值抑制
    • YOLO使用非极大值抑制(Non-maximal Suppression,NMS)来处理多个重叠的边界框。这一步骤有助于去除冗余的检测结果,确保每个物体只被检测一次。
    • NMS通过保留置信度最高的边界框,并去除与其重叠度较高的其他边界框来实现。
  5. 实时性能
    • 由于YOLO的简单和高效,它能够在保持较高检测精度的同时,实现实时的处理速度。这使得YOLO适用于需要快速响应的应用场景,如视频监控、自动驾驶等。

6. YOLO的局限性

  1. 空间约束的影响
    • 由于YOLO将图像划分为S×S的网格,并且每个网格单元负责预测边界框,这种设计带来了空间约束。每个网格单元只能预测有限数量的边界框(通常是两个),并且只能预测一个类别。
    • 这种空间约束限制了YOLO在处理图像中靠近或重叠的多个小物体时的效果。
  2. 对小物体的检测挑战
    • YOLO在检测小物体,特别是当这些小物体以群组形式出现时,表现不如大物体。这部分是因为小物体可能在网格划分中不够显著,或者被网格中的大物体所掩盖。
  3. 泛化能力的局限
    • YOLO在处理不常见的物体或不寻常的物体排列时可能会遇到困难。由于YOLO在训练过程中学习到的特征和物体的空间关系,如果遇到新的或罕见的物体排列,它可能无法准确地进行检测。
  4. 定位误差
    • YOLO在定位物体时可能不够精确,尤其是对于小物体。这可能是由于YOLO在设计上对速度的优先考虑,牺牲了一些定位精度。
  5. 损失函数的不完美
    • YOLO使用的平方和误差损失函数可能不完全适合目标检测任务。这种损失函数可能导致对不同类型的误差(如定位误差和分类误差)的不平衡处理。

7. 与其他检测系统的比较

  1. 与形变部件模型(DPM)的比较
    • DPM使用滑动窗口方法进行目标检测,它通过多个阶段来提取特征、分类区域、预测边界框等。 与DPM相比,YOLO使用单一的卷积神经网络来同时完成这些任务,提高了速度和准确性。
  2. 与区域卷积神经网络(R-CNN)的比较
    • R-CNN及其变体(如Fast R-CNN和Faster R-CNN)使用区域提议方法来定位目标,然后对这些区域进行分类。与这些方法相比,YOLO的速度更快,因为它不需要为每个区域单独运行分类器。
  3. 其他快速检测器的比较
    • 一些研究致力于加速DPM和R-CNN等传统检测方法。尽管这些方法在速度上有所提升,但它们通常仍然无法达到实时性能。
    • YOLO的设计初衷是速度,因此它在保持较高准确度的同时实现了实时性能。
  4. 检测性能的比较
    • YOLO在PASCAL VOC等标准数据集上与其他检测系统进行了性能比较。YOLO在实时性能方面表现出色,同时在准确性方面也与其他先进系统相当。
  5. 错误类型的比较
    • YOLO与其他系统在错误类型上有所不同。例如,与Fast R-CNN相比,YOLO在定位错误上表现更差,但在背景误判方面表现更好。
  6. 泛化能力的比较
    • YOLO在从自然图像到其他领域(如艺术作品)的泛化能力方面优于其他检测方法。这表明YOLO学习到的特征表示具有较好的泛化性。

8. 实验

  1. PASCAL VOC 2007实验
    • YOLO在PASCAL VOC 2007数据集上进行了测试,这是一个广泛使用的目标检测基准数据集。
    • 实验结果显示,YOLO在实时性能方面表现出色,同时在平均精度(mAP)方面也取得了竞争性的结果。
  2. 与Fast R-CNN的比较和错误分析
    • 作者对YOLO和Fast R-CNN在VOC 2007数据集上的表现进行了详细比较,并分析了两种方法的错误类型。
    • YOLO在定位错误上表现较差,但在背景误判方面表现更好。
  3. 结合YOLO和Fast R-CNN
    • 作者探索了将YOLO和Fast R-CNN结合使用的可能性,以减少Fast R-CNN的背景误判。
    • 结合使用两种方法可以提高整体检测性能。
  4. PASCAL VOC 2012实验
    • YOLO也在PASCAL VOC 2012数据集上进行了测试,以进一步验证其性能。
    • 尽管YOLO在某些类别上的表现不如其他方法,但在整体性能上仍然具有竞争力。
  5. 泛化能力测试
    • 为了测试YOLO的泛化能力,作者在艺术品数据集上进行了实验,这些数据集包括风格迥异的图像。
    • YOLO在这些数据集上的表现证明了其对不同领域图像的良好泛化能力。
  6. 实时性能测试
    • YOLO的实时性能在实验中得到了验证,特别是在处理视频流和实时应用场景时。

9. 结论

  1. YOLO的创新性
    • 作者强调了YOLO作为一个统一的目标检测模型的创新性。与传统的基于分类器的方法不同,YOLO直接从图像像素到边界框坐标和类别概率的映射,实现了目标检测的简化。
  2. 端到端训练
    • YOLO的整个模型可以进行端到端的训练,这意味着从输入图像到最终的检测结果,整个过程在一个统一的网络结构中完成,没有分离的组件或阶段。
  3. 实时性能
    • YOLO的一个显著特点是其实时性能。作者指出,YOLO是目前文献中最快的通用目标检测方法,适用于需要快速响应的应用,如视频监控和机器人导航。
  4. 泛化能力
    • YOLO不仅在标准的目标检测数据集上表现出色,而且在泛化到新领域(如艺术品检测)时也显示出强大的能力。
  5. 未来工作方向
    • 尽管YOLO在多个方面表现出色,但作者也承认它在某些情况下(如检测小物体或群体中的物体)的局限性。这为未来的改进和研究提供了方向。
  6. 对计算机视觉领域的贡献
    • 作者总结说,YOLO的提出对于推动实时目标检测技术的发展具有重要意义,为计算机视觉领域提供了一个高效、准确的工具。

这篇论文《You Only Look Once:Unified, Real-Time Object Detection》的主要创新点和贡献可以总结如下:

  1. 统一的检测框架
    • YOLO将目标检测的过程简化为一个单一的神经网络,这与传统的目标检测方法(通常涉及多个阶段,如候选区域生成和分类)形成鲜明对比。这种统一的框架简化了目标检测流程,提高了效率。
  2. 实时目标检测
    • YOLO能够实现实时目标检测,这对于需要快速响应的应用(如自动驾驶、视频监控)至关重要。它能够以极高的帧率处理图像,同时保持较高的检测精度。
  3. 端到端训练
    • YOLO可以进行端到端的训练,意味着从输入图像到最终的检测结果,整个过程在一个统一的网络结构中完成。这种训练方式使得模型能够更好地优化整体检测性能。
  4. 直接回归到边界框和类别概率
    • YOLO直接从图像像素回归到边界框坐标和类别概率,这种方法避免了传统目标检测方法中的复杂区域提议和后续分类步骤。
  5. 泛化能力
    • YOLO在不同的数据集和应用场景中表现出良好的泛化能力,能够有效地从自然图像泛化到其他领域,如艺术品检测。
  6. 减少背景误判
    • 与其他目标检测方法相比,YOLO在减少背景误判方面表现更为出色,这对于减少错误检测非常重要。
  7. 空间约束的引入
    • 通过将图像划分为网格,并在每个网格单元中进行预测,YOLO引入了空间约束,这有助于提高检测的准确性。

YOLO

在这里插入图片描述

  1. 图像预处理
    • 输入图像首先被调整到固定的大小(例如448×448像素),以适应YOLO网络的输入要求。
  2. 划分网格
    • 调整后的图像被划分为S×S的网格(例如7×7)。每个网格单元负责检测落在其内部的目标。
  3. 特征提取
    • 图像通过卷积神经网络(CNN)进行前向传播。网络包含多个卷积层、池化层和全连接层,用于提取图像的特征。
  4. 边界框预测
    • 每个网格单元预测B个边界框。每个边界框包含5个参数:中心点的x和y坐标、宽度、高度和置信度。置信度表示预测框中是否存在目标,以及预测框的准确性。
  5. 类别概率预测
    • 每个网格单元还预测C个条件类别概率。这些概率表示在该单元中检测到目标的情况下,目标属于每个类别的概率。
  6. 组合预测
    • 对于每个边界框,其最终的类别置信度由边界框的置信度和条件类别概率相乘得到。这表示了边界框包含特定类别的目标的概率。
  7. 非极大值抑制
    • 由于多个网格单元可能预测重叠的边界框,YOLO应用非极大值抑制(NMS)来去除重复的检测。在NMS中,保留置信度最高的边界框,并移除与其重叠度较高的其他边界框。
  8. 最终检测输出
    • 经过NMS处理后,YOLO输出最终的检测结果,包括每个检测到的目标的位置(边界框)和类别。

补充:关于在网格内预测目标

YOLO的工作流程中,会将原始图像划分为S*S个网格,然后在每个网格中去预测每个预测框和类别,关于这句话的理解,需要详细解释一下:

首先,划分为S*S个网格,每个网格属于一个”责任区域“,并不是”预测区域“,所谓”责任区域“指的是:如果某个物体的中心点落在某个网格内,那么对于这个物体的边界框预测和类别预测将是由这个网格负责,它可以在整个图像上完成预测工作,并不局限于自己的这个网格区域。

因此,如果存在某个物体跨越了多个网格,也是没有问题的,因为这个物体的中心点一定是在某个网格内的,它的预测任务将是由这个网格负责。

以上内容旨在记录自己的学习过程以及复习,如有错误,欢迎批评指正,谢谢阅读。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/273847.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【数据结构】六、树和二叉树

目录 一、树的基本概念 二、二叉树 2.1二叉树的性质 2.2二叉树的存储结构 2.3遍历二叉树 先序遍历 中序遍历 后序遍历 层次遍历 2.4二叉树的应用 计算叶子数 前序遍历建树 根据序列恢复二叉树 计算树的深度 判断完全二叉树 三、线索二叉树 3.1线索化 四、树和森林…

redis的搭建及应用(三)-Redis主从配置

Redis主从配置 为提升Redis的高可用性,需要搭建多个Redis集群以保证高可用性。常见搭建方式有:主从,哨兵集群等,本节我们搭建一主二从的多Redis架构。 redis主从安装1主2从的方式配置,以端口号为redis的主从文件夹。 主…

前缀和——OJ题(二)

📘北尘_:个人主页 🌎个人专栏:《Linux操作系统》《经典算法试题 》《C》 《数据结构与算法》 ☀️走在路上,不忘来时的初心 文章目录 一、和为 k 的子数组1、题目讲解2、思路讲解3、代码实现 二、和可被 K 整除的⼦数组1、题目讲…

office bookmarks

Word2007Util.java-CSDN博客

Linux 安装 Tomcat

1、找到安装包 2、解压缩 tar -xzvf xxx.tar.gz Tomcat 很好安装,已经安装好了 3、启动、关闭Tomcat 进入解压后文件夹之后,两个文件分别是启动和关闭 sh startup.sh // 启动 sh shutdown.sh // 关闭 然后就行了 4、主机连接虚拟机Tomcat 注意这里填写…

使用 SSH 方式实现 Git 远程连接GitHub

git是目前世界上最先进的分布式版本控制系统,相比于SVN,分布式版本系统的最大好处之一是在本地工作完全不需要考虑远程库的存在,也就是有没有联网都可以正常工作!当有网络的时候,再把本地提交推送一下就完成了同步&…

HackTheBox - Medium - Linux - OnlyForYou

OnlyForYou OnlyForYou 是一台中等难度的 Linux 计算机,其特点是 Web 应用程序容易受到本地文件包含 (LFI) 的影响,该应用程序用于访问源代码,从而揭示盲目命令注入漏洞,从而导致目标系统上的 shell。该计…

智能优化算法应用:基于蜣螂算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用:基于蜣螂算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于蜣螂算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.蜣螂算法4.实验参数设定5.算法结果6.参考文献7.MA…

数据结构和算法:二分法

文章目录 一&#xff1a;最基本的二分法使用else if收缩空间&#xff0c;思路更清晰防止数据太大溢出int的范围什么情况使用while(left < right)&#xff1f;为什么这个时候right nums.length - 1&#xff1f;什么情况使用while(left < right)&#xff1f;为什么这个时候…

Docker 概念介绍

1、Docker 简介 Docker一个快速交付应用、运行应用的技术: 可以将程序及其依赖、运行环境一起打包为一个镜像&#xff0c;可以迁移到任意Linux操作系统运行时利用沙箱机制形成隔离容器&#xff0c;各个应用互不干扰启动、移除都可以通过一行命令完成&#xff0c;方便快捷 Doc…

RustDesk连接客户端提示key不匹配 Key Mismatch无法连接(已解决)

环境: RustDesk1.1.9 服务端docker部署 问题描述: RustDesk连接客户端提示key不匹配 Key Mismatch无法连接 解决方案: 1.docker部署RustDesk服务检查配置 networks:rustdesk-net:external: falsevolumes:hbbr:hbbs:services:hbbs:container_name: rustdesk-hbbsport…

【SpringBoot篇】优惠券秒杀 — 添加优惠劵操作(基本操作 | 一人仅一张券的操作)

文章目录 &#x1f354;发放优惠券&#x1f386;基本操作&#x1f384;数据库表&#x1f6f8;思路&#x1f339;代码实现 &#x1f386;完善后的操作&#x1f6f8;乐观锁&#x1f339;代码实现 &#x1f354;一人仅一张优惠券&#x1f6f8;思路&#x1f339;代码⭐代码分析 &am…

微信小程序开发系列-05登录小程序

本文继续学习下微信小程序登录相关的内容。 微信平台小程序用户体系 普通用户视角&#xff1a;对于每个小程序&#xff0c;微信都会将用户的微信ID映射出一个小程序OpenID&#xff0c;作为这个用户在这个小程序的唯一标识。&#xff08;注意&#xff1a;同一微信用户在不同小…

unityc用vs2017介绍

21版unity能用17vs&#xff0c;只要在unity的Edit/Preferences/ExternalTools里面改既可。

继承-继承方式

继承方式 继承的语法: class 子类 &#xff1a;继承方式 父类 继承方式一共有三种&#xff1a; 1.公共继承 2.保护继承 3.私有继承 //继承方式 #include<iostream> using namespace std; class Base1 { public:int m_A; protected:int m_B; private:int m_C; }; cla…

卷积神经网络基础

全连接层 BP&#xff08;back propagation&#xff09;算法包括信号的前向传播和误差的反向传播两个过程。即计算误差输出时按从输入到输出的方向进行&#xff0c;而调整权值和阈值则从输出到输入的方向进行。 误差值&#xff1a;将输出值和所期望的值进行对比&#xff0c;可以…

设备智能运维利器:无线振温一体式传感器

在现代工业领域中&#xff0c;设备的状态监测和维护是确保生产正常运行的关键环节。随着技术的不断进步&#xff0c;传感器在设备监测中发挥着越来越重要的作用。其中&#xff0c;无线振温一体式传感器作为设备智能运维的利器&#xff0c;具有独特的优势和潜力。本文将介绍无线…

C++ Qt开发:TableView与TreeView组件联动

Qt 是一个跨平台C图形界面开发库&#xff0c;利用Qt可以快速开发跨平台窗体应用程序&#xff0c;在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置&#xff0c;实现图形化开发极大的方便了开发效率&#xff0c;本章将重点介绍TableView与TreeView组件联动的常用方法及灵活…

Transfer Learning(迁移学习)

1. 什么是迁移学习 迁移学习(Transfer Learning)是一种机器学习方法&#xff0c;就是把为任务 A 开发的模型作为初始点&#xff0c;重新使用在为任务 B 开发模型的过程中。迁移学习是通过从已学习的相关任务中转移知识来改进学习的新任务&#xff0c;虽然大多数机器学习算法都…

表单(HTML)

<!DOCTYPE html> <html><head><meta charset"utf-8"><title>个人信息</title></head><body><h1>个人信息</h1><form><fieldset><legend>基本信息</legend><label for"…