YOLO--目标检测基础

一、基本认知

1.1目标检测的定义

        目标检测(Object Detection):在图像或视频中检测出目标图像的位置,并进行分类和识别的相关任务。

        主要是解决图像是什么,在哪里的两个具体问题。

1.2使用场景

        目标检测的使用场景众多,比如疫情期间有是否带口罩的目标检测,现在十分火爆的智能驾驶、安防监控、人脸检测等都用到了目标检测。

1.3目标识别与标注

        目标识别包含了分类标签信息和图像坐标信息(x,y,w,h),其中(x,y)是中心点的位置坐标,w为宽度,h为高度。

        目标标注可以选择使用labelimg或者labelme ,但是常用的是labelimg,它可以直接生成txt文件,直接用在YOLO算法中。

        labelimg下载指令:

#创建虚拟环境
conda create -n labelenv python=3.9 -y
#激活虚拟环境
conda activate labelenv
#下载pyqt和sip
conda install -c conda-forge pyqt=5.15.4 sip=6.5.1 -y
#阿里云下载labelimg,注释的内容是降低Set的版本的,根据实际情况查看是否需要
#pip install setuptools==65.5.0 -i https://mirrors.aliyun.com/pypi/simple/
pip install labelimg==1.8.6 -i https://mirrors.aliyun.com/pypi/simple/
#启动labelimg开始进行图像标注
labelimg

二、网络基础

2.1目标检测方法

        这里主要介绍一步到位法:one-stage

one-stage是单阶段,一步到位,特点如下:

(1)直接从图像中提取特征并进行分类和回归,即同时进行目标分类、位置回归;

(2)计算速度快,适合实时使用;

(3)经典算法:YOLO系列、SSD。

        注意:NMS 是 Non-Maximum Suppression(非极大值抑制) 的缩写,是一种用于去除冗余检测框的关键后处理技术。 

2.2目标检测指标

2.2.1目标框指标

        目标框(Bounding Box):检测目标物体时,会带有的一个标注框,用于表示目标的位置和大小。

IoU

IoU:预选框正确性的度量指标,其中A通常表示真实框,B表示预测框。计算公式如下:

confidence

confidence:置信度,表示该框包含目标的概率以及预测框的定位准确性。

计算公式:

2.2.2精度和召回率

        在了解精度和召回率之前,我们要了解的是混淆矩阵:

         注意:这里的正类和负类不能按照平常认知来区分,只要是根据目标任务的要求来,若要求检测的是工厂里的残次品,那么此刻这里的正类就是残次品。

        准确度:预测正确的样本数与总数的比例

A = TP+TN/(TP+TN+FP+FN)

        精确度:正类中预测正确的比例

P = TP/(TP+FP)

        召回率:目标检测中找到的正类的比例

R = TP/(TP+FN)

        F1分数:精确度和召回率的平均数

F = 2*(P * R)/(P + R)

2.2.3mAP的计算

        mAP是评估模型的综合指标,主要是根据召回率和精确度进行计算的。但是暂时只记录AP的计算方法。

Top-N: 返回前N个框计算指标

AP(平均精度):

(1)根据公式计算,直接求平均值得到AP值

(2)还是会利用公式,然后根据最大值所在高度的矩形面积相加得到AP值

 

三、NMS

3.1简单介绍

        NMS(Non-Maxmum suppression)非极大值抑制:是目标检测目标库后处理的方法。

它的出现主要是为了解决对同一个检测目标出现多个目标框的问题。

如图,在最后的结果中,我们往往只需要一个最终的,最准确的目标框,所以NMS就发挥了很大的作用。

3.2运算流程

(1)设置IoU(目标框置信度阈值),一般设为0.5,小于这个值的框会被过滤,一般是用来过滤网格中心Bounding Box中没有预测到目标的目标框;

(2)根据置信度进行降序排列候选框;

(3)将置信度最大的框添加到输出列表,并将这个框从候选框中删除;

(4)候选框中的所有框与输出列表的框计算IoU,删除大于IoU阈值的框(这是因为大于阈值的框可能与目标框相似,预测的是同一个目标,这就有一个去重的意思在的感觉)

(5)重复三、四步骤,直到候选框列表为空;

(6)输出列表就是最后的目标框。

3.3 API

pred = non_max_suppression(pred,conf_thres=0.25,iou_thres=0.45,classes,agnostic_nms,max_det=max_det)

参数解释:

classes

  • 类别限制(Classes):这个参数用于指定只对特定类别的目标进行NMS操作。如果它是一个整数(例如classes=0),则仅对类别0的目标进行NMS;如果它是一个列表(例如classes=[0, 2, 3]),则仅对类别0、2、3的目标进行NMS。如果不传递该参数,NMS会对所有类别进行操作。

agnostic_nms

  • 类别无关的NMS(Class-Agnostic NMS):如果该参数设置为True,NMS会忽略目标的类别信息,所有的框会一起进行NMS处理,不论它们属于哪个类别。如果设置为False(默认值),则会分别对每个类别进行NMS操作,意味着同一类别的框才会相互抑制,而不同类别的框不会相互影响。

