【1】从零开始学习目标检测:YOLO算法详解

news2024/11/19 16:45:40

请添加图片描述


从零开始学习目标检测:YOLO算法详解

文章目录

  • 从零开始学习目标检测:YOLO算法详解
    • 1. 🌟什么是目标检测?
    • 2.🌟传统的目标检测与基于深度学习的目标检测
    • 3.🌟目标检测算法的工作流程
    • 4.🌟目标检测可以干什么?
    • 5.🌟什么是YOLO


在过去的十年中,深度学习技术的发展引起了极大的关注,并成为人工智能领域中不可或缺的技术之一。深度学习在计算机视觉领域的应用越来越广泛,其中目标检测是备受关注的领域之一。目标检测是指在图像或视频中检测出目标的位置和边界框,然后对目标进行分类或识别。目标检测在计算机视觉领域中具有非常重要的应用,如目标跟踪、目标检索、视频监控、图像字幕、图像分割、医学影像等等。除了这些应用场景外,目标检测还可以应用于自动驾驶、机器人视觉、智能安防等领域。


1. 🌟什么是目标检测?

在这里插入图片描述

目标检测、分类和分割是计算机视觉领域中的三个重要任务,它们在输入和输出上有所不同,具体区别如下:

  • 目标检测

目标检测的目标是在图像或视频中检测出目标的位置和边界框,然后对目标进行分类或识别。这个任务需要同时完成目标的位置定位和分类任务。目标检测输出的结果包括目标的位置和类别。

  • 分类

分类的目标是将输入图像或视频中的物体或场景分为不同的类别。分类任务只需要对整张图像或视频进行分析,输出结果是物体或场景所属的类别。

  • 分割

分割的目标是将输入图像或视频中的每个像素分配到不同的语义类别,形成一个像素级别的标注结果。分割任务需要对整张图像或视频进行像素级别的分析,输出结果是一个标注图像,每个像素都被分配了一个类别。

可以看出,目标检测是分类和分割的进一步扩展,需要同时完成物体位置的定位和分类任务。分类和分割通常只需要对整张图像或视频进行分析,而目标检测需要在图像中识别出物体的位置和边界框。在实际应用中,这三种任务通常会同时使用,以实现更精确和全面的图像分析和理解。


2.🌟传统的目标检测与基于深度学习的目标检测

目标检测方法通常可以分为基于机器学习和基于深度学习两类方法。

  • 基于机器学习的目标检测方法

基于机器学习的目标检测方法通常使用传统的机器学习算法,例如支持向量机、AdaBoost和随机森林等。这些方法的基本思想是提取图像特征并使用分类器对特征进行分类,然后使用对象检测器检测目标。这些算法需要手动选择和提取图像特征,因此需要领域专家的知识和经验。

在这里插入图片描述

  • 基于深度学习的目标检测方法

基于深度学习的目标检测方法通常使用深度神经网络来自动学习特征并进行目标检测。目前比较流行的深度学习目标检测方法包括两类:基于区域提取的方法(两阶段检测方法)和单阶段检测方法。其中,基于区域提取的方法包括R-CNNFast R-CNNFaster R-CNNMask R-CNN等,它们主要通过候选区域提取器生成目标候选区域,并使用CNN网络对每个候选区域进行特征提取和分类。而单阶段检测方法则直接从图像中提取目标位置和类别信息,例如YOLOSSD等,它们可以实现更快速的检测速度。

在这里插入图片描述


3.🌟目标检测算法的工作流程

