《深度学习》 了解YOLO基本知识

目录

一、关于YOLO

1、什么是YOLO

2、经典的检测方法

1)one-stage单阶段检测

模型指标介绍:

2)two-stage多阶段检测

二、关于mAP指标

1、概念

2、IOU

3、关于召回率和准确率

4、示例

5、计算mAP


一、关于YOLO

1、什么是YOLO

        YOLO(You Only Look Once)是一种基于深度学习的目标检测算法,由Joseph Redmon等人于2016年提出。它的核心思想是将目标检测问题转化为一个回归问题,通过一个神经网络直接预测目标的类别位置,例如下图所示。

        YOLO算法将输入图像分成SxS个网格,每个网格负责预测该网格内是否存在目标以及目标的类别和位置信息。此外,YOLO算法还采用了多尺度特征融合的技术,使得算法能够在不同尺度下对目标进行检测。

        关于不同尺度:例如在ResNet残差网络中,无论是18层的还是36层的,他们的输入图像的尺寸都是固定不变的,不能传入不同尺寸的图像,而YOLO算法可以传入任意大小的图片,对其进行检测。

        相比于传统的目标检测算法,如R-CNN、Fast R-CNN和Faster R-CNN等,YOLO算法具有更快的检测速度和更高的准确率,这得益于其端到端训练方式单阶段检测的特性,使其可以同时处理分类定位任务,避免了传统方法中的多阶段处理过程。因此,YOLO算法广泛应用于实时目标检测自动驾驶等领域。

        关于端到端:

                端到端的训练是模型直接从原始输入数据学习如何映射到最终的输出目标,而不需要在中间阶段进行人为的特征工程或分割成多个独立的处理模块。例如,以前的汽车自动驾驶,通过车上搭载的摄像头拍摄实时画面,将获取到的画面每一帧图像传入模型进行识别,然后对模型的输出结果进行判断,判断是哪种类别,是否需要减速转向,然后再执行相应的减速转弯等操作,二当前端到端的训练,摄像头的事实画面帧传入模型后,经过检测后直接执行减速转向灯的操作。

2、经典的检测方法

1)one-stage单阶段检测

        YOLO系列、SSD

        单阶段检测指在目标检测任务中,通过一个网络模型直接预测出物体的类别和位置。

        优点:识别速度非常快,适合做实时检测任务

        缺点:正确率相对two-stage较低,尤其在小物体和严重遮挡的情况下性能较差。

        模型指标介绍:

        mAP指标:用于评判目标检测效果,其值越大越好,在机器学习的分类任务  

        FLOPS:表示模型进行一次前向传播(即处理一张图像)所需要的浮点运算次数。它是一个衡量算法效率的关键指标,与模型的计算量和推断速度密切相关。

        FPS:每秒可以处理的图像数量

2)two-stage多阶段检测

        Faster-rcnn和mask-Rcnn系列

        两阶段目标检测器是一种先生成候选框,然后对候选框进行分类和回归的检测方法。这种方法主要包括两个阶段:

        第一阶段:生成候选框。这通常通过一个类似于Selective Search或EdgeBoxes等区域提名算法来实现,该算法从输入图像中生成多个候选框。每个候选框都会经过一个CNN模型进行特征提取,然后通过分类器进行过滤,保留与目标物体更相似的候选框。

         第二阶段:在保留的候选框上进行精细的分类和回归。这个阶段通常使用另一个CNN模型或类似SVM的分类器来进行分类和回归。对于每个候选框,可能需要预测物体的类别、位置和大小等。 代表性的两阶段目标检测器包括R-CNN系列,以及其改进版本Fast R-CNN、Faster R-CNN和Mask R-CNN等。

        优点:正确率比较高,识别效果理想

        缺点:识别速度比较慢,通常达到5FPS

二、关于mAP指标

1、概念

        mAP(mean Average Precision)是用来评估目标检测算法性能的常用指标之一。它结合了目标检测算法的准确率和召回率,并考虑了不同类别之间的差异。

        准确率是指预测为该类别的样本中,被正确分类的比例。召回率是指该类别中被正确分类的样本数与该类别总样本数的比例。

2、IOU

        IOU用于评估预测框真实目标框之间的重叠程度,即计算预测框和真实目标框的交集面积除以它们的并集面积来进行计算。

3、关于召回率和准确率

        1、召回率:预测的结果是真的有多少是预测正确的

        2、准确率:真实的结果中有多少是预测正确的

4、示例

        如上图所示,蓝色框中为真实的人脸,红色框为预测的人脸位置,旁边的值则表示为置信度的值也叫阈值,表示模型对于预测结果的置信程度,即模型认为该结果是正确的程度。

        计算这个检测任务中精确率召回率:

               1、限制阈值,例如0.9,超过0.9表示检测正确1,否则检测失败,此时真实值1预测值为1的只有1个,真实值为1预测值为0的为2,真实值为0预测值为1的0个,真实值为0预测值为0的有0个。

               2、统计TP、FP、FN,TP=1,FP=0,FN=2,精确率=1/1,召回率=1/(1+2)=1/3

5、计算mAP

        根据不同的阈值(置信度),绘制出召回率精确率的曲线,将曲线以下的面积作为MAP值。当MAP值越大,则表示指标越好 。

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

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

相关文章

一文2500字从0到1实现压测自动化!

大家好,我是小码哥,最近工作有点忙,一直在实现压测自动化的功能,今天来分享一下实现思路 我所在的业务线现在项目比较少了,所以最近一个月我都没有做业务测试,需求开发完后RD直接走免测就上线,…

手机ip切换成全局模式怎么弄

在当今数字化时代,智能手机已成为我们日常生活中不可或缺的一部分,无论是工作、学习还是娱乐,都离不开它的陪伴。随着网络技术的不断发展,手机IP地址的切换技术也逐渐走进大众视野,中,“全局模式” 作为IP切…