max_det=max_det

  • 最大检测数量(Maximum Detection):这个参数控制NMS后返回的最大框数。它限制了每张图片中最多保留多少个框(目标)。例如,max_det=100表示每张图片最多保留100个框,超出这个数量的框会被删除。

四、检测速度

4.1前传耗时

        从输入图像到输出结果所消耗的时间。单位毫秒。

4.2FPS

        FPS(frames per second),每秒钟能处理的图像数量。YOLO目标检测中要求实时监测的最低要求就是一秒钟处理30张图像。

4.3FLOPs

        浮点运算量,处理一张图像所需要的浮点运算数量。

五、整体网络结构

5.1网络结构图

简单理解: 

  • 输入图像input

    • 模型的输入是图像,图像经过后续的处理,生成预测结果。

  • 单阶段检测器(One-Stage Detector)

    • Backbone:负责提取图像的特征,通常使用卷积神经网络(CNN)来获取图像的特征表示。

    • Neck:通常由额外的网络层(如FPN,特征金字塔网络)组成,用于进一步处理特征图并增强不同尺度的信息。

    • Dense Prediction:在这个阶段,模型对图像进行密集的预测,通常会生成大量的候选框,并为每个候选框预测类别和边界框回归。

    • Detection Head:最后,模型的检测头会处理预测结果,选择最优的边界框并进行分类。

  • 双阶段检测器(Two-Stage Detector)

    • Backbone & Neck:与单阶段检测器类似,特征提取和处理。

    • Sparse Prediction:与单阶段检测器的密集预测不同,双阶段检测器会在第一阶段产生少量候选框(即稀疏预测),然后通过第二阶段(如RPN, 区域提议网络)对这些候选框进行精细调整。

5.2YOLO网络结构

        该图展示了目标检测模型的架构,模型主要是YOLOv1-v5。参数部分要注意:

FC → 7×7×(5+5+20)(v1):这是一个全连接层(Fully Connected)到7×7的输出,5表示边界框的4个坐标(x,y,h,w)加一个置信度值,20表示类别数(即分类任务中的类别数)。

13×13×5×(5+20)(v2):通过卷积层进行目标检测,每个特征图位置有5个锚框(Anchor boxes),每个锚框有5个参数(4个坐标(这四个坐标主要是预测参数----边界框回归参数(t_x, t_y, t_w, t_h))和1个置信度)和20个类别预测。

13×13×3×(5+80)(v3-v5):这个结构表示输出为3个尺度的特征图,每个尺度对应一个不同大小的特征图,预测5个锚框的坐标和80个类别。不同版本的模型在Head的结构上略有差异。

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

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

相关文章

GitLab 18.2 发布几十项与 DevSecOps 有关的功能,可升级体验【四】

沿袭我们的月度发布传统,极狐GitLab 发布了 18.2 版本,该版本带来了议题和任务的自定义工作流状态、新的合并请求主页、新的群组概览合规仪表盘、下载安全报告的 PDF 导出文件、中心化的安全策略管理(Beta)等几十个重点功能的改进…

Python----大模型(大模型微调--BitFit、Prompt Tuning、P-tuning、Prefix-tuning、LORA)

一、大模型微调 1.1、解释 微调(Fine-tuning)是在预训练大模型基础上,针对特定领域数据进行二次训练的技术过程。这一过程使大型语言模型(如GPT、BERT等)能够更好地适应具体应用场景,显著提升在专业领域的表现。 1.2、微调的基本流程 模型选择&#xf…

本地安装 SQLite 的详细步骤

方法 1:使用预编译二进制文件 下载 SQLite: 访问 SQLite 官方下载页面。 下载 Precompiled Binaries for Windows 中的 sqlite-tools-win32-x86-*.zip。 解压文件: 将下载的 ZIP 文件解压到一个目录(例如 C:\sqlite)。 配置环境变量: 右键「此电脑」→「属性」→ 左侧「高…

专题:2025医药生物行业趋势与投融资研究报告|附90+份报告PDF、原数据表汇总下载

原文链接:https://tecdat.cn/?p43444 圈内人都知道,2024年的BioChina展会现场,某跨国药企高管盯着融资展板喃喃自语:“去年A轮平均3.2亿,今年怎么降到2.1亿了?” 这个细节,恰是行业寒冬的缩影…

Chroma安装教程

Chroma 这里讲述的是windows环境 下载Chroma安装包 下载地址:https://github.com/chroma-core/chroma/releases 运行 chroma-windows.exe run --port 8000通过心跳检测访问是否正常 http://localhost:8000/api/v2/heartbeat快速使用 python安装chromadb pyth…

kali Linux 2025.2安装教程(解决安装失败-图文教程超详细)

一,下载镜像: 进入官网:Get Kali | Kali Linux ,往下滑 等待两年半,镜像下载好。 二,虚拟机安装: 转:VMware Workstation Pro 17 安装图文教程 知乎平台:VMware Work…

uniapp项目使用ucharts实现折线图详细讲解(案例)

