YOLO系列理论合集(YOLOv1~v3SPP)

news2024/12/30 1:41:13

前言:学习自霹雳吧啦Wz

YOLOV1

论文思想

1、将一幅图像分成SxS个网格(grid cell),如果某个object的中心落在这个网格中,则这个网格就负责预测这个object。

2、每个网格要预测B个bounding box,每个bounding box除了要预测位置(x,y,w,h)之外,还要附带预测一个confidence值。每个网格还要预测C个类别的分数。因此对于PASCAL VOC(20个类别),使用S = 7,B = 2,每个网格有5(x,y,w,h,confidence)x 2(两个网格)+20(类别)= 30个预测结果,因此一张图像有7 x 7 x 30个tensor。

4、预测位置x,y,w,h。x,y的位置是相对于网格而言的。w,h是相对于整张图像而言的。

5、置信度confidence。定义为,式中的第一项为bounding box内存在物体的概率,第二项为预测框和真实框的IOU。在测试时,每个物体的概率就为C个类别分数 x confidence,如下。

 网络结构

损失函数 

 存在的问题

1、当小目标聚集在一起的时候,检测效果很差,例如一群鸟。原因是,每个网格只预测一个类别。

2、当目标出现新的尺寸的时候,检测效果很差。

3、定位不准确,原因是,yolov1是直接预测目标的位置,而不是基于anchor预测目标的回归参数,因此yolov2中采用了基于anchor预测目标的回归参数的方法。(题外话,Faster-RCNN和SSD也是采用基于anchor预测目标的回归参数的方法)。

YOLOV2

对yolov1的改进之处

Batch Normalization

1、加速网络收敛,避免梯度消失爆炸。

2、有利于模型的正则化,可以移除dropout的使用。

3、提高模型的泛化能力, BN通过使每个层输入的分布标准化,有助于提高模型的泛化能力。

High Resolution Classifier

采用更高分辨率的分类器(448 x 448)。

Convolutional With Anchor Boxes

采用基于anchor偏移的预测方式,简化目标边界框预测的问题,使用网络更容易收敛。使用这种方式使预测的召回率更高。

Dimension Clusters

根据k-means聚类的方法去计算anchors的尺寸。

Direct location prediction

使用sigmoid函数对预测值tx,ty进行限制,使其不会飘出中心网格之外。公式如下。

 

Fine-Grained Features

底层特征下采样与高层特征相融合,如图。

 

下采样方式,如图。

 

Multi-Scale Training

我们每隔几次迭代就改变输入图像的大小。每10个epoch我们的网络随机选择一个新的图像尺寸大小。由于我们的模型将样本降为32的倍数,我们从32的倍数中提取:{320,352,…, 608},因此,最小的选项是320 x 320,最大的是608 x 608,我们将网络调整到该维度并继续训练

主干网络Darknet19(19个卷积层)

网络结构如下。

 YOLOV3

主干网络Darknet-53

1、网络结构如下。

 

2、Darknet-53与Resnet网络的对比如下。

 可以看到,虽然Darknet-53的网络深度比ResNet-152更深,但Darknet-53的检测速度是ResNet-152的两倍,并且检测精度相差无几。

优势原因:

第一,Darknet53使用池化层替代了卷积层,减少了信息的损失,因此检测精度较好。

第二,相对于Resnet152,Darknet53的卷积核个数更少,参数更少,因此计算量更少,检测速度更快。

yolov3的网络结构

目标边界框的预测

和yolov2是一样的。

 

正负样本的匹配

和SSD的匹配方式相同。

损失的计算

1、置信度损失

2、类别损失​​​​​​​

3、定位损失

YOLOV3SPP 

 Mosaic图像增强

优点:增加数据的多样性,增加目标个数,BN能一次性统计多张图片的参数。

SPP模块

结构如下。

SSP模块在yolov3网络中的位置如下。 

IOU DIOU CIOU 

IOU LOSS

优点:1.能够更好的反应重合程度  2.具有尺度不变性。
缺点:1.当不相交时loss为0。

DIOU LOSS

 

 

GIOU LOSS

 

Focal loss 

交叉熵损失

交叉熵损失:

 

则有 

 

Focal loss

1、主要思想

减小对于大多数容易分类的样本的loss,增大对于难以分类的样本的loss。

