当前位置: 首页 > news >正文

yolo目标检测基础知识

前言

   博主会经常分享自己在人工智能阶段的学习笔记,欢迎大家访问我滴个人博客!(养成系Blog!)

小牛壮士滴Blog~ - 低头赶路 敬事如仪https://kukudelin.top/

一、概念

目标检测需要识别图片或视频帧中的物体是什么类别,并确定他们的位置(where and what),通常用于多个物体的识别,并为每个示例提供一个边界框和类别标签。

  • 目标检测的本质:使用边界框将物体在图中圈出,边界框上会存在两个指标:类别信息,置信度

yolo(you only look once):是一个单阶段的目标检测算法,能够用于实时监测

人工智能领域的上游任务和下游任务

  • 上游任务通常是指为后续任务提供基础支持的任务,主要关注数据的收集、处理、模型的预训练等基础性工作。这些任务的输出通常是一个通用的模型或者数据集,可以被多个下游任务复用

  • 下游任务是指在上游任务的基础上,针对具体的业务场景或应用需求进行的模型微调和应用开发。这些任务通常具有明确的目标和应用场景,需要在预训练模型的基础上进行进一步的优化和调整,以满足特定任务的需求

二、数据标注

数据标注是在图片中框选标注出我们需要模型训练用来检测的实例,用作监督模型训练的标签

步骤:

  1. 创建一个专门用于数据标注的虚拟环境

    conda create -n yololabel python=3.12

  2. 激活虚拟环境,下载labelimg工具

    conda activate yololabel
    pip install labelimg -i https://pypi.tuna.tsinghua.edu.cn/simpl
  3. 输入命令激活程序

    labelimg

三、目标检测,图像分类,图像分割的区别

目标检测需要识别图片或视频帧中的物体是什么类别,并确定他们的位置(where and what),通常用于多个物体的识别,并为每个示例提供一个边界框和类别标签。

图像分类是指识别图像中主要物体的类别,而不关心物体的具体位置(what)

图像分割指在图像中识别特定类别的物体,并用像素级别的标签来表示这些物体的位置。它不仅需要识别物体是什么,还需要精确地描绘物体的轮廓

  • 语义分割:将图像中的每个像素分类为不同的语义类别(如“天空”“道路”“汽车”),不区分同一类别中的不同个体。

  • 实例分割:不仅将图像中的像素分类到语义类别,还能区分同一类别中的不同个体(如区分不同的汽车),并为每个个体生成独立的分割掩膜。

四、one-stage和two-stage的简要区别

  • One-stage(单阶段)检测器:直接在输入图像上预测目标的类别和位置,无需先生成候选区域,速度快但精度可能稍低(yolo)

  • Two-stage(两阶段)检测器:先生成候选区域,再对这些区域进行分类和精确定位,精度高但速度较慢。**(R-CNN、Fast R-CNN、Faster R-CNN)**

五、评测指标

5.1 边界框

边界框包含以下三个信息:

  • 类别标签:表示物体类别

  • 置信度分数:0到1之间的值

  • 边界框坐标:表示矩形框的位置和大小(x,y和w,h)

5.2 交并比(IoU)

交并比用于评估预测框与真实框的重合程度,交集除以并集

5.3 置信度

表示模型对预测结果的可靠性或正确性的信心程度。数值越高,表示模型越有信心认为预测结果是正确的

5.4 混淆矩阵

混淆矩阵依赖于IoU值,在混淆矩阵中:

  • 列(Columns):表示真实类别(True Labels)

  • 行(Rows):表示预测类别(Predicted Labels)

  • 单元格中的数值:表示在该真实类别与预测类别组合下的样本数量

混淆矩阵结合以下四个统计指标,我们有精确度,召回率,准确率和F1分数来评判分类模型好坏

5.4.1 精确度和召回率

  • 精确度:所有预测为正类的样本中预测正确的比例

  • 召回率:所有实际为正类的样本中,预测正确的比例(可以反映模型优化的可行性)

  • F1分数:精确度和召回率的调和平均数,用于平衡这两个指标

六、 mAP

6.1 PR曲线

横轴为召回率,纵轴为精确率,主要用于衡量模型在不同阈值下对正样本的识别能力

