YOLO V1学习笔记

news2024/11/27 12:36:17

为什么要学YOLOV1_哔哩哔哩_bilibili

这个视频讲解的很好,建议在看这个之前看看卷积神经网络,会对卷积后的结果理解更加深刻一点。

一 背景

目标检测分为单阶段和两阶段模型。

之前的目标检测DPM、R-CNN、Fast-RCNN、Faster-RCNN都是双阶段模型,也就是说需要先提取候选框,然后对各个候选框进行分类、甄别。双阶段模型没有全图信息,容易丢失很多信息。识别精度高,但是识别速度始终是技术瓶颈。

YOLO V1开启了单阶段模型的大潮流。

最开始对密集的、小物体的检测不很友好,但是随着技术的发展,现在在密集和小物体的检测方面已经相当友好。

map指标:

machine learning - How to calculate mAP for detection task for the PASCAL VOC Challenge? - Data Science Stack Exchange

二 优点

实时识别,yolo的识别非常快;

端到端;

它输入是一张完整的图片,前后文联系会比较紧密。

三 原理

1 预测阶段网络结构:

 把它当成黑盒模型就可以啦,只要明确输入和输出。

也可以把这整个过程当作对图像全局信息的编码,从人眼可得到的各种信息转变为方便网络学习的各种特征。

1.1 编码:得到boungding box

输入:一张图片(448*448*3) 

输出:7*7*30的信息张量(其中包含所有预测框的坐标、置信度和类别结果),其实就是boundingbox的信息。

接下来的工作就是对7*7*30的信息张量进行解码。(获取其中的分类+回归的信息)

1.2 解码:表示boungding box的7*7*30

1.3 为什么是7*7?

首先要将输入图片划分为S*S个grid cell。

这里的S=7,所以是7*7,一共是49个grid cell。

1.4 为什么是30?

30=20+(2*5)

每个gridcell包含两个bounding box,通过bounding box来拟合图片中的已标注目标。(yolo将这个任务视为一个监督学习任务,图片中的目标(ground truth)已经人工标注好了。)

也就是一共会有49*2=96个bounding box。

每个bounding box的中心点都在它所属于的grid cell里面。

bounding box的信息表示为(x,y,h,w,c)

(x,y)表示其中心点位置

(h,w)表示其高度和宽度

这四个值唯一确定bounding box

(c)表示置信度

已经标注好的数据集中分类目标有20类,所以20指的是每个grid cell分别对20个类别的概率。

5是bounding box的信息,如上所述,每个grid cell有两个bounding box。

所以每一个grid cell需要30=20+(2*5)个数字来描述。

其实7*7*30最后的表示就是上图。

 2 对bounding box 进行后处理

低置信度过滤、非极大值抑制NMS、去掉重复框(IOU),得到以下预测结果。

3 训练阶段的反向传播

yolo的损失函数:

YOLO1是什么_SiMoNe10010的博客-CSDN博客 

当grid cell有物体的时候,计算损失函数第1,2,3,5项,当grid里没有物体的时候计算第4项。

损失函数一共有5项:

1.中心点定位误差   

2.宽高定位误差  

3.confidence误差

4.不负责检测Bbox confidence误差   

5.负责grid cell 检测误差

首先的是中心坐标的损失函数,用了我们最熟悉的均方误差MSE,这个很好理解。(中心点定位误差)

然后是高和宽,没有简单的用MSE,而是用平方根的MSE,这是为什么呢?(宽高定位误差)

第一个原因是更容易优化,但是还有更重要的原因:

看下面的表格:

首先,我们只考虑var1和var2在0和1之间。当var1和var2都很小的时候,也即是w和h都很小,意味着这个物体很小,那么我们应该尽量放大一些损失函数,让模型在识别小物体的时候准确一点。当var1和var2都很大,意味着这个物体也很大,甚至可能已经布满整张图片了,这时我么可以减小一些损失函数,毕竟很大的物体不需要很高的精度。

一句话,使用平方根的MSE而不是MSE其实就是像让模型对小尺度的物体更敏感。或者说,对大的和小的物体同样敏感。

接下来的三项都使用了MSE,其实用交叉熵可能会更好

其中第4项是用来判断一个bounding box中究竟有没有物体的。

 

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

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

相关文章

Zeal下载文档慢的问题

1. 安装Zeal 官方下载网站: https://zealdocs.org/ 2. 安装文档(在线安装方式)(下载速度非常慢) Tools - Docsets Available中下载安装对应的文档 3. 安装文档(离线安装方式) ①下载文档…

按键精灵开发环境搭建

按键精灵是一个可用于编写自动化执行程序的软件,不仅可以用于PC端,也可以用于手机端,平台稳定,生态良好,开发快捷,是自动化软件开发必不可少的利器。 1. 下载软件 官网:按键精灵_按键精灵论坛…

【PWN · heap | Overlap | off-by-one】HITCON Trainging lab13

记录一道wiki学习overlap的题目 前言 通过overlap可以造成堆的重叠,进而通过堆的修改、访问等操作,劫持或泄露另一个堆的信息,如果堆上存在指针,而存在对指针的读写,就可以控制修改该指针,进行任意地址读/…

Redis Part2

Redis中如何的去存放一个Java对象? 直接存放Json类型即可,因为我们Json类型最终就是一个String类型。 Spring Boot整合Redis 三步骤完成SpringBoot对Redis数据库的整合 引入spring-boot-starter-data-redis依赖在application.yml中配置Redis信息注入Re…