较难区分的样本是指:当检测目标为正样本时,目标概率却较小。或者,当检测目标为负样本时,目标概率却较大。

2、公式推理

  • 对于表达式可知,当样本较难区分时,Pt 较小。当样本较容易区分时,Pt 较大。
  • 因此我们要使Pt 较小时,loss较大,Pt 较大时,loss较小。    于是可以得到损失公式:
  • 加上平衡因子,得到最终的Focal loss公式: 

 

 3、注意的点

Focal loss容易受到噪声的干扰。

 

 

 

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

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

相关文章

【智慧交通项目实战】 《 OCR车牌检测与识别》(二):基于YOLO的车牌检测

👨‍💻作者简介: CSDN、阿里云人工智能领域博客专家,新星计划计算机视觉导师,百度飞桨PPDE,专注大数据与AI知识分享。✨公众号:GoAI的学习小屋 ,免费分享书籍、简历、导图等&#xf…

特瑞仕 | 常见传感器基础知识归纳

​传感器是将物理量转换为电信号的装置,广泛应用于各种领域,如物联网、工业自动化、医疗健康等。传感器技术的发展和应用越来越广泛,其基础知识也日益重要。本文将介绍常见传感器的基础知识,包括传感器的种类、工作原理、应用领域…

JMeter测试笔记(四):逻辑控制器

引言: 进行性能测试时,我们需要根据不同的情况来设置不同的执行流程,而逻辑控制器可以帮助我们实现这个目的。 在本文中,我们将深入了解JMeter中的逻辑控制器,包括简单控制器、循环控制器等,并学习如何正…

Goby 漏洞更新 |Bifrost 中间件 X-Requested-With 系统身份认证绕过漏洞(CVE-2022-39267)

漏洞名称:Bifrost 中间件 X-Requested-With 系统身份认证绕过漏洞(CVE-2022-39267) English Name:Bifrost X-Requested-With Authentication Bypass Vulnerability (CVE-2022-39267) CVSS core: 8.8 影响资产数:14 漏洞描述&a…

vector容器会了吗?一文搞定它

这里写目录标题 赋值操作容量和大小插入和删除操作数据存取互换容器vector预留空间 赋值操作 #include<iostream> #include <vector> using namespace std; void print(vector<int>& v) {for (vector<int>::iterator it v.begin(); it ! v.end()…

【ROS2】使用摄像头功能包 usb_cam

1、准备工作 因为本人使用VirtualBox虚拟机运行的ROS2&#xff0c;所以首先要让摄像头可以在虚拟机中运行 1.1 安装VirtualBox扩展包 1&#xff09;下载地址&#xff1a;https://www.virtualbox.org/wiki/Downloads&#xff0c;注意扩展包的版本要和虚拟机的版本匹配 2&…

《C++高级编程》读书笔记(七:内存管理)

1、参考引用 C高级编程&#xff08;第4版&#xff0c;C17标准&#xff09;马克葛瑞格尔 2、建议先看《21天学通C》 这本书入门&#xff0c;笔记链接如下 21天学通C读书笔记&#xff08;文章链接汇总&#xff09; 1. 使用动态内存 1.1 如何描绘内存 在本书中&#xff0c;内存单…

Tik Tok的海外娱乐公会(中亚、巴西、美国、台湾)怎么申请?

TIKTOK 公会海外市场潜力巨大 自 2016 年始&#xff0c;多家直播平台陆续拓展至东南亚、中东、俄罗斯、日韩、 欧美、拉美等地区 海外市场作为直播发展新蓝海&#xff0c;2021 年直播行业整体规模达百亿美元&#xff0c; 并维持高速增长 TikTok 直播市场空间 TikTok 已经成…

Python3+Selenium2完整的自动化测试实现之旅(七):完整的轻量级自动化框架实现

一、前言 前面系列Python3Selenium2自动化系列博文&#xff0c;陆陆续续总结了自动化环境最基础环境的搭建、IE和Chrome浏览器驱动配置、selenium下的webdriver模块提供的元素定位和操作鼠标、键盘、警示框、浏览器cookie、多窗口切换等场景的方法、web自动化测试框架、python面…

如何系统的学习robo-gym

提醒&#xff1a;以下内容仅做参考&#xff0c;可自行发散。在发布作品前&#xff0c;请把不需要的内容删掉。无论是初学者还是有经验的专业人士&#xff0c;在学习一门新的IT技术时&#xff0c;都需要采取一种系统性的学习方法。那么作为一名技术er&#xff0c;你是如何系统的…