PR曲线通过改变分类阈值(例如,模型输出的概率阈值)来生成一系列点,每个点对应一个特定的召回率和精确率,绘制在二维平面上。随着阈值的变化,模型的预测结果会改变,从而影响召回率和精确率

越靠近右上角,模型性能越好

6.2 AP

通俗来讲,AP(平均精确率)是通过计算PR曲线下的面积,表示模型在不同召回率水平下的平均精确率。它是一个介于0到1之间的数值,值越高,表示模型的性能越好

6.3 mAP

mAP(平均平均精度)衡量模型整体性能的综合指标,值越高表示模型在所有类别上的平均表现越好,计算步骤:

  • 计算每个类别的 AP:对于数据集中包含的每个类别,分别计算 AP

  • 计算 mAP:将所有类别的 AP 取平均值,得到 mAP

七、 NMS非极大值抑制

在目标检测任务中,一个物体可能被多个检测框覆盖,每个检测框都对应一个置信度,NMS用于根据置信度的大小保留置信度最高的检测框,同时抑制(即去除)与之重叠度较高的其他检测框,保留最准确的检测结果。

NMS步骤:

①计算IoU ---->②按照置信度(分类概率 × 目标存在概率)对检测框进行排序---->③选择置信度最高的检测框---->④计算其他框与当前框的 IoU---->⑤移除超过IoU阈值的框---->⑥重复到②---->⑦输出

每个目标最终只会有一个检测框,如果NMS输出了多个结果框,可能检测目标不止一个

八、处理速度

yolo进行目标检测时会返回三个阶段的时间

  • 前处理阶段耗时:数据预处理

  • 网络前向传播耗时:从输入图像经过网络各层计算得到输出结果的时间

  • 后处理阶段耗时:NMS,置信度过滤,类别筛选等

九、FPS和FLOPS

  • FPS(每秒帧数):是指模型每秒钟可以处理的图像帧数,是衡量实时性的重要指标

  • FLOPS:每秒浮点数运算次数,衡量计算设备性能

十、yolo的三层整体结构

  • Backbone network(主干网络):由卷积网络构成,特征提取

  • Neck network(颈部网络):整合主干网络输出的特征,全连接层或池化层

  • Detection head(检测头):进行目标检测时,输出物体类别和位置

博主后续会在这个栏目更新yolo系列的原理解析以及实战应用 ,敬请关注~~~

http://www.lryc.cn/news/606485.html

相关文章:

  • 【算法基础课-算法模板2】数据结构
  • 【Node】nvm在windows系统无管理员权限切换node版本
  • Vue3+Vite项目如何简单使用tsx
  • 【基于落霞归雁思维框架的软件项目管理实践指南】
  • 【硬件-笔试面试题】硬件/电子工程师,笔试面试题-53,(知识点:硬件电路问题排查,CPU上电后未运转,供电、时钟,复位,硬件连接)
  • 【Linux系列】SSD 与 HDD
  • Git之本地仓库管理
  • 尾插法和倒序输出
  • 【Keras学习笔记】开发环境搭建
  • pig Cloud中分布式锁的使用(setIfAbsent)
  • QT聊天项目DAY17
  • LeetCode 85:最大矩形
  • Shader开发(五)什么是渲染管线
  • Flutter兼容的iOS的最低版本号
  • 链特异性文库是什么?为什么它在转录组测序中越来越重要?
  • 【普中STM32精灵开发攻略】--第 2 章 开发板功能及使用介绍
  • 浅谈“压敏电阻”
  • 基于单片机智能油烟机设计/厨房排烟系统设计
  • 开发避坑短篇(12):达梦数据库TIMESTAMP字段日期区间查询实现方案
  • 快速搭建Java服务指南
  • 网站技术攻坚与Bug围剿手记
  • 环境配置·mmsegmentation和mmcv的安装
  • 【11】大恒相机SDK C++开发 ——原图像数据IFrameData内存中上下颠倒,怎么裁剪ROI 实时显示在pictureBox中
  • PostGIS面试题及详细答案120道之 (061-070 )
  • sqli-labs靶场Less24
  • 网络基础——路由控制
  • 逻辑回归算法基础介绍,简单的二分类三分类实例
  • 异常检测:算法分类及经典模型概览
  • npm 设置国内镜像源
  • 正点原子 ATK-BLE04 、ATK-BLE05 蓝牙模块学习使用