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

前言:学习自霹雳吧啦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容易受到噪声的干扰。

 

 

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基于NE555芯片的简单延时电路和方波信号发生器

简单延时电路 NE555芯片是一种经典的计时器集成电路,常用于电子设计中的定时和延时功能。下面是一个简单的NE555延时电路的详细分析和讲解: NE555芯片是一个多功能的集成电路,主要由比较器、RS触发器、RS锁存器以及输出驱动器等组成。它可以工…

Mysql进阶【3】论述Mysql优化

1.通过explain查看sql的详细信息 Mysql的sql优化企业里边主要是对慢sql进行优化,对语句进行优化,对索引进行优化 通过explain查看sql的详细信息,并且分析sql语句存在的问题,比如有没有使用到索引、使用了索引还是慢是不是索引设…

机器学习笔记 - EANet 外部注意论文简读及代码实现

一、论文简述 论文作者提出了一种新的轻量级注意力机制,称之为外部注意力。如图所示,计算自注意力需要首先通过计算自查询向量和自关键字向量之间的仿射关系来计算注意力图,然后通过用该注意力图加权自值向量来生成新的特征图。外部关注的作用…

智慧加油站解决方案,提高加油区和卸油区的安全性和效率

英码科技智慧加油站解决方案是一个综合应用了AI智能算法的视觉分析方案,旨在提高加油区和卸油区的安全性和效率。 加油区算法: 吸烟检测:通过AI算法分析视频流,检测是否有人在加油区域吸烟,以防止火灾风险。 打电话…

STM32开发——串口通讯(非中断+中断)

目录 1.串口简介 2.非中断接收发送字符 3.中断接收字符 1.串口简介 通过中断的方法接受串口工具发送的字符串,并将其发送回串口工具。 串口发送/接收函数: HAL_UART_Transmit(); 串口发送数据,使用超时管理机制HAL_UART_Receive(); 串口…

案例26:基于Springboot校园社团管理系统开题报告

博主介绍:✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专…

苹果MacOS系统傻瓜式本地部署AI绘画Stable Diffusion教程

Stable Diffusion的部署对小白来说非常麻烦,特别是又不懂技术的人。今天分享两个一键傻瓜式安装包,对小白来说非常有用。下面两个任选一个安装就可以。 一、DiffusionBee 简单介绍 DiffusionBee是基于stable diffusion的一个安装包,有图形…

python文字转语音(pyttsx3+flask)

提示:文章结尾有全部代码 目录 前言一、Flaskpyttsx基本使用Flask导入Flask框架配置基础环境初始Flask代码 pyttsx3库基本使用导入pyttsx3初始化pyttsx3文字转语音运行 二、具体实现1.引入库 总结 前言 本文主要讲解如何用python的pyttsx3库flask框架,手…

有了IP地址,还需要MAC地址嘛?二选一可否?

概要 在计算机网络中,IP地址和MAC地址是两个最基本的概念。IP地址在互联网中是用于标识主机的逻辑地址,而MAC地址则是用于标识网卡的物理地址。虽然它们都是用于标识一个设备的地址,但是它们的作用和使用场景是不同的。 IP地址是在网络层&am…

数据结构之树与二叉树——算法与数据结构入门笔记(五)

本文是算法与数据结构的学习笔记第五篇,将持续更新,欢迎小伙伴们阅读学习。有不懂的或错误的地方,欢迎交流 引言 前面章节介绍的都是线性存储的数据结构,包括数组、链表、栈、队列。本节带大家学习一种非线性存储的数据结构&…

chatgpt赋能python:Python分词:从原理到实践

Python分词:从原理到实践 分词是自然语言处理中的关键步骤之一,它是指将一句话或一段文本分成若干个词语(token)并进行标注。Python作为一种非常流行的编程语言,具备强大的文本处理能力,而分词也是它的强项…

chatgpt赋能python:Python如何切换中文

Python 如何切换中文 Python 是一种广泛使用的编程语言,被用于多种目的,包括数据分析、机器学习、Web 应用程序等。在使用 Python 进行开发时,需要处理不同的语言,其中中文也是包括在内的。对于需要切换中文的情况,本…

学生考试作弊检测系统 yolov8

学生考试作弊检测系统采用yolov8网络模型人工智能技术,学生考试作弊检测系统过在考场中安装监控设备,对学生的作弊行为进行实时监测。当学生出现作弊行为时,学生考试作弊检测系统将自动识别并记录信息。YOLOv8 算法的核心特性和改动可以归结为…

关于数据生成二维码保存和解密删除二维码

文章目录 前言一、pom配置依赖二、文件引入1.BufferedImageLuminanceSource2.QRCodeUtil3.MyPicConfig4.UploadUtils三、测试前言 所需文件: MyPicConfig 主要解决上传图片实时刷新BufferedImageLuminanceSource 算法文件QRCodeUtil 生成二维码工具类UploadUtils 主要解决上传…

软考A计划-系统架构师-官方考试指定教程-(13/15)

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例 👉关于作者 专注于Android/Unity和各种游戏开发技巧,以及各种资源分享&am…

【Java基础学习打卡03】计算机中数据的表示、存储与处理

目录 前言一、数据的表示1.数据与信息2.计算机中的数据3.计算机中数据的单位 二、数据的存储三、数据的处理1.进位计数值2.进制间转换 四、字符编码总结 前言 本小节主要介绍在计算机中数据的表示、存储与处理。要知道计算机内部使用二进制数据,也就是0和1组成的数…

2.3 YARN伪分布式集群搭建

任务目的 重点掌握 YARN 集群的相关配置学会启动和关闭 YARN 集群的两种方式能够使用 jps 命令查看进程的启动情况能够通过 UI 查看 YARN 集群的运行状态任务清单 任务1:YARN 集群主要配置文件讲解任务2:YARN 集群测试任务步骤 任务1:YARN 集群主要配置文件讲解 1.1 配置环…

【新版】系统架构设计师 - 计算机系统基础知识

个人总结,仅供参考,欢迎加好友一起讨论 文章目录 架构 - 计算机系统基础知识考点摘要计算机系统计算机硬件组成浮点数Flynn分类法CISC与RISC流水线技术超标量流水线存储系统层次化存储结构CacheCache的命中率Cache的页面淘汰主存编址磁盘管理&#xff08…

Linux 信号

文章目录 1. 信号1.1 前言1.2 信号的位置1.3 接口1.3.1 sigset_t1.3.2 信号集操作接口1.3.3 signal1.3.4 sigprocmask1.3.5 sigpending 2. 信号的处理2.1 内核态和用户态2.2 信号的监测和处理 1. 信号 1.1 前言 在 Linux 中,信号是一种用于进程之间的通信机制&…

地震勘探基础(十一)之水平叠加处理

水平叠加处理 地震资料经过预处理,静校正,反褶积,速度分析和动校正处理后就要进行水平叠加处理。地震水平叠加处理是地震常规处理的重要环节。 假设一个共中心点道集有三个地震道,经过速度分析和动校正以后,水平叠加…