news 2026/6/24 0:00:01

彻底搞懂YOLOv1:R-CNN与YOLO架构的区别在哪里?

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
彻底搞懂YOLOv1:R-CNN与YOLO架构的区别在哪里?

0 前言

在计算机视觉领域中,基础的任务除了目标分类之外,往前进一步就是目标检测了。在之前的文章中,我介绍过AlexNet、ResNet,其实这些模型一开始都是为了目标分类诞生的。

目标分类和检测的区别在哪里呢?假设我们有一张猫的图片,我们输入到深度学习的模型中,只期待它得到一个判断结果:是猫还是狗,或者是其他的动物。这就是目标分类。

但是目标检测在这个目标识别任务的基础上更进一步:我们不仅需要知道这张图片里是不是猫,我们还要知道它的位置在哪里。因此目标检测实质上有两个任务:定位和识别。

对于人类来说,这似乎是一件很简单的事情,但是对于计算机而言,这个任务的难度又上升了一个台阶。

YOLO是目标检测领域的经典模型,然而在YOLO之前其实就已经有前人在目标检测领域做了大量研究工作。

在正式踏入这个技术领域之前,我们不妨首先从上帝视角,来了解一下目标检测的发展历程以及经典框架,这对于开展后续的学习是大有裨益的。

1 思维导图

限于篇幅,加上叙述目标检测的发展过程,顺着这个脉络,因此我打算分两篇文章来介绍YOLOv1,有时间的话,也可以为大家介绍一下具体的代码。

今天这篇文章主要介绍的内容有三点,思维导图如下。

2 目标检测发展史简介

一般而言,我们介绍深度学习领域某个任务的发展过程,都是从两个方面来说:一个是传统方法,一个是深度学习的方法。

在以往传统的方法中,都是首先人工提取图像视觉特征,然后再将特征输入到特定的网络中,最终得到任务结果。不过一旦图像种类变得复杂并且特征不明显,那么想得到一个通用的任务模型则会非常困难,并且依赖研究者的先验知识。

当深度学习出现之后,特征提取这个费时费力的活儿就可以交给卷积神经网络了,它依赖海量的数据,从中学习出数据中通用的特征,虽然大多数特征没有办法用人类语言描述出来。

2014年,不同于传统的目标检测算法,R-CNN出现了。当时衡量目标检测效果的数据集为PASCAL VOC,R-CNN在该数据集上一鸣惊人,开启了深度学习领域结合目标检测的研究的热潮。

然而R-CNN的算法基础导致它有一个缺点:那就是速度不够快。在R-CNN的基础上,众多学者做出了改进,如Fast R-CNN和Faster R-CNN,但是依旧是遵循R-CNN原有的基础框架。

计算机视觉10年代一路狂奔,引吭高歌,在2015年,YOLO横空出世,在每秒40帧的检测速度实力碾压当时所有的目标检测模型,这也导致了YOLO框架横扫后续的目标检测领域。

目前YOLO官方发布的模型已经到了YOLOv11。

要想弄懂YOLO,我认为直接去学习YOLO的最新模型难度很大,我们不知道它改进的每一个trick巧妙在哪里,正如如果我们不懂得Transformer的原理,我们学习BERT和GPT就会比较吃力。

尽管YOLOv1已经是十年前的模型了,但是时至如今,我认为去了解它的结构和模块对于初学者而言仍然有意义,学习了YOLOv1之后,我们再去学习更新版本的模型,会更加从容,也能体会到每个版本之间的迭代差异,温故而知新。

3 R-CNN与YOLO架构区别

我们知道目标检测需要完成两个任务:定位和分类,在这个认知基础上,我们先来了解一下R-CNN的基本步骤。从上面的图中可以看出来R-CNN主要分为三步:

  • 首先从图像中提取出若干感兴趣的区域

  • 使用卷积神经网络分别处理,提取特征

  • 使用支持向量机进行分类

我们将上述三个步骤总结为关键的两步:

先提取一系列可能包含物体的候选区域,然后依次对这些区域进行特征提取和分类。

这一过程被总结为统一的范式:两阶段(two-stage)检测,本质上是先提取,后识别。包括后来Fast R-CNN以及Faster R-CNN皆是如此。

YOLO摈弃了两阶段检测的结构,采用单阶段(One-Stage)检测的模式。我们从它的名字就可以窥探一二:**YOLO(You Look Only Once)**,你只需要看一次。

YOLO的作者认为,检测(定位)和识别(分类)是可以采用一个网络完成的,不用分别进行处理,可以减少大量多余的操作,从而加快检测识别的速度。

