【YOLO学习】YOLOv1详解

文章目录

  • 1. 概述
  • 2. 算法流程
  • 3. 网络结构
  • 4. 损失函数


1. 概述

 1. YOLO 的全称是 You Only Look Once: Unified, Real-Time Object Detection。YOLOv1 的核心思想就是利用整张图作为网络的输入,直接在输出层回归 bounding box 的位置和 bounding box 所属的类别。简单来说,只看一次就知道图中物体的类别和位置。

 2. 将一幅图像分成 SxS 个网格(grid cell),如果某个 object 的中心落在这个网格中,则这个网格就负责预测这个 object。一个格子只能预测一个物体,会生成两个预测框。

在这里插入图片描述

在这里插入图片描述

注:这里的 ( x , y , w , h , c ) (x,y,w,h,c) (x,y,w,h,c) 7 × 7 × 30 7×7×30 7×7×30 请看下文讲解。

 3. 每个网格要预测 B 个bounding box(B一般取2),每个 bounding box 除了要回归自身的位置之外,还要附带预测一个 confidence 值。每个 bounding box 共 5 个参数 ( x , y , w , h , c ) (x,y,w,h,c) (x,y,w,h,c)

  • 使用 ( x , y ) (x,y) (x,y) 表示 bounding box 中心相对于方格左上角的偏移量,范围为 [0,1]。
  • 使用 ( w , h ) (w,h) (w,h) 表示 bounding box 的宽和高,该值是相对于图像宽高的比,范围为 [0,1]。

在这里插入图片描述

在这里插入图片描述

  • confidence 代表了所预测的 box 中含有 object 的置信度(有则为 1,没有则为 0)和这个 box 预测的有多准两重信息,其值是这样计算的:

在这里插入图片描述

 该表达式含义:如果有 object 落在一个 grid cell 里,则第一项取 1,否则取 0。 第二项是预测的预测框(predict box)与真实标签框(ground truth)之间的交集(IOU)值。

问题:为什么每个网格有固定的 B 个 bounding box?(即 B=2)
在训练的时候会在线地计算每个 predictor 预测的 bounding box 和 ground truth 的 IOU,计算出来的 IOU 大的那个 predictor,就会负责预测这个物体,另外一个则不预测。这么做有什么好处?我的理解是,这样做的话,实际上有两个 predictor 来一起进行预测,然后网络会在线选择预测得好的那个 predictor(也就是 IOU 大)来进行预测。

2. 算法流程

 整个 YOLO 检测系统如下图所示:
在这里插入图片描述

  • 假设网络实现的预测类别数为 C 个。论文中使用 PASCAL VOC 数据集,C=20,即实现 20 类别物品的目标检测。
  • 输入图像首先被 resize 到指定尺寸。论文中将输入图像统一调整到 448 × 448 448 × 448 448×448,即网络输入: 448 × 448 × 3 448 × 448 × 3 448×448×3
  • 对图像进行划分,共划分 S × S S×S S×S 个方格。论文中 S=7, 即共划分 7 × 7 = 49 7 × 7 = 49 7×7=49 个方格,每个方格包含 64 × 64 64 × 64 64×64 个像素点。
  • 针对每个方格:生成 C 个类别目标的概率分数(表示该方格是否存在该目标的概率),用 p 表示;生成 B 个检测框,每个检测框共 5 个参数,即 ( x , y , w , h , c ) (x,y,w,h,c) (x,y,w,h,c)

每个方格输出向量如下图所示。因此针对每个方格,共有参数量为 ( C + B × 5 ) (C+B×5) (C+B×5) 个。本论文中,即 ( 20 + 2 × 5 ) = 30 (20+2×5)=30 (20+2×5)=30 个。
在这里插入图片描述

  • 针对一张图片,最终输出向量: S × S × ( C + B × 5 ) S×S×(C+B×5) S×S×(C+B×5)。本论文中即 7 × 7 × 30 = 1470 7 × 7 × 30 = 1470 7×7×30=1470
  • 对输出向量进行后处理,得到最终预测结果。

3. 网络结构

 1. 网络结构如下所示。输入: 448 × 448 × 3 448×448×3 448×448×3,输出: 7 × 7 × 30 7×7×30 7×7×30

