【YOLO系列】YOLO.v1算法原理详解

article/2025/3/3 5:04:59

YOLO(You Only Look Once)系列算法原理

前言 :详细介绍了yolo系列目标检测算法的原理和发展过程。

系列:
【YOLO系列】YOLO.v1算法原理详解
【YOLO系列】YOLO.v2算法原理详解
【YOLO系列】YOLO.v3算法原理详解
【YOLO系列】YOLO.v4 & YOLO.v5算法原理详解

文章目录

  • YOLO(You Only Look Once)系列算法原理
    • 1. YOLO.v1
      • 1.1 基本概述
      • 1.2 算法流程
      • 1.3 细节实现
        • 1.3.1 卷积网络结构
        • 1.3.2 预测框bbox
        • 1.3.4 损失函数
      • 1.4 总结

1. YOLO.v1

1.1 基本概述

论文参考:You only look once unified real-time object detection

yolov1 是使用 one-stage 方法进行目标检测。核心思想是把目标检测问题处理成回归问题。

输入图像通过一个卷积神经网络,直接输出最终预测框位置和类别(概率)。

1.2 算法流程

整个YOLO检测系统如下图所示。

在这里插入图片描述

  • 假设网络实现的预测类别数为 C 个

    论文中使用 PASCAL VOC数据集,C=20,即实现20类别物品的目标检测;

  • 输入图像首先被 resize 到指定尺寸

    论文中将输入图像统一调整到 448 × \times × 448 ;

    即网络输入: 448 × 448 × 3 448\times 448 \times 3 448×448×3

  • 对图像进行划分,共划分 S × S S\times S S×S 个方格(即grid),

    论文中 S=7, 即共划分 7 × 7 = 49 7\times 7=49 7×7=49个方格 ;

    每个方格包含 64 × 64 64\times 64 64×64 个像素点 ;

  • 针对每个方格grid,

    • 生成 C 个类别目标的概率分数(表示该方格是否存在该目标的概率),用 p 表示。

    • 生成 B 个检测框(即bbox, 用于检测目标),每个检测框共 5 个参数 ( x , y , w , h , c ) (x,y,w,h,c) (x,y,w,h,c)

      使用 ( x , y ) (x, y) (x,y) 表示检测框中心相对于方格左上角的偏移量;

      使用 ( w , h ) (w, h) (w,h) 表示检测框的宽和高;该值是相对于图像宽高的比。

      使用 c o n f i d e n c e confidence confidence 表示该框预测(目标)的置信度;该值综合了含目标的置信度和方框位置准确度。

    每个方格输出向量如下图所示:

    在这里插入图片描述

    因此针对每个方格,共有参数量为 ( C + B × 5 ) (C+B\times 5) (C+B×5) 个。本论文中,即 ( 20 + 2 × 5 ) = 30 (20+2\times 5) = 30 (20+2×5)=30 个。

  • 针对一张图片,最终输出向量: S × S × ( C + B × 5 ) S\times S \times (C+B\times 5) S×S×(C+B×5)

    本论文中即 7 × 7 × 30 = 1470 7\times 7 \times 30 = 1470 7×7×30=1470

  • 对输出向量进行后处理,得到最终预测结果

    根据输出向量提取出的预测框和类别信息,通过非极大值抑制(Non-Maximum Compression, NMS) ,去除重复框,即可得到最终检测结果。
    NMS算法原理及实现可参看: 目标检测之相关指标介绍

1.3 细节实现

1.3.1 卷积网络结构

论文所用卷积神经网络结构,即Backbone基于GoogLeNet,具体如下图所示:

在这里插入图片描述

该网络最后一层的输出 7 × 7 × 30 7\times 7 \times 30 7×7×30 即对应上述最终输出向量的分析。

1.3.2 预测框bbox

预测框bbox如下所示

在这里插入图片描述

( x , y ) (x,y) (x,y) 表示预测框bbox中心相对于当前所在方格的偏移值,范围在 [0,1];

( w , h ) (w,h) (w,h) 表示预测框bbox宽高,该值实际计算为框的实际宽高与整图宽高的比值,范围为 [0,1];

c c c 即 confidence,表示预测框置信度,范围为[0,1]。
计算方法如下
c = P r ( O b j e c t ) ∗ I O U p r e d t r u t h c = Pr(Object)*IOU_{pred}^{truth} c=Pr(Object)IOUpredtruth
其中, P r ( O b j e c t ) Pr(Object) Pr(Object)表示当前格子包含目标的概率,只有0和1两个数值。如果该目标中心落入该格子,则 P r ( o b j e c t ) = 1 Pr(object)=1 Pr(object)=1,反正,该值为0。

