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

Yolo系列 V1和V2的对比

在计算机视觉领域中,目标检测是一个核心问题,旨在识别图像中所有感兴趣的目标,并给出它们的类别和位置。近年来,随着深度学习技术的发展,目标检测领域取得了巨大的进步。Yolo(You Only Look Once)系列算法以其出色的速度和合理的精度,在实时目标检测任务中占据了重要的地位。本文将详细介绍Yolo系列中的V1和V2两个版本,并对比它们的差异。

YoloV1

YoloV1是Yolo系列目标检测算法的开山之作,具有重要的开创性意义。它将目标检测任务转化为一个回归问题,摒弃了传统的两阶段目标检测方法中先提取候选区域再进行分类的步骤,极大地提高了检测速度。

架构

YoloV1采用一个单一的卷积神经网络(CNN),将输入图像划分为SxS的网格。每个网格负责检测其中心点落在该网格内的目标。模型直接输出边界框(bounding boxes)和对应的类别概率。每个网格预测固定数量的边界框及其置信度。

输入层

输入图像的尺寸固定为448×448,主要是因为YoloV1的网络中,卷积层最后接了两个全连接层,而全连接层要求输入的数据是固定尺寸的。

卷积层

共有24个卷积层,用于对输入图像进行特征提取,不断地提取图像的抽象特征。在3x3的卷积后接1x1卷积,既降低了计算量,也提升了模型的非线性能力。

全连接层

2个全连接层位于卷积层之后。第一个全连接层将卷积得到的分布式特征映射到样本标记空间,把输入图像的所有卷积特征整合到一起;第二个全连接层将所有神经元得到的卷积特征进行维度转换,最后得到与目标检测网络输出维度相同的维度。除最后一层使用线性激活函数外,其余层都使用LeRU激活函数。

网格划分与边界框预测

将输入图像划分为7×7的网格。如果目标的中心落在某个网格内,那么这个网格就负责预测该目标。每个网格预测2个边界框,每个边界框需要预测5个值,分别是中心坐标(x, y)、宽(w)、高(h)以及置信度(confidence)。

类别预测

由于Pascal VOC数据集共有20个物体类别,所以每个网格还需要预测20个类别的概率值,表示该网格位置存在任一种类别的可能性。

损失函数

损失函数包括位置误差、置信度误差(前景和背景)和分类误差。

优点与缺点

YoloV1的速度非常快,标准版本每秒可以处理45帧图像,极速版本甚至可以每秒处理150帧图像,完全满足视频的实时检测要求。此外,它的假阳性率低,在区分前景和背景区域方面表现较好,检测错误的情况较少。然而,YoloV1的检测精度相对较低,特别是对于小物体以及靠得特别近的物体,检测效果不好。

YoloV2

YoloV2在YoloV1的基础上进行了多项改进,包括采用更深的特征提取网络、引入锚框(anchor boxes)机制、使用批量归一化(Batch Normalization)以及支持在更高分辨率下进行训练等,显著提高了检测速度和准确度。

网络结构

YoloV2使用Darknet-19作为其基础网络结构,Darknet-19是一个深度卷积神经网络,包含19个卷积层和5个最大池化层。它的设计哲学是减少计算量,同时保持足够的特征表达能力。

锚框机制

为了预测不同尺寸的目标,YoloV2引入了锚框的概念。每个网格单元不再只预测一个边界框,而是预测多个与锚点尺寸相关的边界框。这些锚点是预先定义的,基于训练数据集中目标尺寸的分布。使用多个锚点可以提高对不同尺寸目标的检测能力。

特征金字塔网络(FPN)

YoloV2通过特征金字塔网络(FPN)来捕捉不同尺度的特征,从而提高对小目标的检测能力。FPN的核心思想是将深层网络中的高语义信息和浅层网络中的高分辨率信息结合起来,使得YoloV2能够在不同尺度的特征图上进行检测,从而检测到不同大小的目标。

损失函数

YoloV2定义了一个复合损失函数,用于同时优化定位和分类误差。损失函数主要由边界框坐标损失、目标置信度损失和分类损失三部分组成。

优点与改进