在这里插入图片描述
 2. 网络详解:
 (1) YOLO 主要是建立一个 CNN 网络生成预测 7 × 7 × 1024 7×7×1024 7×7×1024 的张量 。

 (2) 然后使用两个全连接层执行线性回归,以进行 7 × 7 × 2 7×7×2 7×7×2 边界框预测。将具有高置信度得分(大于 0.25)的结果作为最终预测。

 (3) 在 3 × 3 3×3 3×3 的卷积后通常会接一个通道数更低 1 × 1 1×1 1×1 的卷积,这种方式既降低了计算量,同时也提升了模型的非线性能力。

 (4) 除了最后一层使用了线性激活函数外,其余层的激活函数为 Leaky ReLU 。

 (5) 在训练中使用了 Dropout 与数据增强的方法来防止过拟合。

 (6) 对于最后一个卷积层,它输出一个形状为 (7, 7, 1024) 的张量。 然后张量展开。使用 2 个全连接层作为一种线性回归的形式,它输出 1470 个参数,然后 reshape 为 (7, 7, 30) 。

在这里插入图片描述

4. 损失函数

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

在这里插入图片描述

 2. YOLOv1 中损失函数共包含三项,即:(1) 坐标预测损失、(2) 置信度预测损失、(3) 类别预测损失。三个损失函数都使用了均方误差。计算公式如下所示:

在这里插入图片描述

在这里插入图片描述

问题:为什么坐标损失中的 w w w h h h 要加根号?
在这里插入图片描述
在上图中,大框和小框的 bounding box 和 ground truth 都是差了一点,但对于实际预测来讲,大框(大目标)差的这一点也许没啥事儿,而小框(小目标)差的这一点可能就会导致bounding box的方框和目标差了很远。而如果还是使用第一项那样直接算平方和误差,就相当于把大框和小框一视同仁了,这样显然不合理。而如果使用开根号处理,就会一定程度上改善这一问题 。
在这里插入图片描述

 3. 损失函数解释:
 (1) 特殊符号含义:

在这里插入图片描述

 (2) 坐标损失:

在这里插入图片描述

 (3) 置信度损失:

在这里插入图片描述

 (4) 分类损失:

在这里插入图片描述

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

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

相关文章

【AI创作组】Matlab中进行符号计算

提示:代码一定要自己运行过才算数…… 1. 符号计算工具箱介绍 1.1 工具箱功能 MATLAB的符号计算工具箱,即Symbolic Math Toolbox,是一套强大的数学软件工具,它使得MATLAB具备了符号运算的能力。该工具箱提供了一系列函数,用于求解、绘制和操作符号数学方程。用户可以直接…

深度学习之表示学习 - 半监督解释因果关系篇

