首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

【深度学习项目】目标检测之YOLO系列详解(一)

  • 25-02-16 04:41
  • 3201
  • 12206
blog.csdn.net

文章目录

  • 介绍
  • YOLOv1
    • 网络结构
    • 输出表示
    • 损失函数
    • 优点
    • 缺点
    • 论文思想
  • YOLOv2
    • 改进点
    • 网络架构
      • Darknet-19
  • YOLOv3
    • 主要改进
    • 网络架构
      • Darknet-53
    • 性能提升
    • 损失函数调整
      • 置信度损失
      • 类别损失
      • 定位损失

介绍

YOLO(You Only Look Once)是一种实时目标检测算法,由Joseph Redmon等人提出。与传统的基于滑动窗口和区域提案的目标检测方法不同,YOLO将目标检测问题框架化为一个单一的回归问题,直接从图像像素预测边界框和类别概率。

以下是YOLO的一些关键特点:

  • 统一的检测过程:YOLO在单个网络中同时预测多个类别的边界框和对象概率。这使得它能够以非常高的速度运行,适用于实时应用。
  • 全局理解图像:由于YOLO是在整个图像上进行预测,因此它隐式地编码了关于类别的上下文信息。这意味着它可以在一定程度上理解图像中的对象是如何相互关联的。
  • 简单性:YOLO模型结构相对简单,训练和推理都很容易实现,并且不需要复杂的管道或额外的步骤来生成区域建议。
  • 速度与精度的平衡:虽然YOLO强调速度,但它也试图保持较高的检测精度。不同的YOLO版本在速度和准确性之间进行了优化。
  • 泛化能力:YOLO通常能够很好地泛化到新的、未见过的数据集,因为它在训练过程中学习到了广泛的特征。

YOLO有多个版本,如YOLOv2, YOLOv3, YOLOv4, YOLOv5到YOLO11,每个新版本都在尝试改进其前代产品的性能,提高检测精度和速度,同时减少错误类型,比如背景假阳性。YOLOv3引入了多尺度预测,增强了小物体的检测能力;而YOLOv4则进一步提高了检测的速度和精度,采用了更先进的激活函数和正则化技术。YOLOv5以后是由Ultralytics公司开发的,不是原始作者发布的,但是它在社区中广泛使用并且具有更好的优化和支持。

YOLOv1

YOLOv1,即原始的YOLO(You Only Look Once)模型,是2016年由Joseph Redmon等人在论文《You Only Look Once: Unified, Real-Time Object Detection》中首次提出的。YOLOv1引入了一种全新的目标检测方法,它将目标检测视为一个回归问题来解决,而不是像传统的两阶段方法(如R-CNN系列)那样依赖于区域提案。
在这里插入图片描述

以下是YOLOv1的主要特点和工作原理:

网络结构

YOLOv1使用了一个类似于GoogLeNet的卷积神经网络结构,但是简化了某些部分,并且没有采用Inception模块。这个网络包含了24个卷积层,用于特征提取,以及2个全连接层,用于预测输出。
在这里插入图片描述
在这里插入图片描述

输出表示

YOLOv1将输入图像划分为S×S个网格(grid cell)。如果一个对象的中心落到了某个网格内,那么该网格就负责预测这个对象。每个网格预测B个边界框(bounding box)和这些框的置信度分数(confidence score),以及C类条件概率(conditional class probabilities)。因此,对于每个网格单元,输出张量的形状为S×S×(B*5+C)。

  • 边界框:每个边界框包含5个预测值:x, y, w, h和置信度。其中,x和y是相对于网格单元边界的坐标,w和h是相对于整张图片的比例。
  • 置信度:置信度反映了模型对边界框内含有对象的信心程度,同时也编码了预测框与真实框之间的IoU(Intersection over Union)。
  • 类别概率:每个网格只预测一组类别概率,不论该网格预测多少个边界框。

损失函数

YOLOv1定义了一个多部分的损失函数,用来同时优化分类精度、定位误差以及边界框的置信度。损失函数由以下几个部分组成:

  • 坐标预测的平方和误差
  • 网格单元内有对象时的置信度误差
  • 网格单元内无对象时的置信度误差(权重较小)
  • 类别预测的平方和误差
    在这里插入图片描述

优点

  • 速度:YOLOv1可以在普通GPU上实现实时检测(约45帧每秒)。
  • 全局上下文信息:因为YOLOv1是在整个图像上做预测,所以它可以利用图像的全局信息来进行检测。

缺点

  • 召回率较低:由于每个网格只能预测两个边界框,所以当多个小物体位于同一个网格中时,YOLOv1可能会错过一些检测。
  • 定位误差较大:相比于其他方法,YOLOv1的定位准确性略差,特别是在预测边界框的位置时。
  • 泛化能力有限:当遇到训练集中未见过的物体排列或比例时,YOLOv1的表现可能不如预期。

尽管YOLOv1存在上述缺点,但它开创了单阶段目标检测算法的先河,并且启发了后续版本的发展,比如YOLOv2, YOLOv3等,这些版本在保持YOLO速度优势的同时,不断改进其准确性和鲁棒性。

论文思想

  1. 将一幅图像分成SxS个网格(grid cell),如果某个object的中心 落在这个网格中,则这个网格就负责预测这个object。
  2. 每个网格要预测B个bounding box,每个bounding box除了要预测位置之外,还要附带预测一个confidence值。每个网格还要预测C个类别的分数。
    在这里插入图片描述
    在这里插入图片描述

YOLOv2