但是需要明确的一点是,虽然YOLOv1在检测速度上胜过R-CNN,但是精度却是有所下降的,在当时业界应用中,精度和速度往往总是不能二者兼得,但是正因为YOLO检测速度的迅速,因此得到了更多研究者的青睐,使得更多的学者投身于单阶段检测的框架中。如今YOLO已经可以兼具速度和精度的要求,成为目标检测领域的主流框架。

我们再来总结对比一下二者的区别:

  • R-CNN的“两阶段”是 “先找出可能在哪(候选区域),再细看是什么(分类)” ;

  • 而YOLO的“单阶段”是 “看一眼就直接说出哪里有什么” 。

4 YOLOv1的网络结构

YOLOv1作为YOLO家族的祖先,其网络结构非常精简:通过一个端到端的卷积神经网络,直接确定目标边界框和类别。 网络结构图如下:

有点惊讶,本来我也会以为YOLOv1这么厉害,肯定是一个让人眼花缭乱的网络,结果,好像不是我们想的这么回事儿。

受到GooleNet网络结构的启发,YOLOv1的网络结构中包含24个卷积层和2个全连接层。

就是这么简单粗暴,一看网络结构,平平无奇古天乐,不就是图像分类那一套嘛,卷积激活和池化,再来个全连接层。为什么这么简单的网络结构却能完成目标检测的任务?

具体细节我们留到下篇文章,但是我们可以预先简单的探讨一下这个问题。

可以明确一点,针对一幅图像,我们要对它进行检测,需要获取到三种结果,一个是预测框的位置坐标,一个是预测的类别还有相应的概率。

因此这本质上这是一个多回归问题。

我们知道CNN不仅可以做分类,回归任务它也是高手的,因此用CNN去得到预测框的位置坐标,一个是预测的类别还有相应的概率三种数据是可行的,只不过我们的思维中,一般网络得到的结果是一种,比如我用CNN做分类得到的就是分类结果嘛,用CNN做房价预测,得到的就是房价嘛,但是它其实是可以同时预测多种数据的。这也正是它能够一次性做完所有事情的关键!

至于它的多回归具体如何是实现的,我们下篇文章来具体分析。

欢迎大家关注我的个人gzh:阿龙AI日记

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/23 17:39:15

通信系统仿真:通信系统基础理论_(11).光通信技术

光通信技术 光纤通信系统的基本原理 光纤通信系统是现代通信技术的重要组成部分,其基本原理是利用光波在光纤中传输信息。光纤通信系统的主要优势包括传输速率高、传输距离远、抗干扰能力强、损耗低等。本节将详细介绍光纤通信系统的基本原理,包括光纤的结构、光波的传播特…

作者头像 李华
网站建设 2026/6/23 12:26:14

17、Linux文件与目录操作全解析

Linux文件与目录操作全解析 1. 文件与目录导航 在Linux系统中, ls 命令是用于列出文件和目录的常用工具。默认情况下, ls 会按照文件名对文件和目录进行排序,并且大写字母开头的文件或目录会排在小写字母开头的前面。例如,执行以下命令: ls输出可能会显示 /bin/l…

作者头像 李华
网站建设 2026/6/23 1:02:24

21、Linux系统进程与包管理全解析

Linux系统进程与包管理全解析 1. 引言 计算机是动态且多功能的机器,能借助众多工具完成各类任务。在Linux系统中,管理这些工具主要涉及软件包的安装、卸载和升级,以及对运行中程序(即进程)的管理,同时还包括对记录程序运行细节的日志文件的处理。 2. 理解软件包管理 …

作者头像 李华
网站建设 2026/6/23 17:39:53

二叉排序树的插入、先序/中序/后序/层次遍历、节点查询

一、概念二叉排序树(也叫二叉搜索树)是一种基于 “左小右大” 规则的有序二叉树特点:左子节点的值 小于 父节点的值右子节点的值 大于 父节点的值每个节点由 3 部分组成(类 / 对象结构):lChild:…

作者头像 李华
网站建设 2026/6/23 19:31:02

如何在 Spring Boot 中接入 Amazon ElastiCache

缓存在服务端是一个非常重要的东西,今天我们来聊聊怎么把 Amazon ElastiCache应用整合到 Spring Boot 上,让服务响应提速、系统整体轻盈起来。一、为什么你迟早要上缓存你有多少次在日志里看着那几百毫秒的 SQL 延迟叹气?尤其当系统访问量上去…

作者头像 李华
网站建设 2026/6/23 19:34:10

基于51单片机的血糖步数测量仪

目录 具体实现功能 设计介绍 资料内容 全部内容 资料获取 具体实现功能 具体功能: (1)按键控制启动或停止,按下按键后电机转动,表示开始步行,再次按键按下,电机停止转动,表示停…

作者头像 李华