序言 在深度学习的广阔领域中,表示学习( Representation Learning \text{Representation Learning} Representation Learning)与半监督学习( Semi-supervised Learning \text{Semi-supervised Learning} Semi-supervised Learnin…

C++:deque的底层原理

一、deque是是双端队列。 deque(双端队列):是一种双开口的"连续"空间的数据结构,双开口的含义是:可以在头尾两端进行插入和删除操作,且时间复杂度为O(1),与vector比较,头插效率高,不…

spring里面内置的非常实用的工具

一 、请求数据记录 Spring Boot提供了一个内置的日志记录解决方案,通过 AbstractRequestLoggingFilter 可以记录请求的详细信息。 AbstractRequestLoggingFilter 有两个不同的实现类,我们常用的是 CommonsRequestLoggingFilter。 通过 CommonsRequestL…

AlDente Pro for Mac电池健康保护工具

AlDente Pro for Mac 是一款适用于 Mac 的实用电池健康保护工具。以下是它的主要特点和优势: 软件下载地址 一、保护电池寿命的原理 锂离子和聚合物电池(如 Mac 笔记本中的电池)在 30% 到 80% 之间运行时使用寿命最长。始终将电池电量保持…

网关基础知识

1.网关路由 网关:就是网络的关口,负责请求的路由、转发、身份校验。 在SpringCloud中网关的实现包括两种: 1.Spring Cloud Gateway Spring官方出品 基于WebFlux响应式编程 无需调优即可获得优异性能 2.Netflix Zuul Netflix出品 基于Ser…

快递物流短信API接口代码

官网:快递鸟 API参数 用户信息类 一.短信模版 1.接口说明 使用快递鸟短信功能时,预先设置好短信模板和对应的发送规则,快递鸟短信API将根据设置的好的模板和规则,进行短信的发送和反馈。 (1)仅支持Json格式。 (2)请求指令810…

vulnhub(13):Digitalworld.local JOY(ftp 的未授权文件读写漏洞、文件覆盖提权)

端口 nmap主机发现 nmap -sn 192.168.72.0/24 ​ Nmap scan report for 192.168.72.171 Host is up (0.00020s latency). ​ 171是新出现的机器,他就是靶机 nmap端口扫描 nmap -Pn 192.168.72.171 -p- --min-rate 10000 -oA nmap/scan 扫描开放端口保存到 nmap/sca…

Python | Leetcode Python题解之第435题无重叠区间

题目: 题解: class Solution:def eraseOverlapIntervals(self, intervals: List[List[int]]) -> int:if not intervals:return 0intervals.sort(keylambda x: x[1])n len(intervals)right intervals[0][1]ans 1for i in range(1, n):if intervals…

网络资源模板--Android Studio 垃圾分类App

目录 一、项目演示 二、项目测试环境 三、项目详情 四、完整的项目源码 一、项目演示 网络资源模板--垃圾分类App 二、项目测试环境 三、项目详情 登陆注册 设置点击监听器:当用户点击注册按钮时触发事件。获取用户输入:从输入框获取用户名和密码&a…

springboot 接口接收及响应xml数据

1.实体类 import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlRootElement;XmlRootElement XmlAccessorType(XmlAccessType.FIELD) // …

【SpringBoot详细教程】-03-整合Junit【持续更新】

JUnit是一个用于Java编程语言的测试框架。它支持自动化单元测试,可以帮助开发人员测试代码的正确性和健壮性。JUnit提供了一组注解、断言和测试运行器,可以方便地编写和运行单元测试。 SpringBoot 整合 junit 特别简单,分为以下三步完成 在…

网络安全等级保护 | 规范企业网络系统安全使用 | 天锐股份助力等保制度落地

在当今数字化高速发展的时代,网络安全对于企业的重要性日益凸显。而近年来,数据泄露、网络攻击等安全事件频发,给企业和个人带来了前所未有的挑战。在这一背景下,网络安全等级保护制度(简称“等保”)作为国…

经颅磁刺激技术,脑科学研究——精神患者治疗方案

经颅磁刺激(Transcranial Magnetic Stimulation ,TMS)技术是一种利用脉冲磁场作用于中枢神经系统(主要是大脑),改变皮层神经细胞的膜电位,使之产生感应电流,影响脑内代谢和神经电活动…

Qt QFileDialog使用方法

头文件 #include <QFileDialog> 成员名称返回值说明getExistingDirectoryQString返回用户选中的文件夹路径getExistingDirectoryUrlQUrl与QFileDialog::getExistingDirectory()的主要区别来自于为用户提供的选择远程目录的能力getOpenFileNameQString返回用户选中的文件…

基于深度学习的树叶识别系统的设计与实现(pyqt5 python3.9 yolov8 10000张数据集)

&#x1f497;博主介绍&#x1f497;&#xff1a;✌在职Java研发工程师、专注于程序设计、源码分享、技术交流、专注于Java技术领域和毕业设计✌ 温馨提示&#xff1a;文末有 CSDN 平台官方提供的老师 Wechat / QQ 名片 :) Java精品实战案例《700套》 2025最新毕业设计选题推荐…

解锁微软录屏工具:2024 开启屏幕录制新时代

现在快节奏的生活环境&#xff0c;录屏工具已成为不可或缺的记录利器&#xff0c;其应用范围广泛。若你正对windows自带录屏功能充满好奇&#xff0c;渴望掌握其操作方法&#xff0c;或是寻求更多专业、便捷的录屏软件选项&#xff0c;那么就请继续阅读吧。 1.福昕录屏大师 链…

Figma 中要放大并下载 UI 设计中的图标

Figma 中要放大并下载 UI 设计中的图标&#xff0c;通常可以通过以下几步操作来实现&#xff1a; 1. 放大图标&#xff1a; 打开 Figma 文件并找到你想要放大的图标。 选中图标&#xff0c;点击界面右上角的 “缩放”工具&#xff08;放大镜图标&#xff09;&#xff0…

Note_XML学习笔记

XML学习笔记 1. XML 教程 经常见到XML学习一下。由于是学到中间才想起记笔记&#xff0c;之前的就简略回顾一下&#xff1a; 1&#xff09;XML是数据存储的一种语言载体&#xff1b; 2&#xff09;只负责存储&#xff0c;不负责显示&#xff1b; 3&#xff09;和HTML语言的风…

华为认证HCIA篇--网络通信基础

大家好呀&#xff01;我是reload。今天来带大家学习一下华为认证ia篇的网络通信基础部分&#xff0c;偏重一些基础的认识和概念性的东西。如果对网络通信熟悉的小伙伴可以选择跳过&#xff0c;如果是新手或小白的话建议还是看一看&#xff0c;先有个印象&#xff0c;好为后续的…