值得说明的是,在1.2节中提到每个格子共有B(论文中该值为为2)个预测框,也即每个格子共B组(x,y,w,h,c)数据。每个格子只负责预测一类物体,也即两个检测框只预测一类物体。预测物体的类别即是根据置信度大小来确定的。

1.3.4 损失函数

损失即计算网络输出值(或预测值)与标签值差异的程度。
举例说明,如上图的包含狗狗的方格,对应的标签值与预测值形式如下,

在这里插入图片描述

yolo v1中损失函数共包含三项,即坐标预测损失、置信度预测损失和类别预测损失。

三个损失函数都使用了均方误差。计算公式如下所示:
在这里插入图片描述

其中,

S —— 方格数,论文中为 7;

B —— 每个方格中检测框数量,论文中为 2;

x i , y i x_i, y_i xi,yi —— 检测框中心坐标;

w i , h i w_i, h_i wi,hi —— 检测框宽和高;公式中使用开根号,为了增大小物体检测的该部分损失权重;

C i C_i Ci —— 检测框置信度

p i p_i pi —— 类别概率

1 i , j o b j 1^{obj}_{i,j} 1i,jobj —— 标签中,检测框中心点是否落入当前方格,若落入,取值 1,反之,取值 0;
1 i , j n o o b j 1^{noobj}_{i,j} 1i,jnoobj 与此相反。

λ c o o r d , λ n o o b j \lambda_{coord}, \lambda_{noobj} λcoord,λnoobj —— 对应损失项的权重,值越大,代表该部分损失越大。论文中分别设为了 5 和 0.5;

1.4 总结

本文详细介绍了yolov1的原理和实现过程。

  • 将目标检测问题转化为了回归问题,可以得到较好的检测速度。
  • 原理现在看来相对简单,但作为yolo的开篇之作,相当哇塞。
  • 于是,各方大神发力,yolo开始了更快更准的道路。

下一篇:YOLO.v2


http://chatgpt.dhexx.cn/article/oEIbnMwq.shtml

相关文章

A*算法原理与实现

前言 A*算法最初发表于1968年,由Stanford研究院的Peter Hart, Nils Nilsson以及Bertram Raphael发表。它可以被认为是Dijkstra算法的扩展。 由于借助启发函数的引导,A*算法通常拥有更好的性能。 一、 A*吸取了Dijkstra 算法中的cost_so_far,为…

激光SLAM之NDT算法(1)算法原理

/在激光SLAM之NDT算法(2)-建图中我会给出实测可用的建图代码,并予以解释代码结构,这里就先讲讲原理吧!!!/ 无人车激光SLAM系统简单可以分为建图和定位两部分,无人车的定位问题,实际上就是要找出无人车当前在地图的那个位置&#x…

A*算法的原理及应用

A*算法的原理 A* 算法是一种高效的启发式搜索算法,在二维的栅格地图上寻路效果好,它通过估算节点的代价评估函数值并作为节点的综合优先级,当选择下一个需要遍历的节点时,再选取综合优先级最高的节点,逐步地找到最优路…

Bresenham 画圆算法原理

文章目录 前言Bresenham 画圆算法原理两个近似构造判别式圆与网格点的关系关系由来关系含义p i p_i pi​ 递推画圆程序伪码圆与网格点的关系图示前言 首先简要介绍一下生成圆的方法: 直接利用圆的方程生成圆利用圆的对称性生成圆方法一由于会涉及到浮点运算等因素,不采取该方…

Js中读取、移除属性及隐藏组件方法研究

添加、移除组件属性方法: $(".class名").attr("属性名","属性值");//设置指定属性 $(".class名").attr("属性名");//读取指定属性值 or document.getElementById("id值").getAttribute("属性名…

js获取属性值,自定义属性,修改移除属性值

补充&#xff1a;由于不清楚一些属性是内置属性还是自定义属性 所以h5规定 自定义属性使用date-开头作为属性并赋值 案例1: <body><div date-index"1"></div> </body> <script>var div document.querySelector(div);console.log(div…

获取/移除属性值

1.获取属性值&#xff1a; element.属性 获取属性值 element.getAttribute&#xff08;‘属性’&#xff09;&#xff1b; 2.区别&#xff1a; element.属性 获取内置属性值&#xff08;元素本身自带的属性&#xff09; element.getAttribute&#xff08;‘属性’&#xff09;&…

JavaScript移除对象中不必要的属性

Thinking系列&#xff0c;旨在利用10分钟的时间传达一种可落地的编程思想。 业务开发中&#xff0c;我们经常会遇到&#xff1a;基于后端返回接口数据&#xff0c;前端保存到对象 Object 中&#xff0c;前端开发过程中为了一些场景的便利性&#xff0c;需要在该对象中增加相应的…

js移除属性