YoloV2在保持较快检测速度的同时,显著提升了检测性能,尤其是在小目标检测方面有了一定的改善。此外,YoloV2还通过数据增强和在线难例挖掘(Online Hard Example Mining, OHEM)等技术进一步提高了模型的泛化能力。

对比
  • 网络结构:YoloV1使用较浅的网络结构,而YoloV2采用了更深的Darknet-19网络结构,提高了特征提取能力。

  • 边界框预测:YoloV1每个网格预测固定数量的边界框,而YoloV2引入了锚框机制,提高了对不同尺寸目标的检测能力。
  • 训练策略:YoloV2在训练策略上进行了优化,使用了更高分辨率的输入图像和多尺度训练,使得模型对不同尺度的目标具有更好的适应性。
  • 检测性能:YoloV2在保持较快检测速度的同时,显著提升了检测精度,尤其是在小目标检测方面。
总结

YoloV1和YoloV2在目标检测领域都有着举足轻重的地位。YoloV1以其独特的设计理念,将目标检测任务转化为一个单一的回归问题,实现了端到端的训练,非常适合实时应用场景。然而,它也存在一些不足,比如对小目标的检测效果欠佳。YoloV2在YoloV1的基础上进行了多方面的改进,显著提升了检测性能和泛化能力。总的来说,YoloV1和YoloV2都是目标检测发展历程中的重要里程碑,它们的创新设计和高效性能为后续的目标检测算法提供了宝贵的经验和借鉴。

相关文章:

Yolo系列 V1和V2的对比