YOLOv2,也被称为YOLO9000,是YOLO系列目标检测算法的第二个重要版本。它由Joseph Redmon和Ali Farhadi在2017年的论文《YOLO9000: Better, Faster, Stronger》中提出。相较于YOLOv1,YOLOv2进行了多项改进,提升了检测速度、精度以及模型的泛化能力。以下是YOLOv2的主要特点和改进:

改进点

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  1. 更好的准确性
  • Batch Normalization:为所有卷积层添加了批量归一化(Batch Normalization),这不仅加快了训练过程,还减少了对其他正则化方法的需求,并且提高了模型的稳定性。
  • 高分辨率分类器:YOLOv2首先在ImageNet数据集上以448x448的分辨率预训练了一个分类网络10个epoch,然后再微调到检测任务上。这样可以更好地适应高分辨率输入。
  1. 更快的速度
  • Anchor Boxes:引入了类似于Faster R-CNN的先验框(Anchor Boxes)的概念,替换了YOLOv1中的手工设计的边界框预测方式。Anchor Boxes允许每个网格单元预测多个边界框,从而提高了召回率。
  • Dimension Clusters:通过K-means聚类在训练数据集上找到最适合的Anchor Boxes尺寸,而不是随机选择,这有助于提高定位的准确性。
  • Direct location prediction:为了保持模型的稳健性,YOLOv2直接预测边界框的位置偏移量,而不是使用log-space预测。
  1. 更强的泛化能力
  • Fine-grained features:为了更好地捕捉小物体,YOLOv2从早期的卷积层中提取细粒度特征,并与最终的特征图相结合。
  • Multi-scale training:YOLOv2采用了多尺度训练策略,在不同的迭代中随机改变网络的输入图像大小,使得模型能够处理各种不同分辨率的输入图像。
  1. 更多类别支持
  • Joint classification and detection:YOLOv2通过结合WordTree结构将COCO数据集的目标检测和ImageNet数据集的分类结合起来,使得模型可以同时识别超过9000种不同类型的对象。

网络架构

YOLOv2采用了一种新的基础网络叫做Darknet-19,它由19个卷积层和5个最大池化层组成。这个网络比原来的YOLOv1更加轻量化但性能更强大。Darknet-19的设计灵感来自于VGG16,但是通过一系列优化如减少滤波器数量和增加批标准化等手段来提升效率。

在这里插入图片描述
在这里插入图片描述

Darknet-19

Darknet-19(224x224) only requires 5.58 billion operations to process an image yet achieves 72.9% top-1 accuracy and 91.2%top-5 accuracy on ImageNet.
在这里插入图片描述

YOLOv3

YOLOv3(You Only Look Once v3)是YOLO系列目标检测算法的第三个主要版本,由Joseph Redmon和Ali Farhadi在2018年的论文《YOLOv3: An Incremental Improvement》中提出。相较于之前的版本,YOLOv3引入了多项改进以提高模型的准确性和鲁棒性,同时保持了实时检测的速度优势。以下是YOLOv3的主要特点和改进:
在这里插入图片描述

主要改进

  1. 多尺度预测
    YOLOv3采用了多尺度预测的方式,在三个不同的特征层上进行边界框预测:高分辨率、中等分辨率和低分辨率。这种设计使得模型能够更好地检测不同大小的目标,特别是小物体的检测能力得到了显著提升。
  2. 特征提取网络
    使用了Darknet-53作为特征提取网络,这是一个更深的卷积神经网络,包含了53个卷积层。Darknet-53借鉴了ResNet的设计理念,通过残差块(residual blocks)来构建,这有助于缓解深层网络中的梯度消失问题,并且提高了特征提取的效果。
  3. Anchor Boxes优化
    在YOLOv3中,Anchor Boxes是基于训练数据集上的边界框尺寸使用K-means聚类算法计算得出的。与YOLOv2相比,它为每个尺度设置了9个Anchor Boxes(3个尺度,每个尺度3个),从而更加精确地适应不同尺寸的对象。
  4. 分类机制
    YOLOv3不再采用softmax函数来做类别预测,而是对于每一个边界框都独立地预测一组对象存在与否的概率以及该对象属于各个类别的概率。这种方式允许模型处理单个边界框内包含多个类别的情况,并且避免了类别不平衡的问题。
  5. 损失函数调整
    YOLOv3对损失函数进行了微调,采用了二值交叉熵损失(binary cross-entropy loss)来替代之前版本中的均方误差(mean squared error)。此外,它还分别针对分类、置信度和边界框坐标定义了不同的损失部分。
  6. 数据预处理
    YOLOv3采用了随机缩放和平移的数据增强方法,确保输入图像的尺寸变化,增强了模型的泛化能力。

网络架构

  • Darknet-53:YOLOv3的基础网络,利用残差连接(skip connections)来促进信息流动,防止梯度消失,同时也增加了网络深度。
  • 路径聚合网络(PANet):虽然不是原版YOLOv3的一部分,但在许多实现中被采纳,用于加强特征融合,从高层语义信息到低层空间信息的传递。

Darknet-53

在这里插入图片描述
在这里插入图片描述

性能提升

YOLOv3在COCO数据集上的性能表现优异,达到了更高的平均精度(mAP),并且仍然保持了实时检测的速度。它在小物体检测方面尤其有了显著进步,这是由于其多尺度预测的能力和更强大的特征提取网络所致。
在这里插入图片描述
在这里插入图片描述

损失函数调整

在这里插入图片描述
在这里插入图片描述

置信度损失

在这里插入图片描述

类别损失

在这里插入图片描述
在这里插入图片描述

定位损失

在这里插入图片描述

注:本文转载自blog.csdn.net的道友老李的文章"https://blog.csdn.net/u014608435/article/details/144497816"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2492) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

101
推荐
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2025 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top