基于深度学习的目标检测主要包括训练测试两个部分。训练的主要目的是利用训练数据集进行检测网络的参数学习。测试的主要目的是在经过训练后,评估检测网络的性能表现。

  • 训练阶段
  1. 数据预处理:在训练数据集中,包含了大量的视觉图像和标注信息,如物体位置和类别。数据预处理的目的是通过对训练数据集的增强来提升检测网络的检测能力。常用的数据增强技术包括图像翻转、缩放、均值归一化和色调变化等。这些技术可以增加训练数据的数量和多样性,从而提高检测器的泛化能力。
  2. 检测网络:检测网络一般由基础骨干、特征融合和预测网络三个部分组成。基础骨干通常采用用于图像分类的深度卷积网络,如AlexNetVGGNetResNetDenseNet等。近期,基于Transformer的网络,如ViTSwinPVT等也开始被用于目标检测。在训练开始时,通常将在大规模图像分类数据库ImageNet上训练的预训练权重作为检测器骨干网络的初始权重。
  3. 特征融合:特征融合是对基础骨干提取的特征进行融合,用于后续分类和回归。常见的特征融合方式是特征金字塔结构。
  4. 预测网络:预测网络主要进行分类和回归等任务。在两阶段目标检测方法中,分类和回归通常采用全连接的方式,而在单阶段的方法中,分类和回归等通常采用全卷积的方式。检测器还需要一些初始化,如锚点框初始化、角点初始化和查询特征初始化等。
  5. 标签分配与损失计算:标签分配的目的是为检测器预测提供真实值。在目标检测中,标签分配的准则包括交并比(IoU)准则、距离准则、似然估计准则和二分匹配等。基于标签分类的结果,采用损失函数计算分类和回归等任务的损失,并利用反向传播算法更新检测网络的权重。常用的分类损失函数有交叉熵损失函数、聚焦损失函数等,而回归损失函数有L1损失函数、平滑L1损失函数、交并比IoU损失函数、GIoU(generalized IoU)损失函数和CIoU(complete-IoU)损失函数等。
  6. 非极大值抑制:在目标检测的输出结果中,可能会出现多个框或分割掩模与同一个物体相关联的情况,这些检测结果会产生冗余。因此需要使用非极大值抑制(NMS)技术,将多个重叠的检测结果进行筛选,只保留最有可能代表物体的检测结果。NMS的基本思想是通过比较检测结果的置信度得分,去除重叠框中得分较低的框,只保留得分最高的框。
  7. 目标检测的评估指标:为了评估目标检测算法的性能,需要使用一些评估指标。常用的评估指标包括准确率(Precision)、召回率(Recall)F1值、平均精度(Average Precision,AP)、均值召回率(Mean Average Precision,mAP)等。其中,AP是一种常用的评估指标,用于衡量检测器在不同置信度阈值下的性能表现。而mAPAP的平均值,通常作为衡量整个检测算法性能的指标。

在这里插入图片描述

  • 测试阶段

在测试阶段,首先需要输入一张待检测的图像。这张图像会被送入训练好的检测网络中进行处理,这个过程叫做前向传播(forward propagation)。在检测网络中,图像会被分类,确定图像中存在哪些物体,并输出每个物体的位置信息。这些位置信息通常表示为边界框(bounding box),也可以表示为像素级的分割掩模(segmentation mask),它们描述了物体在图像中的位置和大小。

然而,在检测网络输出结果之后,可能会出现多个边界框或分割掩模与同一物体相关联的情况。这可能是因为图像中的物体形状、大小、角度等方面的变化,或者是因为图像的不同区域可能包含相同的物体。因此,需要对这些检测结果进行后处理,以便确定每个物体的最终边界框或分割掩模。

这个后处理过程的目标是为每个物体保留一个检测结果,并去除其他冗余的检测结果。这个过程被称为非极大值抑制(non-maximum suppression,NMS)。它的基本思想是通过比较检测结果的分类得分和位置信息,为每个物体保留一个得分最高的检测结果。在执行 NMS 之后,每个物体将仅对应一个边界框或分割掩模,这是最终的检测结果。

请添加图片描述

在这里插入图片描述


4.🌟目标检测可以干什么?

  1. 车辆和行人检测:自动驾驶汽车需要识别道路上的车辆和行人,并对它们的位置和速度进行准确的估计,以便做出正确的决策,例如避让障碍物或停车等。目标检测技术可以用于检测和跟踪道路上的车辆和行人,并估计它们的速度和方向。
  2. 交通信号灯检测:自动驾驶汽车需要识别交通信号灯的状态,例如红灯或绿灯,以便决定是否停车或继续前行。目标检测技术可以用于检测和识别交通信号灯,并确定其状态。
  3. 路标检测:自动驾驶汽车需要识别路标,例如标识路口、转弯或合并车道等的标志,以便正确地导航和做出决策。目标检测技术可以用于检测和识别各种路标,并确定它们的含义。
  4. 障碍物检测:自动驾驶汽车需要检测和避免道路上的障碍物,例如路面上的水坑、石块或垃圾等。目标检测技术可以用于检测和跟踪道路上的各种障碍物,并提供避让策略。
  5. 入侵检测:目标检测技术可以用于监控视频中的入侵者的自动检测和跟踪,例如未经授权进入建筑物或某个区域的人员。系统可以通过发送警报来及时通知安保人员并采取措施。
  6. 丢失物品检测:目标检测技术可以用于监控视频中的丢失物品的自动检测和跟踪,例如钱包、手机或其他贵重物品。当系统检测到这些物品被遗失或被人拾起时,可以通过发送警报来通知相关人员。
  7. 摔倒检测:目标检测技术可以用于监控视频中的摔倒事件的自动检测和跟踪,例如老年人或身体不便的人。系统可以通过发送警报来及时通知相关人员并采取措施。
  8. 交通监控:目标检测技术可以用于交通监控视频中的车辆和行人的自动检测和跟踪,例如违法停车、超速行驶、路口违规等。系统可以通过发送警报来通知相关部门或管理人员。