在计算机视觉领域中,目标检测是一个核心问题,旨在识别图像中所有感兴趣的目标,并给出它们的类别和位置。近年来,随着深度学习技术的发展,目标检测领域取得了巨大的进步。Yolo(You Only Look Once&#xff0…...

安装vue发生异常: idealTree:nodejs: sill idealTree buildDeps

一、异常 C:\>npm install vue -g npm ERR! code CERT_HAS_EXPIRED npm ERR! errno CERT_HAS_EXPIREDnpm ERR! request to https://registry.npm.taobao.org/vue failed, reason: certificate has expired 二、原因 请求 https://registry.npm.taobao.org 失败,证…...

SQL基础练习

SQL语句的下载脚本链接!!! 【免费】SQL练习资源-具体练习操作可以查看我发布的文章资源-CSDN文库https://download.csdn.net/download/Z0412_J0103/89908378 1 查看所有数据库 SHOW DATABASES; 结果展示: 2 创建库 方法一&#…...

Python 如何处理大规模数据库表的迁移与数据迁移的高效执行

Python 如何处理大规模数据库表的迁移与数据迁移的高效执行 引言 在现代应用开发中,随着业务需求的增长,数据库表结构和数据往往需要进行迁移和更新。迁移(Migration)是指对数据库表的结构、数据类型、索引、约束等进行修改或更新…...

如何在 MySQL 中处理大量的 DELETE 操作

全文目录: 开篇语前言摘要简介概述DELETE 操作的基本概念常用的 DELETE 方法 核心源码解读简单 DELETE 语句批量 DELETE 示例 案例分析案例1:使用简单 DELETE 删除用户数据案例2:使用分批 DELETE 应用场景演示场景1:用户管理系统场…...

技嘉主板怎么开启TPM_技嘉主板开启TPM2.0教程

在win11最低要求是提示,电脑必须满足 TPM 2.0,并开需要开启TPM 才能正常安装windows11系统,有很多技嘉主板的用户问我,技嘉主板怎么开启tpm功能呢?下面小编就给大家详细介绍一下技嘉主板开启tpm功能的方法。 如何确认你…...

正在等待缓存锁:无法获得锁 /var/lib/dpkg/lock-frontend。锁正由进程 5427(unattended-upgr)持有

这段信息表示你的系统正在等待一个锁文件 (/var/lib/dpkg/lock-frontend) 解除。锁文件用于防止多个进程同时修改系统的包管理器(apt 或 dpkg),避免冲突或损坏系统。 在这种情况下,进程 unattended-upgr(自动升级进程…...

js实现简单的【发布者-订阅者模式】

发布订阅模式是什么 发布订阅模式是一种代码的设计模式,它允许对象间进行松散耦合的通信。 发布者(Publishers)不会直接调用订阅者(Subscribers),相反,它们通过事件通道发布消息;订…...

java学习--集合(大写四.4)

4.collection子接口:List 4.1 List接口存储数据特点 List接口中存储数据的特点:用于存储有序\可以重复的数据. 可以使用List替代数组,动态数组 4.2List接口常用方法 4.2.1、第一波: Collection中声明的15个方法 4.2.2、第二波:因为List是…...

CSS3文本阴影、文本换行、文本溢出、文本修饰、文本描边的使用

1.文本阴影:text-shadow 2.文本换行: white-space:pre(可以理解为按原文显示) white-space:pre-wrap(不会超出父容器) 3.文本溢出 text-overflow:ellipsis一般配合文本…...

Python实现股票自动交易:步骤、要点与注意事项有哪些?

炒股自动化:申请官方API接口,散户也可以 python炒股自动化(0),申请券商API接口 python炒股自动化(1),量化交易接口区别 Python炒股自动化(2):获取…...

闪存----

闪存是一种非易失性存储设备,用于在电子设备中存储数据。使用固态电子存储技术,不含运动部件,因此具有更高的耐久性和更快的访问速度。闪存能够永久的保存数据,即使在断电的情况下也不会丢失。 闪存的速度主要得益于 非机械结构、…...

Spring Boot论坛网站:安全特性与性能优化

4系统概要设计 4.1概述 本系统采用B/S结构(Browser/Server,浏览器/服务器结构)和基于Web服务两种模式,是一个适用于Internet环境下的模型结构。只要用户能连上Internet,便可以在任何时间、任何地点使用。系统工作原理图如图4-1所示: 图4-1系统工作原理…...

【MATLAB源码-第261期】基于matlab的帝企鹅优化算法(EPO)机器人栅格路径规划,输出做短路径图和适应度曲线

操作环境: MATLAB 2022a 1、算法描述 帝企鹅优化算法(Emperor Penguin Optimizer,简称EPO)是一种基于自然现象的优化算法,灵感来自于帝企鹅在南极极寒环境中的生活习性。帝企鹅是一种群居动物,生活在极端…...

Spring Boot 核心理解-profile

在 Spring Boot 中,application.properties 和 application.yml 是用来管理应用程序配置的主要文件。为了方便在不同的环境(如 dev、test、prod)下进行配置管理,Spring Boot 提供了 Profile 的概念,这使得我们可以针对…...

docker清理未使用的 Docker 资源

docker system prune --all --forcedocker system prune --all --force 是一个 Docker 命令,用于清理未使用的 Docker 资源。具体含义如下: docker system prune:这个命令会清理所有未使用的 Docker 资源,包括未使用的容器、网络…...

新网虚拟主机wordpress伪静态规则

先在WordPress安装目录下的创建.htaccess 文件&#xff0c;并在该文件中添加以下规则&#xff1a; BEGIN WordPress <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^index.php$ [L] RewriteCond %{REQUEST_FILENAME} !f RewriteCond %{REQUEST_…...

Spring Cloud LoadBalancer

什么是负载均衡&#xff1f; 如果一个服务对应多个实例&#xff0c;我们需要把流量合理的分配给多个实例&#xff1b;当服务流量增⼤时, 通常会采⽤增加机器的⽅式进⾏扩容, 负载均衡就是⽤来在多个机器或者其他资源&#xff0c;中, 按照⼀定的规则合理分配负载. 服务端负载…...

面向对象与设计模式第二课:设计模式实战

第三章&#xff1a;面向对象与设计模式 第二课&#xff1a;设计模式实战 设计模式是软件工程中的一项重要实践&#xff0c;它为解决常见的设计问题提供了经过验证的解决方案。本课将深入探讨几种常见的设计模式&#xff0c;并通过实际案例分析其在项目中的应用。 1. 每种设计…...

非科班出身如何转行程序员?

非科班出身是指那些大学专业为非计算机相关专业的人群&#xff0c;多数人对于计算机基础了解比较少&#xff0c;甚至零基础。这部分人群中有相当多一部分处于对于编程的兴趣和外界了解的印象想转行成为一名程序员。 非科班出身与计算机科班出身相比有着天然的劣势&#xff0c;在…...

conda相比python好处

Conda 作为 Python 的环境和包管理工具&#xff0c;相比原生 Python 生态&#xff08;如 pip 虚拟环境&#xff09;有许多独特优势&#xff0c;尤其在多项目管理、依赖处理和跨平台兼容性等方面表现更优。以下是 Conda 的核心好处&#xff1a; 一、一站式环境管理&#xff1a…...

【入坑系列】TiDB 强制索引在不同库下不生效问题

文章目录 背景SQL 优化情况线上SQL运行情况分析怀疑1:执行计划绑定问题?尝试:SHOW WARNINGS 查看警告探索 TiDB 的 USE_INDEX 写法Hint 不生效问题排查解决参考背景 项目中使用 TiDB 数据库,并对 SQL 进行优化了,添加了强制索引。 UAT 环境已经生效,但 PROD 环境强制索…...

React Native在HarmonyOS 5.0阅读类应用开发中的实践

一、技术选型背景 随着HarmonyOS 5.0对Web兼容层的增强&#xff0c;React Native作为跨平台框架可通过重新编译ArkTS组件实现85%以上的代码复用率。阅读类应用具有UI复杂度低、数据流清晰的特点。 二、核心实现方案 1. 环境配置 &#xff08;1&#xff09;使用React Native…...

DIY|Mac 搭建 ESP-IDF 开发环境及编译小智 AI

前一阵子在百度 AI 开发者大会上&#xff0c;看到基于小智 AI DIY 玩具的演示&#xff0c;感觉有点意思&#xff0c;想着自己也来试试。 如果只是想烧录现成的固件&#xff0c;乐鑫官方除了提供了 Windows 版本的 Flash 下载工具 之外&#xff0c;还提供了基于网页版的 ESP LA…...

【git】把本地更改提交远程新分支feature_g

创建并切换新分支 git checkout -b feature_g 添加并提交更改 git add . git commit -m “实现图片上传功能” 推送到远程 git push -u origin feature_g...

【VLNs篇】07:NavRL—在动态环境中学习安全飞行

项目内容论文标题NavRL: 在动态环境中学习安全飞行 (NavRL: Learning Safe Flight in Dynamic Environments)核心问题解决无人机在包含静态和动态障碍物的复杂环境中进行安全、高效自主导航的挑战&#xff0c;克服传统方法和现有强化学习方法的局限性。核心算法基于近端策略优化…...

【Veristand】Veristand环境安装教程-Linux RT / Windows

首先声明&#xff0c;此教程是针对Simulink编译模型并导入Veristand中编写的&#xff0c;同时需要注意的是老用户编译可能用的是Veristand Model Framework&#xff0c;那个是历史版本&#xff0c;且NI不会再维护&#xff0c;新版本编译支持为VeriStand Model Generation Suppo…...

云原生周刊:k0s 成为 CNCF 沙箱项目

开源项目推荐 HAMi HAMi&#xff08;原名 k8s‑vGPU‑scheduler&#xff09;是一款 CNCF Sandbox 级别的开源 K8s 中间件&#xff0c;通过虚拟化 GPU/NPU 等异构设备并支持内存、计算核心时间片隔离及共享调度&#xff0c;为容器提供统一接口&#xff0c;实现细粒度资源配额…...

Python网页自动化Selenium中文文档

1. 安装 1.1. 安装 Selenium Python bindings 提供了一个简单的API&#xff0c;让你使用Selenium WebDriver来编写功能/校验测试。 通过Selenium Python的API&#xff0c;你可以非常直观的使用Selenium WebDriver的所有功能。 Selenium Python bindings 使用非常简洁方便的A…...

深度解析:etcd 在 Milvus 向量数据库中的关键作用

目录 &#x1f680; 深度解析&#xff1a;etcd 在 Milvus 向量数据库中的关键作用 &#x1f4a1; 什么是 etcd&#xff1f; &#x1f9e0; Milvus 架构简介 &#x1f4e6; etcd 在 Milvus 中的核心作用 &#x1f527; 实际工作流程示意 ⚠️ 如果 etcd 出现问题会怎样&am…...