Java自学第2课:Java语言基础知识要点

1 Java主类结构 任务:创建新项目名为item,包名为number,类名为first。 1.1 包声明 不指定包时,默认就是工程名,指定后,类文件可以分类了,是这意思吧。包就大概等于一个文件夹。而且在类文件中…

基于nodejs+vue网上鲜花销售系统

目 录 摘 要 I ABSTRACT II 目 录 II 第1章 绪论 1 1.1背景及意义 1 1.2 国内外研究概况 1 1.3 研究的内容 1 第2章 相关技术 3 2.1 nodejs简介 4 2.2 express框架介绍 6 2.4 MySQL数据库 4 第3章 系统分析 5 3.1 需求分析 5 3.2 系统可行性分析 5 3.2.1技术可行性:…

初识Java 17-1 反射

目录 反射的基本作用 Class对象 类字面量 泛型类的引用 cast()方法 本笔记参考自: 《On Java 中文版》 ||| 反射可以在程序运行时发现并使用对象的类型信息。 反射的存在使Java的编程不再局限于面向类型的操作。这一特性有利有弊,在深入Java之前&am…

【前端笔记】ant-design-vue 3.x使用modal.method()自定义content内容小记

在一次编写业务代码时,碰到了一种既想要Modal.success样式,有想要定制其content内容的情况。 大部分情况下,使用Modal.method()这种方式时,可能content内容固定都是字符串,那如果想要做更高级的交互怎么办&#xff1f…

文件管理技巧:根据大小智能分类并移动至目标文件夹

在文件管理过程中,我们经常需要整理大量的文件。根据文件的大小,将其智能分类并移动至目标文件夹,可以帮助我们更高效地管理文件,提高工作效率。通过使用云炫文件管理器可以根据文件大小进行智能分类和移动至目标文件夹&#xff0…

【LeetCode】117. 填充每个节点的下一个右侧节点指针 II

117. 填充每个节点的下一个右侧节点指针 II 难度:中等 题目 给定一个二叉树: struct Node {int val;Node *left;Node *right;Node *next; }填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点&#xff0c…

【Linux】centos7安装配置及Linux常用命令

目录 一.Centos安装与配置 1.1.创建 1.2.安装配置CentOS 7实操 二.Linux常用命令 2.1.常用命令 2.2.三种模式 三.换源处理(切换国内源) 3.1.拍照备份 好啦今天就到这里哦!!希望能帮到你哦!!! 一.Centos安装与配…

Ubuntu重启后进入initramfs导致无法开机解决方案

今天,我的电脑意外关机,重新开机后打开了虚拟机。该虚拟机使用的是 Ubuntu 22.04 系统。但重启后,系统一直显示(initramfs):,导致无法正常启动。最后,在网上查找了一些解决方案,成功解决了这个开机问题。在…

高等数学教材重难点题型总结(九)多元函数微分法及其应用

第九章习题总结完毕,最难的应该就是方程组求解隐函数中的雅可比行列式了,其他方面无论是期末还是考研都不会出太多难题。对于多元极限和连续性质要理解得更深刻一些,而方向导数、梯度等公式,应该熟练掌握~ 1. 写出多元函数的定义域…

Linux 将Qt程序打包为AppImage包

前言 在 Linux 环境下,开发完 Qt 程序后,也需要制作为一个安装包或者可执行文件进行分发。这里介绍使用 linuxdeployqt 将 Qt 程序打包为 .AppImage 应用程序(类似于 Windows 的绿色免安装软件) 环境配置 配置 Qt 环境变量 这…

docker compose实现容器编排

Compose 使用的三个步骤: 使用 Dockerfile 定义应用程序的环境 使用 compose.yml 定义构成应用程序的服务,这样它们可以在隔离环境中一起运行 最后,执行 docker compose up 命令来启动并运行整个应用程序 为什么需要docker compose Dock…

VBA快速动态考勤统计

实例需求:某公司的上下班打卡记录如下所示,其中Table_In为上班打卡记录,Table_Out为下班打卡记录。 现在需要根据日期整理为如下格式的考勤表。需要注意如下几点: 每天的打卡次数不确定最后一列Total/Day统计该天的出勤总时长&a…

服务器数据恢复—Zfs文件系统下文件被误删除的如何恢复数据?

服务器故障: 一台zfs文件系统服务器,管理员误操作删除服务器上的数据。 服务器数据恢复过程: 1、将故障服务器所有磁盘编号后取出,硬件工程师检测所有硬盘后没有发现有磁盘存在硬件故障。以只读方式将全部磁盘做扇区级别的镜像备…

如何有效搭建产品帮助中心?看这一篇文就够了!

在当今快节奏的数字化时代,产品帮助中心成为了企业提供优质客户支持和增强用户体验的重要组成部分。无论是软件、电子设备还是在线服务,用户都期望能够快速找到解决问题的方法和获得详细的产品指导。因此,搭建一个高效且易于使用的产品帮助中…

Canvas绘制简易雨滴碰撞效果

实现会动的图形&#xff0c;向下播放多张静态的图片。一秒内要大于屏幕刷新的帧数(60) 也就是每隔1/60s执行一次函数在每次绘制的正方形上添加一个背景色为白色蒙板。 效果图 源代码 <!DOCTYPE html> <html lang"en"><head><meta charset"…