目标检测算法:YOLO v1论文解读

news2024/12/23 18:07:59

目标检测算法:YOLO v1论文解读

前言

​ 其实网上已经有很多很好的解读各种论文的文章了,但是我决定自己也写一写,当然,我的主要目的就是帮助自己梳理、深入理解论文,因为写文章,你必须把你所写的东西表达清楚而正确,我认为这是一种很好的锻炼,当然如果可以帮助到网友,也是很开心的事情。

说明

​ 如果有笔误或者写错误的地方请指出(勿喷),如果你有更好的见解也可以提出,我也会认真学习。

原始论文地址

​ 点击这里,或者复制链接

https://arxiv.org/abs/1506.02640

目录结构

文章目录

    • 目标检测算法:YOLO v1论文解读
      • 1. 文章内容概述:
      • 2. YOLO流程介绍:
      • 3. CNN架构:
      • 4. 损失函数:
      • 5. 注意点:
      • 6. 总结:

1. 文章内容概述:

​ 作者提出了一种新的目标检测方法,是一种单阶段检测方法,称其为YOLO,全称为You only look once。这个方法的主要特点是不再生成区域建议框,而是全部交给网络架构来实现,是真正的端到端结构(其实并不是严格意义上的端到端,因为还需要进行后处理操作)。

​ 正是因为没有了区域建议框的生成,其运行速度非常快,可以实现实时检测,但是同样的,其mAP和最先进的检测方法Faster-RCNN比还是较低。

2. YOLO流程介绍:

​ 如果你看了我之前的关于RCNN、Fast-RCNN、Faster-RCNN的解读,你马上就会感概,YOLO真的好简单。

​ 论文原图如下:

在这里插入图片描述

​ 对上图进行简单的说明:

  • 首先,将输入图片改变大小(一般是取大的分辨率,文中取得的是448*448)

问题:为什么要取大分辨率图像?

​ 因为检测问题需要更细致的信息,因此提高分辨率。

  • 然后,将该图片传输给CNN架构,然后产生输出(即预测框和类别预测信息)

3. CNN架构:

​ 这里作者自己设计了CNN架构,当然,对于读了这么多的CNN架构论文来说,小case(如果你是无基础直接看的话,当我没说,此时建议你可以先看看基础的)。

​ 论文原图如下:

在这里插入图片描述

​ 具体的网络架构就不谈了,只是要注意,其实网络架构中用到了激活函数,并且不是我们常规的ReLu激活函数,而是leaky relu(最后一层还是relu):

在这里插入图片描述

​ 另外,需要注意它的输出,**这是最重要的部分。**因为它的输出和我们平时的输出不一样,因为无论是图像分类的架构,还是之前的两阶段检测算法,输出就没有三维结构的。

​ 那么,7*7*30是什么意思?下面先分开解释,再结合一起解释。

解释:7*7含义

​ 作者将一张图像划分为S*S个网格,如下图(S=7):

在这里插入图片描述

​ 作者认为:

  • 如果某个物体对象中心落在某一网格中,那么该网格就负责该对象的检测
  • 每个单元格预测B个边界框和其对应的置信度分数,以及一组类概率(比如总共20个类别,则产生20个概率值)

​ 其中,置信度公式和概率公式分别如下,其中Pr(object)取{0,1},表示该网格有对象,则取值为1,否则取值为0。

在这里插入图片描述
在这里插入图片描述

解释:30含义

​ 30=(4+1)*2+20,其中4和1分别表示4个坐标值(x,y,w,h)和一个置信度分数;2表示每个单元格预测2个边界框,那么自然需要乘以2;20是因为数据集共20个类别。

解释:7*7*30怎么才能满足我们的要求?

​ 神经网络的神奇之处,就是在于我们可以让它去适应任意的任务。比如这里,我们需要它按照我们的想象输出7*7*30,并且这里的值必须为我们所想的(比如30里面为坐标值、概率值等)。想要让它输出和我们想得一样,就必须让它在训练的时候,告诉它,30里面的值我们要用来生成预测框和判断类别。而,这个控制它的过程,就是定义一个优秀的损失函数,让7*7*30的值各有所用。

4. 损失函数:

​ 原文中,给出的损失函数公式如下:

在这里插入图片描述

​ 下面进行一一解读:

1[上标:obj,下标:ij] 、 1[上标:noobj,下标:ij] 和 1[上标:obj,下标:i] 含义:

​ 1[上标:obj,下标:i],表示如果对象在单元格i中,则取值为1,否则取值为0。

​ 1[上标:obj,下标:ij],表示如果对象在单元格i的第j个边界框中,则取值为1,否则取值为0。

​ 1[上标:noobj,下标:ij],与上面恰好相反,即如果对象没有出现在单元格i的第j个边界框中,则取值为1,否则取值为0。

S和B 含义:

​ S就是一张图片划分为多少个单元格,文中为7*7。

​ B就是一个单元格有B个边界框预测,文中为2。

xi、yi、wi、hi、Ci、pi© 含义:

​ xi、yi、wi、hi就是中心点坐标值和预测框的宽高。

​ Ci是预测框的置信度分数,公式上面已经给过了。

​ pi© (小写c)是一个边框的一组概率值(向量)。

​ 在这些变量上加上*号,表示为真实值。

λcoord,λnoobj 含义:

​ 这两个值是超参数,主要是平衡值。因为,不包含对象的预测框肯定是多数,这会导致计算损失时,值失衡。因此一般会让λcoord值取得比较大,比如5,λnoobj取得比较小,比如0.5。

各行表达式的含义:

​ 第一行+第二行 = 预测框(有对象的预测框)的回归损失,可以看出采取的时类似于MSE的损失,准确来说,后面所有的损失都采取的类似MSE的损失(这是一个缺点,分类损失还是用交叉熵好一点)。

​ 第三行+第四行 = 分别为有无对象的预测框的置信度损失值。

​ 第五行 = 分类损失值。

5. 注意点:

​ 在上面写的时候,有一句”如果某对象的中心落在某单元格,则这个单元格负责该对象的检测“。而在后面中,经常会有”如果某对象落在第i个单元格中“,这里对象落在某单元格就是指的是对象中心落在单元格中。

​ 另外,一个单元格有多个框,是否所有框都负责对象?不是的,而是IOU最大的负责预测,这样可以让不同的框产生不同的作用,有利于提高召回率。

6. 总结:

​ YOLO的特殊之处在于损失函数的构建和网络输出的利用。不过YOLO v1仍然有许多的缺点,比如预测框太少(7*7*2=98个)、损失函数中分类没有交叉熵损失等等。

​ 不过,YOLO相比于两阶段检测方法,的确很简单,这也是它的一大优点。

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

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

相关文章

zigbee 模拟密码解密

代码&#xff1a; #include "iocc2530.h"#define uchar unsigned char #define uint unsigned int#define D3 P1_0 #define D4 P1_1 #define D5 P1_3 #define D6 P1_4#define SW1 P1_2 #define SW2 P0_1#define LIGHT P1_7void delay_ms(int x){for(int i0;i<x;i…

docker卷--docker volumes 使用学习

一、在Docker中管理数据 1.1、Docker 保存容器数据的方法 Docker 卷&#xff08;Docker Volumes&#xff09;&#xff1a;可以将数据保存在 Docker 卷中&#xff0c;这样可以在容器和宿主机之间共享数据&#xff0c;并保证容器中的数据不会因为容器被删除而丢失。Docker 卷可以…

Vivado_除法器 IP核

本文介绍使用Vivado中除法器Divider Generator&#xff08;5.1&#xff09;的使用方法。 参考资料&#xff1a;pg151 文章目录 Divider Generator仿真测试 Divider Generator Channel Settings选项卡 #Common Options&#xff1a; Algorithm Type: 一共有三种类型&#xff0c;…

如何才能做好企业内部客服知识管理?

企业内部客服知识管理是指企业通过对客户服务过程中所涉及的信息、知识和技能进行系统化、规范化、科学化、数字化的管理&#xff0c;提高企业内部客服人员的服务质量和效率&#xff0c;帮助企业提高客户满意度&#xff0c;增强客户黏性&#xff0c;提高企业的市场竞争力。本文…

【Linux初阶】基础IO - 简易 shell添加重定向功能

&#x1f31f;hello&#xff0c;各位读者大大们你们好呀&#x1f31f; &#x1f36d;&#x1f36d;系列专栏&#xff1a;【Linux初阶】 ✒️✒️本篇内容&#xff1a;shell重定向功能的代码实现 &#x1f6a2;&#x1f6a2;作者简介&#xff1a;计算机海洋的新进船长一枚&#…

tinkerCAD案例:1.戒子环

基本戒指 在本课中&#xff0c;您将学习使用圆柱形状制作戒指。来吧&#xff01; 说明 将圆柱体拖动到工作平面上并使其成为孔。 圆柱体应缩放以适合其制造手指。 在本例中&#xff0c;我们将使用 17mm 作为直径&#xff0c;但请根据您的需要随意调整尺寸。 将“圆柱”形状拖…

【操作系统真象还原】第5章:保护模式进阶,向内核迈进(5.1获取物理内存)

目录 5.1 获取物理内存容量 5.1.1 学习 Linux 获取内存的方法 5.1.2 利用 BIOS中断 0x15 子功能 0xe820 获取内存 5.1.3 利用BIOS中断 0x15 子功能 0xe801 获取内存 5.1.4 利用BIOS中断0x15子功能0x88获取内存 5.1.5 实战内存容量检测 5.1 获取物理内存容量 操作系统是计…

构建智能电商推荐系统:大数据实战中的Kudu、Flink和Mahout应用【上进小菜猪大数据】

上进小菜猪&#xff0c;沈工大软件工程专业&#xff0c;爱好敲代码&#xff0c;持续输出干货。 本文将介绍如何利用Kudu、Flink和Mahout这三种技术构建一个强大的大数据分析平台。我们将详细讨论这些技术的特点和优势&#xff0c;并提供代码示例&#xff0c;帮助读者了解如何在…