5.🌟什么是YOLO

论文地址:https://arxiv.org/pdf/1506.02640v5.pdf

在这里插入图片描述

YOLO(You Only Look Once)是一种目标检测算法,它在单个神经网络中同时完成对象检测和分类的任务。相比传统的对象检测方法,YOLO算法的速度更快,因为它只需要运行一次神经网络,而不是多次。

YOLO的卷积神经网络架构是来自GoogleLeNet模型,YOLO的网络有24层卷积和2层全连接,与GoogLeNe不同的地方在于作者在某些3×3的卷积层前用了1×1的卷积降维, 整体结构图如下图所示:

在这里插入图片描述

YOLO算法的核心思想是将目标检测问题转化为回归问题。它将图像划分为一个固定数量的网格(比如7×7),每个网格预测固定数量的边界框和它们的置信度和类别概率。边界框指的是目标在图像中的位置和大小,置信度表示边界框中是否存在目标,类别概率表示目标属于哪个类别。

具体来说,YOLO算法将输入图像经过卷积神经网络提取特征后,得到一个S×S×(B×5+C)的张量。其中,S表示网格数量,B表示每个网格预测的边界框数量,C表示类别数量。张量中每个元素都表示一个边界框的信息,包括边界框的中心坐标、宽度、高度、置信度和类别概率。YOLO算法通过对张量进行解码,得到图像中所有目标的位置和类别。

YOLO算法的训练过程是基于交叉熵损失函数的反向传播。对于每个边界框,损失函数包括位置误差、置信度误差和类别误差。YOLO算法通过反向传播更新神经网络的参数,提高目标检测的准确率。


请添加图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

拿到新的服务器必做的五件事(详细流程,开发必看)

目录 1. 配置免密登录 基本用法 远程登录服务器: 第一次登录时会提示: 配置文件 创建文件 然后在文件中输入: 密钥登录 创建密钥: 2.部署nginx 一、前提条件 二、安装 Nginx 3.配置python虚拟环境 1.安装虚拟环境 …

自习室管理系统的设计与实现(论文+源码)_kaic

摘要 近年来,随着高校规模的逐步扩大,学生对高校自习室座位的需求也在不断增加。然而,一些高校仍然采用人工管理学院自习室座位,这大大降低了管理效率。显然,开发一个成本低、占用资源少、能提高高校自习室座位管理效率…

WindowsHash简介及windows认证

Windows系统使用两种方法对用户的密码进行哈希处理,他们分别是LAN Manager(LM)哈希和NT LAN Manager(NTML)哈希。 现在已经有了更新的NTLMv2以及Kerberos验证体系。 Windows的系统密码hash默认情况下一般由两个部分组成:第一部分是LM-hash,…

Nginx中间件漏洞复现

Nginx 解析漏洞 该漏洞与nginx、php版本无关,属于用户配置不当造成的解析漏洞。 漏洞原理: 该解析漏洞是PHP fastcgi 的漏洞,在PHP的配置文件 php.ini 中有一个关键的选项 cgi.fix_pathinfo 默认值为1,表示开启。同时在 php-fp…

ASO优化之如何回复Google Play评论

应用的平均评分会影响 Google Play 商店优化 和应用的 Google Play 排名。应用的评分越高,我们在搜索结果中的排名就越靠前。因此,当应用处于 4 星评级范围内时,它会被更多 Google Play 商店的访问者看到和发现。我们可以使用应用雷达中的评级…

Linux进程通信:有名管道

有名管道: 无名管道只能用于有亲缘关系的进程间通信。 因此提出有名管道(也叫FIFO文件),以实现无亲缘关系进程间的通信。 不同于无名管道,有名管道FIFO文件的形式存在于文件系统,与一个路径名关联&#xff…

【复杂网络建模】——Python可视化重要节点识别(PageRank算法)

目录 一、复杂网络建模 二、建模的算法 三、使用PageRank算法进行网络重要节点识别 1、PageRank算法 2、基于PageRank算法的ER网络重要节点识别 3、基于PageRank算法的小世界网络重要节点识别 4、基于PageRank算法的无标度网络的重要节点识别 四、ER网络、小世界网络、…

春秋云境:CVE-2022-24663(远程代码执行漏洞exp)

目录 一、题目 二、构造exp执行php 三、蚁剑连接 一、题目 介绍: 远程代码执行漏洞,任何订阅者都可以利用该漏洞发送带有“短代码”参数设置为 PHP Everywhere 的请求,并在站点上执行任意 PHP 代码。P.S. 存在常见用户名低权限用户弱口令 …