一、效果 代码 <style>div{width:100px;height: 100px;background-color: red;}.clsP{background-color: #00FF00;}</style><body><input type"button" value"移除属性" id"btn" /><div id"dv" score&q…

合天网安实验室CTF-解密100-Funny Crypto

合天网安实验室CTF-解密100-Funny Crypto 题目描述 tgbnjuy 8ujko9 5rfgy6 相关附件 题目链接 参考解题步骤 字母被围起来的字母图示颜色tgbnjuyh红8ujko9i绿5rfgy6t蓝 提交flag&#xff1a;hit

数字取证之Autopsy ——合天网安实验室学习笔记

实验链接 Autopsy Forensic Browser 是数字取证工具-The Sleuth Kit&#xff08;TSK&#xff09;的图形界面&#xff0c;用于对文件系统和卷进行取证。通过本实验学习文件系统取证的思想与方法&#xff0c;掌握Autopsy的使用。 链接&#xff1a;http://www.hetianlab.com/exp…

【合天网安】CONN.ASP暴库漏洞实验

0x01预备知识 1、概念&#xff1a; 相对路径和绝对路径 绝对路径&#xff1a;例如D&#xff1a;/test/test.mdb 相对路径&#xff1a;例如/test/test.mdb 2、%5C暴库 简单点说&#xff0c;就是在打开页面的时候把网页中的/换成%5C&#xff0c;然后提交就可以得到数据库地址…

【合天网安】FCKeditor 2.4.3文件上传漏洞

【合天网安实验室】FCKeditor 2.4.3文件上传漏洞 编辑器漏洞 常见的文本编辑器有FCKeditor、Ewebeditor、UEditor、KindEditor、XHeditor等&#xff0c;它们包含的功能类似&#xff0c;如图片上传、视频上传、远程下载等。使用这类编辑器减少了程序开发的时间&#xff0c;但也…

摩尔斯电码和栅栏密码 ——合天网安实验室学习笔记

实验链接 通过学习本实验理解摩尔斯电码和栅栏密码的编码解码过程&#xff1b;掌握编写摩尔斯电码的编码解码程序和编写多功能栅栏密码的编码解码程序。 链接&#xff1a;http://www.hetianlab.com/expc.do?ce64d3e661-ebbb-41fd-a220-a17d608f994e 实验简介 实验所属系列…

【合天网安】DoraBox之文件包含及任意文件读取漏洞

【合天网安实验室】DoraBox之文件包含及任意文件读取漏洞 目的&#xff1a; 过DoraBox靶场系列练习&#xff0c;学习任意文件包含、目录限制文件包含及任意文件读取漏洞的利用过程。 实验过程&#xff1a; 1.确保Apache、MySQL服务正常开启 2、查看.txt文本内容 3.使用includ…

合天网安实验室-sql注入实验一

根据指导书我们要先在实验机进入这个网址http://10.1.1.11:81 进入之后会看到三个实例。 实例一 根据指导书的提示来做这一题。后面两个实例也要看这个指导书。 先判断是否存在注入 方法一 在参数后面加上单引号,比如: http://xxx/abc.php?id1’ 如果页面返回错误&#xff…

合天网安《Weekly CTF》第四周

Check your source code 题目介绍 打开靶机&#xff0c;进步网站&#xff0c;是一个登陆框 首先&#xff0c;根据题名的提示&#xff0c;f12&#xff0c;发现存在source.txt 打开source.txt&#xff0c;出现源码 对源码进行分析 <?php $flag "XXXXXXXXXXXX"…

计算机取证之Xplico ——合天网安实验室学习笔记

实验链接 Xplico是一款开源的网络取证分析工具&#xff0c;其分析与呈现的能力非常强大。Xplico可以捕获Internet网络应用层流量&#xff0c;通过流量解析&#xff0c;解析出网络包中的各种应用数据&#xff0c;还原网络数据发送现场。通过本实验学习掌握Xplico使用方法&#…

合天网安实验室CTF-Exp200-Come on,Exploit me!

合天网安实验室CTF-Exp200-Come on,Exploit me! 题目描述 Audrey Tang. ⊙.⊙ 我只能说到这儿了 相关附件 exp200 题目链接 参考解题步骤 1、下载附件先用VSCode打开看看 换个行看看 通过and换行有68行 2、根据题目描述猜测   如果没有接触过perl语言看到这些文本应该…

CTF挑战赛-合天网安实验室

[TOCCTF挑战赛-合天网安实验室逆向解析] http://www.hetianlab.com/CTFrace.html 1.逆向100 修改后缀为.apk 安卓模拟器打开&#xff0c;发现要求输入Password 用Android逆向助手打开&#xff0c;dex转jar&#xff0c;发现明文password 输入&#xff0c;得到flag。 2.逆向200 …