数据分析--Numpy初级(二)

Numpy初级 Numpy数组属性Numpy的routines函数 Numpy数组属性 Numpy数组的维数成为秩&#xff08;rank&#xff09;&#xff0c;即轴的数量&#xff0c;一维数组的秩为1…。在Numpy中&#xff0c;每一个线性的数组称为是一个轴&#xff08;axis&#xff09;&#xff0c;也就是维…

procomponents组件库采坑日记

ModalForm组件: const formRef useRef<any>();<ModalFormkey{51}title数据仓库formRef{formRef} // 用于获取表单数据autoFocusFirstInput // 自动对话框打开后&#xff0c;首个表单项自动获得焦点width"33%"modalProps{{ // 扩展ant modal属性destroyOnC…

电动力学专题:电磁场规范不变性与规范自由度

对称性&#xff0c;不变性&#xff0c;相对性&#xff0c;协变形 在现代物理学中常常被认为具有相同的含义&#xff08;好拗口&#xff09; 规范与规范的自由度 保证电磁场物理量不改变的情况下&#xff0c;有多组势可供选择&#xff0c;而每组势可以称为一个规范 规范不变性…

linux-动态库制作与使用

​​​​​​(6条消息) linux-静态库制作与使用_云的小站的博客-CSDN博客 目录 创建动态库 使用动态库 根据静态库创建时写的两个源文件&#xff0c;我们来制作动态库 创建动态库 根据这2个源文件和2个头文件我们来学习制作动态库。 我们先让编译两个源文件成.o文件,注意要…

vite技术揭秘--环境变量

目录 环境变量 生产环境替换 自定义环境变量 .env 文件 环境加载优先级 自定义环境变量 模式 TypeScript 的智能提示 在node环境里使用环境变量 前言 我们开发中不可避免的要根据环境变量来做一些逻辑分支&#xff0c;在vite中有两种实现方式&#xff0c;即define和.env…

MIT6.824 lab 1 小白实现过程

1.总体思路 构建一个简单的MapReduce系统&#xff0c;Coordinator线程用于分配任务&#xff08;包括Map任务和Reduce任务&#xff09;&#xff0c;Worker线程向Coordinator线程请求任务&#xff0c;要求所有map任务完成后才可以请求到reduce任务&#xff0c;否则的话这个worker…

Springboot +spring security,基于默认数据库模型实现授权

一.简介 上一篇文章中讲解了如何基于内存模型来实现授权&#xff0c;在这种模型里&#xff0c;用户的信息是保存在内存中的。但是&#xff0c;保存在内存中的信息&#xff0c;是无法持久化的&#xff0c;也就是程序一旦关闭&#xff0c;或者断电等情况发生&#xff0c;内存中的…

0基础学习VR全景平台篇第36篇:场景功能-导览

大家好&#xff0c;欢迎观看蛙色VR官方系列——后台使用课程&#xff01; 本期为大家带来蛙色VR平台&#xff0c;场景管理—导览功能操作。 功能位置示意 一、本功能将用在哪里&#xff1f; 导览&#xff0c;指给VR漫游作品预先设置好路线&#xff0c;并且可以自定义路线的旋…

DMBOK知识梳理for CDGA/CDGP——第三章数据治理

关 注gzh“大数据食铁兽” 回复“知识点”获取《DMBOK知识梳理for CDGA/CDGP》常考知识点&#xff08;第三章数据治理&#xff09; 第三章 数据治理 第三章在是CDGA|CDGP考试的重点考核章节之一&#xff0c;知识点比较密集&#xff0c;本章重点为语境关系图及数据治理概念…

初心不改凌云志 热血浇灌信仰花 《凭栏一片风云起》湖北卫视热力开播

浮光灼夏 御风而行&#xff0c; 由著名导演金琛执导&#xff0c; 胡一天、章若楠、王劲松 张晞临、张赫、林子璐领衔主演&#xff0c; 高伟光特邀出演的 年代战争剧《凭栏一片风云起》&#xff0c; 将于今晚19:30起&#xff0c; 登陆【湖北卫视】长江剧场。 电视剧《凭栏…

音乐人解密:究竟是如何一步一步成为音乐人的?

音乐人解密&#xff1a;究竟是如何一步一步成为音乐人的&#xff1f; 音乐是人类伟大的产物&#xff0c;近些年来越来越多的人都开始尝试学习音乐&#xff0c;成为一名音乐人。而艺术高考等途径也为许多想要学习音乐、成为职业歌手或者编曲师的人群提供了途径。然而想要成为一名…

初识EasyUI

2.1何为EasyUI. EasyUI的全称是“JQuery EasyUI”&#xff0c;是一种基于jQuery、Angular、Vue和React的用户界面的插件的集合&#xff0c;EasyUI的目标就是帮助web开发者更轻松的打造出功能丰富并且美观的UI界面。开发者不需要编写复杂的javascript&#xff0c;也不需要对css样…