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࿰…...
安装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 文件,并在该文件中添加以下规则: BEGIN WordPress <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^index.php$ [L] RewriteCond %{REQUEST_FILENAME} !f RewriteCond %{REQUEST_…...
Spring Cloud LoadBalancer
什么是负载均衡? 如果一个服务对应多个实例,我们需要把流量合理的分配给多个实例;当服务流量增⼤时, 通常会采⽤增加机器的⽅式进⾏扩容, 负载均衡就是⽤来在多个机器或者其他资源,中, 按照⼀定的规则合理分配负载. 服务端负载…...
面向对象与设计模式第二课:设计模式实战
第三章:面向对象与设计模式 第二课:设计模式实战 设计模式是软件工程中的一项重要实践,它为解决常见的设计问题提供了经过验证的解决方案。本课将深入探讨几种常见的设计模式,并通过实际案例分析其在项目中的应用。 1. 每种设计…...
非科班出身如何转行程序员?
非科班出身是指那些大学专业为非计算机相关专业的人群,多数人对于计算机基础了解比较少,甚至零基础。这部分人群中有相当多一部分处于对于编程的兴趣和外界了解的印象想转行成为一名程序员。 非科班出身与计算机科班出身相比有着天然的劣势,在…...
clawdocker:基于Shell脚本的Docker实例管理器,简化OpenClaw多实例部署
1. 项目概述与核心价值 如果你正在折腾OpenClaw,或者任何需要部署多个独立实例的Docker化应用,那么你大概率经历过这样的场景:每次新建一个实例,都要手动执行一长串的 docker run 命令,记住各种端口映射、卷挂载和环…...
RAG开发实战:Langchain-RAG-DevelopmentKit核心架构与工程化指南
1. 项目概述:一个面向RAG应用开发的“瑞士军刀”如果你正在或打算基于LangChain构建检索增强生成(RAG)应用,那么你大概率会遇到一个经典困境:从零开始搭建一个健壮、可扩展的RAG系统,需要整合的组件和技术栈…...
GlosSI完全攻略:一键实现Steam控制器全局支持的终极方案
GlosSI完全攻略:一键实现Steam控制器全局支持的终极方案 【免费下载链接】GlosSI Tool for using Steam-Input controller rebinding at a system level alongside a global overlay 项目地址: https://gitcode.com/gh_mirrors/gl/GlosSI 有没有想过…...
边缘TTS实战:本地部署高质量语音合成与性能优化指南
1. 项目概述:当TTS遇见边缘计算最近在折腾一个需要实时语音合成的项目,发现了一个挺有意思的仓库:travisvn/openai-edge-tts。这名字一看就很有料,把“OpenAI”和“Edge-TTS”这两个词组合在一起,背后指向的是一个非常…...
开源项目本地化实战:从Presentify翻译项目看国际化协作
1. 项目概述:一个被忽视的开源宝藏如果你是一个经常需要做演示、录屏或者线上教学的开发者、讲师或者知识分享者,那你一定遇到过这个痛点:如何在屏幕上清晰地标注你的鼠标点击、按键操作,让观众能毫不费力地跟上你的思路ÿ…...
模型运行记录
1753...
B站视频转文字终极指南:3分钟学会用bili2text智能提取视频内容
B站视频转文字终极指南:3分钟学会用bili2text智能提取视频内容 【免费下载链接】bili2text Bilibili视频转文字,一步到位,输入链接即可使用 项目地址: https://gitcode.com/gh_mirrors/bi/bili2text 还在为手动整理B站视频内容而烦恼吗…...
Claude Code 多项目 API 配置管理实践
背景 Claude Code 的项目级配置文件 .claude/settings.json 中包含 API 提供商相关的环境变量。当同时维护多个项目,每个项目使用不同的 API 提供商(Anthropic 直连、OpenRouter 代理、自建转发等)时,每次切换项目都需要手动修改…...
图解人工智能(12)自动做化学实验的机器
近年来,人工智能和传统科学的结合备受瞩目。2019年,英国利物浦大学在《自然》杂志发表论文,介绍了一种可以自动做化学实验的机器人。查找相关资料,并讨论一下类似的工作能给人类社会带来怎样的变革。首先,实验人员的培…...
Nodejs后端服务如何稳定调用Claude并避免封号风险
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 Nodejs后端服务如何稳定调用Claude并避免封号风险 1. 后端集成Claude的常见挑战 在Node.js后端服务中集成Claude模型,…...