1.在Hbuildx里面的工具>插件安装,进入DCloud搜索uchart 2.点击对应的项目导入该插件 可以看到在该目录下有该插件 3.进入官网演示 - uCharts跨平台图表库,找一个示例代码测试一下,是否可以成功应用 因为这里使用的是vue2,如果你…

数据分析师进阶——95页零售相关数据分析【附全文阅读】

这份资料适合零售行业从业者,尤其是服装销售领域的人员,能帮大家用数据分析提升销售业绩。资料先提出 “店铺 20 问”,引导思考店铺运营问题,接着点明数据分析对提升销售、找出销售不佳原因的重要性 。详细介绍销售业绩相关公式及…

计算机组成原理(6) - 加法器

加法器是数字电路中用于执行加法运算的基本逻辑单元,广泛应用于计算机、计算器、数字信号处理器等电子设备中。它能将两个二进制数相加,并输出结果及可能产生的进位。一、加法器的基本功能加法器的基本功能是在数字电路中对输入的二进制数执行加法运算&a…

Qt 与 WebService 交互开发

在现代软件开发中,WebService 已成为实现跨平台、跨语言通信的重要标准。Qt 作为一个强大的跨平台框架,提供了完善的工具和类库来实现与 WebService 的交互。本文将深入探讨 Qt 与 WebService 交互开发的核心技术和实践经验,包括 SOAP 协议实…

LLM 模型部署难题的技术突破:从轻量化到分布式推理的全栈解决方案

大语言模型(LLM)的部署一直是工业落地的核心挑战。动辄百亿甚至万亿参数的模型规模,对硬件资源、推理速度和系统稳定性提出了严苛要求。本文将系统剖析 LLM 部署中的关键技术瓶颈,从模型压缩、推理加速到分布式架构设计,提供可落地的工程化解决方案,并附具体实现代码。 …

理解训练深度前馈神经网络的困难—— 解锁深度学习的关键钥匙

2010年,深度学习先驱 Xavier Glorot 和 Yoshua Bengio 发表了这篇里程碑式的论文。它精准地诊断了当时阻碍深度神经网络发展的核心顽疾——**梯度消失/爆炸问题**,并开出了革命性的“药方”:**Xavier/Glorot 初始化**。这篇论文扫清了训练深度…

Objective-c 初阶——异常处理(try-catch)

一、try/catch/throw/finally 执行顺序 void doSomething() {NSAutoreleasePool *pool [[NSAutoreleasePool alloc] init];try {// 这一步抛异常[self riskyMethod]; } catch (NSException *e) {throw; // 把异常继续往上抛} finally {// ❗ 注意:这里的 finally…

计算机网络:(十二)传输层(上)运输层协议概述

计算机网络:(十一)多协议标记交换 MPLS前言一、运输层的作用二、基于端口的复用和分用功能三、屏蔽作用四、可靠信道与不可靠信道五、运输层的两个主要协议前言 前面我们讲解了计算机网络中网络层的相关知识,包括网络层转发分组的…

一场关于电商零售增长破局的深圳探索

“电商AI,不再是选择题”2025年,电商行业正面临流量成本攀升、用户留存率下降、供应链协同效率低等核心困境,传统数字化工具已难以满足精细化运营需求。在此背景下,百度智能云正加速布局电商领域,为零售企业提供从基础…

当非洲爱上“中国制造”:如何赢在起跑线

非洲大陆的消费浪潮正以前所未有的速度奔涌。2025年前五个月,中非贸易额同比暴涨12.4%,创下历史新高。在这片拥有14亿人口的土地上,60%是30岁以下的年轻人,城镇化浪潮席卷、中产阶级快速崛起,从家电、汽车到建材、电子…

vLLM(3)vllm在线启动集成openweb-ui

文章目录**步骤 1: 启动 vLLM 服务****方式 1: 直接命令行启动****方式 2: Docker 启动****步骤 2: 配置 Open WebUI 连接 vLLM****方法 1: 修改 Open WebUI 环境变量****方法 2: 通过 docker-compose.yml 部署****步骤 3: 在 Open WebUI 中添加模型****验证是否成功****常见问…

Python----大模型(基于Agent的私人AI助理项目)

开发一个智能的问答系统,该系统支持用户聊天,传输文件。通过自然语言处理技术,机器人能够理解用户的意图。机器人将利用互联网搜索引擎来补充信息,确保用户能够获得全面且准确的回答。 一、web ui界面 我们采用gradio来编写的ui界…

Python爬虫实战:研究scrapely库相关技术构建电商数据提取系统

1. 引言 在当今数字化时代,网络上蕴含着海量的有价值信息。如何从这些非结构化的网页中自动提取出结构化的数据,成为了数据挖掘和信息检索领域的重要研究课题。网络爬虫作为一种自动获取网页内容的技术,被广泛应用于信息收集、数据分析等领域。然而,网页结构的多样性和复杂…

Orange的运维学习日记--18.Linux sshd安全实践

Orange的运维学习日记–18.Linux sshd安全实践 文章目录Orange的运维学习日记--18.Linux sshd安全实践场景模拟sshd配置需求:参数表格:MOTD警告定期备份SSH密钥与配置登录防护:fail2ban测试与日志场景模拟 你是某金融科技公司的Linux运维工程…