OpenPCDet安装、使用方式及自定义数据集训练

OpenPCDet安装、使用方式及自定义数据集训练 个人博客 OpenPCDet安装 # 先根据自己的cuda版本&#xff0c;安装对应的spconv pip install spconv-cu113# 下载OpenPCDet并安装 git clone https://github.com/open-mmlab/OpenPCDet.git cd OpenPCDet pip install -r requireme…

Jetpack Compose 中安全地消耗Flow

Jetpack Compose 中安全地消耗Flow 以 Lifecycle 为周期的方式收集流是在 Android 上收集流的推荐方式。如果您正在使用 Jetpack Compose 构建 Android 应用程序&#xff0c;则使用 collectAsStateWithLifecycle API 可以在 Lifecycle 为周期的方式下从您的 UI 中收集流。 co…

利用Jmeter做接口测试(功能测试)全流程分析

利用Jmeter做接口测试怎么做呢&#xff1f;过程真的是超级简单。 明白了原理以后&#xff0c;把零碎的知识点填充进去就可以了。所以在学习的过程中&#xff0c;不管学什么&#xff0c;我一直都强调的是要循序渐进&#xff0c;和明白原理和逻辑。这篇文章就来介绍一下如何利用…

CP2102 USB转UART国产桥接芯片 DPU02

芯片概述: DPU02是一个高度集成的USB转UART的桥接控制器&#xff0c;该产品提供了一个简单的解决方案&#xff0c;可将RS-232设计更新为USB设计&#xff0c;并简化PCB组件空间。该DPU02包括了一个USB2.0全速功能控制器、USB收发器、振荡器、EEPROM和带有完整调制解调控制信号的…

通过宝塔辅助部署本地Python爬虫项目到阿里云轻量服务器

文章目录 一、 上传项目文件二、准备项目环境2.1、安装 requirements.txt 依赖2.2、安装 node.js 环境2.3、阿里云服务器MySQL 8.0开启远程连接2.4、本地远程连接MySQL测试2.4.1、navicat 远程连接测试2.4.2、python 代码连接测试 笔记&#xff1a;最近想把本地的一套爬虫项目给…

SpringBoot——启动源码(一)

SpringBootApplication注解 前言SpringBootApplicationSpringBootConfigurationEnableAutoConfigurationimport注解 ComponentScan 总结 前言 Springboot作为Spring的脚手架&#xff0c;其本质核心并不提供Spring核心功能&#xff0c;作用就是开发者快速构建&#xff0c;预置三…

怎么转换英文音频成文字?英文音频转文字app分享

两位朋友正在讨论如何将一段英文讲座的音频转换成文字&#xff0c;以便于学习和理解。 Sophia&#xff1a;嗨&#xff0c;我最近听了一段非常精彩的英文讲座&#xff0c;但是对于我来说&#xff0c;理解听到的内容有些困难。你知道有什么方法可以将英文音频转换成文字吗&#…

SpringBoot内置Logback日志的学习

一、日志级别 日志级别有TRACE,DEBUG,INFO,WARN,ERROR,FATAL,OFF。 TRACE级别最低 DEBUG 的级别低&#xff0c;当需要打印调试信息的话&#xff0c;就用这个级别&#xff0c;不建议在生产环境下使用。 INFO 的级别高一些&#xff0c;当一些重要的信息需要打印的时候&#x…

虹科多功能电流电压采集方案

01电流电压采集基础概念和应用 电流采集、电压采集、电能充电量测试和功率测试在不同领域都有着广泛的应用 ▲汽车电子&#xff1a;电池管理系统BMS、发动机控制系统、车身电子系统 ▲航空航天&#xff1a;飞行控制系统&#xff0c;航空电源管理系统、航空电子设备 ▲消费电…

如何学习和提升使用编程语言的能力? - 易智编译EaseEditing

学习编程语言并提升编程能力需要一定的学习方法和实践。以下是一些方法可以帮助你提升编程语言能力&#xff1a; 学习基本语法&#xff1a; 了解编程语言的基本语法和关键概念。可以通过阅读官方文档、教程、书籍或在线资源来学习。 编写代码&#xff1a; 编写实际的代码是提…