华为OD机试真题(Java),开元音统计(100%通过+复盘思路)

一、题目描述 相对开音节构成的结构为辅音元音(aeiou)辅音(r除外)e,常见的单词有bike cake,给定一个字符串,以空格为分隔符。 反转每个单词的字母,若单词中包含如数字等其他非字母时不进行反转,反转后计算其中含有相对…

苹果手机屏幕上的圆点怎么设置?(开启悬浮按钮)

案例:苹果手机屏幕上的圆点怎么设置? 【求助!苹果手机的小圆点怎么调出来?就是悬浮按钮那个。】 如果您是苹果手机的用户,您可能会在手机屏幕上看到一个小圆点,它可以让您方便地进行操作。这个圆点是 Assi…

TortoiseSVN使用-合并深度介绍

文章目录 3.6 合并深度介绍 本人其他相关文章链接 3.6 合并深度介绍 Working copy(工作副本):即你当前的工作目录,一般默认为这个选项;Recursively(递归):即你选择的目录的版本库,包括了其下面的子文件,子文…

叶黄素的17种功效与副作用(5点使用禁忌请小心)

叶黄素(Lutein)及其同分异构体玉米黄质(zeaxanthin)和内消旋玉米黄质(meso-zeaxanthin)是一种聚集在人类视网膜中的黄斑色素。 它们不能在哺乳动物体内合成,必须从饮食中获得,然后分…

智能家居工厂模式整体设计框架控制设备测试

通俗理解的步骤就是链表通用模板定义(在头文件里定义)、链表的创建(头插尾插,在.C 文件里)、链表的初始化(init配置管脚初始电平等)、链表内容的读取(指令工厂TCP服务端读取客户端发…

【芝士总结】史上最详循环结构讲解(蒟蒻也能学会)

虽然计算机可以在短时间批量处理成千上万条指令,但是不少问题中有许多规律性的重复操作,比如说计算几百个学生的平均分,或者对上万人的名单进行排序。仅使用顺序或者分支结构,对每一步操作都写出对应的语句是不可能的;…

如何用链表实现LRU缓存淘汰算法

链表学习 一、 缓存1.1缓存介绍1.2 缓存策略 二、链表结构2.1 单链表2.2 循环链表2.3 双向链表2.4 双向循环链表2.5 链表与数组性能对比 三、如何基于链表实现LRU缓存淘汰算法 一、 缓存 1.1缓存介绍 缓存是一种提高数据读取性能的技术,在硬件设计、软件开发中都有…

参数与非参数检验:理解差异并正确使用

数据科学是一个快速发展的领域,它在很大程度上依赖于统计技术来分析和理解复杂的数据集。这个过程的一个关键部分是假设检验,它有助于确定从样本中获得的结果是否可以推广到总体。 在这篇文章中,我们将探讨参数与非参数检验之间的区别&#…

微信小程序对接在线客服系统,对接小程序订阅消息模板,小程序订阅方法以及后端发送订阅模板消息的方法...

微信小程序想要对接独立在线客服系统,除了使用小程序消息推送接口外,还可以使用webview嵌入的形式嵌入聊天链接。 但是,使用webview嵌入的形式,当用户离开页面以后,就收不到客服回复的消息了 所以,我们需要…

HTML5 <s> 标签、HTML5 <sub> 和 <sup> 标签

HTML5 <s> 标签 定义和用法 <s> 标签定义加删除线的文本。HTML 5 中不再支持这个标签。请使用 CSS 代替。 HTML 4.01 与 HTML 5 之间的差异 在 HTML 4.01 中不赞成使用 <s> 标签。 在 HTML 5 中不支持 <s> 标签。 提示和注释 提示&#xff1a;请…

Oracle Linux 9 上基于 Docker 安装 Kubernetes 1.27 集群

Oracle Linux 9 上基于 Docker 安装 Kubernetes 1.27 集群 1. 禁用swap2. 禁用防火墙3. 将SELinux设置为permissive模式4. 添加网桥过滤及内核转发配置文件5. 加载 overlay、br_netfilter、ip_tables、iptable_filter 模块6. 安装 docker-ce7. 安装kubelet kubeadm kubectl8. 初…

【Java面试八股文】JVM篇

引言&#xff1a; 本文对多个平台的面试题进行了汇总、分类、概括、整理&#xff0c;对重点进行了标出&#xff0c;更便于阅读和记忆。 【黑马Java笔记踩坑汇总】JavaSEJavaWebSSMSpringBoot瑞吉外卖SpringCloud黑马旅游谷粒商城学成在线牛客面试题 目录 说说你了解的JVM内存模…