windows环境下vscode编写c语言连接mysql

创建一个文件夹test02 在文件夹中创建test.c文件 用vscode打开test02文件夹 自动生成tasks.json和launch.json文件,需要安装这里通C/C Runner插件来自动生成json文件和一些文件夹。 接下来配置mysql 本地已经安装了mysql数据库,此安装过程省略。 有…

java如何部署web后端服务

java如何部署web后端服务 简单记录一下,方便后续使用。 部署流程 1.web打包 2.关掉需要升级的运行中的服务 /microservice/hedgingcustomer-0.0.1-SNAPSHOT/conf/bin/ 执行脚本 sh shutdown.sh 3.解压文件 返回到/microservice 将升级包上传到该路径&#x…

JAVA IDEA 取消掉Warning:(22, 14) Class ‘XXXController‘ is never used 提示信息

方法一:代码修改 无用的方法: 删除对应的代码。增加该类对应的应用实现。 方法二:取消掉提示 找到settings—Editor—Inspections,搜索Unused declaration 右边的勾取消掉,对应的校验属性。

座舱软件开发“道与术”

脑图 仅仅个人归纳见解,欢迎专家莅临指导。

【CHI】CHI协议自问自答

学习CHI有一段时间了,如今回过头来,再读协议,一些问题做个记录。如果有错误的地方,欢迎指正。如果有其他的问题,也欢迎留言讨论。 spec: IHI0050F_amba_chi_architecture_spec 【持续更新ing】 目录 1. …

react18中如何实现同步的setState来实现所见即所得的效果

在react项目中,实现添加列表项,最后一项自动显示在可视区域范围!! 实现效果 代码实现 import { useState, useRef } from "react"; import { flushSync } from "react-dom"; function FlushSyncRef() {con…

JVM成神之路

目录 JVM入门关: 一:JVM的内存布局是咋样的? 二:方法区,永久代,元空间有什么区别? 三:常量池和字符串常量池有什么区别? 四:什么是堆溢出,什…

结构化系统分析,结构化系统设计(正片)

结构化分析方法:是面向数据流进行需求分析的方法,是用抽象模型的概念,按软件内部数据传递、变换的关系,自顶向下逐层分解,直到找到满足功能要求的所有可实现的软件为止。 数据流图(DFD)&#xf…

Linux系统:本机(物理主机)访问不了虚拟机中的apache服务问题的解决方案

学习目标: 提示:本文主要讲述-本机(物理主机)访问不了虚拟机中的apache服务情况下的解决方案 Linux系统:Ubuntu 23.04; 文中提到的“本机”:代表,宿主机,物理主机; 首先&#xff0c…

吴恩达深度学习笔记(7)

误差分析: 你运行一个算法代替人类计算,但是没有达到人类的效果,需要手动检查算法中的错误,对模型的一些部分做相应调整,才能更好地提升分类的精度。如果不加分析去做,可能几个月的努力对于提升精度并没有…

旋转花键材质及运用场景

旋转花键的材质有很多种,其材质选择是一个涉及多方面因素的重要决策,‌主要取决于应用场景的具体要求,包括设备的运行环境、负载大小、运行速度以及所需的耐磨性和耐腐蚀性等因素。 1、碳钢:价格低廉、具有较好的韧性和耐磨性&…

【分享】项目开发中的计算问题

事件背景 最近也就上个月吧,拿到一个新的需求,新建一个页面,三个Grid联动,涉及很多的页面和sql以及Java计算。 简略的画个表格表示一下: 第一个Grid: 第二个Grid: 第三个Grid: 业…

openKylin系统SSH服务配置结合cpolar轻松实现开放麒麟远程连接

前言 本文主要介绍如何在openKlyin系统中设置ssh连接,并结合cpolar内网穿透工具实现远程也可以ssh连接本地局域网内部署的openKlyin系统. openKylin是中国首个基于Linux 的桌面操作系统开发者平台,通过开放操作系统源代码的方式,打造具有自…

Axure显示与隐藏——元件动作一

亲爱的小伙伴,在您浏览之前,烦请关注一下,在此深表感谢! 课程主题:显示与隐藏 主要内容:显示/隐藏/切换三种效果,动画效果,更多效果 应用场景:元件自身状态变化、操作…

LinkedList作者:我虽然开发了LinkedList,但是我更爱用ArrayList

感谢Java面试教程关于LinkedList经验分享 PS冷知识:LinkedList的作者更爱使用ArrayList。 ArrayList 和 LinkedList 是 Java 中两种常见的 List 实现类,它们在底层数据结构、性能特征和使用场景上有显著的区别。 底层数据结构: ArrayList …

Flux.never 使用说明书

public static <T> Flux<T> never()Create a Flux that will never signal any data, error or completion signal. 创建一个永远不会发出任何数据、错误或完成信号的 Flux。 Type Parameters: T - the Subscriber type target Returns: a never completing Flu…

软件缺陷报告

软件缺陷报告样例 软件缺陷基本内容 标题&#xff1a;一句话概述缺陷预置条件&#xff1a;缺陷的前提条件重现步骤&#xff1a;缺陷出现步骤期望结果&#xff1a;没有出现缺陷应该的结果实际结果&#xff1a;缺陷结果 软件缺陷的状态 新建&#xff08;激活&#xff09;->…

idea2024启动Java项目报Error running CloudPlApplication. Command line is too long.

idea2024启动Java项目报Error running CloudPlApplication. Command line is too long. 解决方案&#xff1a; 1、打开Edit Configurations 2、点击Modify options设置&#xff0c;勾选Shorten command line 3、在Edit Configurations界面下方新增的Shorten command line选项中…