YOLO系列理论解读 v1 v2 v3

YOLO系列理论解读

YOLO v1(You Only Look Once:Unified, Real-Time Object Detection)

YOLO v1实现步骤

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

通常情况下将S取值为S=7划分为7x7的一个区域。

在这里插入图片描述

2)每个网格要预测B个bounding box,每个bounding box除了要预测位置之外,还要附带预测一个confidence值。每个网格还要预测c个类别的分数。

在这里插入图片描述
通常情况下的B=2使用PASCAL VOC进行训练类别数为20说明C=20

在这里插入图片描述
论文中提到了这么一段话。

For evaluating YOLO on PASCAL VOC, we use S = 7, B = 2. PASCAL VOC has 20 labelled classes so C = 20. Our final prediction is a 7 × 7 × 30 tensor.

说明了最后得到的预测参数的值是7x7x30个参数值,这和我们的网络结构之间有很大的关系。
在这里插入图片描述
我们将输入的448x448像素的三通道图片,经过设计的网络之后可以得到的是7x7x30的输出特征图。
在这里插入图片描述
因为论文中提到了B=2一个网格会给出两个边界框的预测值,共7x7=49个划分之后的网格

每一个1x1 x30个通道的网格的参数分布为 边界框1的4个坐标位置中心位置x,y与高度和宽度,边界框1的confidence 边界框2的4个坐标位置中心位置x,y与高度和宽度,边界框2的confidence C=20的每一个类别的预测分数,用通道长度30来进行表示。

在这里插入图片描述

Each bounding box consists of 5 predictions: x, y, w, h,
and confidence. The (x, y) coordinates represent the center
of the box relative to the bounds of the grid cell. The width
and height are predicted relative to the whole image. Finally
the confidence prediction represents the IOU between the
predicted box and any ground truth box.

其中给出的X Y的值是相对于中心点的相对值,而w和h是相对与图像大小的相对值。

在这里插入图片描述
下面给出了confidence的一个计算过程,若网格框中没有物体存在,将其定义为0(pr值)若有物体存在pr值定义为1 最后confidence = IOU X PR

we define confidence as Pr(Object) ∗ IOUtruthpred . If noobject exists in that cell, the confidence scores should bezero. Otherwise we want the confidence score to equal theintersection over union (IOU) between the predicted box and the ground truth

最后给出每一个类别概率的计算公式是怎样得到的:

在这里插入图片描述

再一次给出Yolo v1论文中的网络结构图。其中包括了与4096个神经元进行全连接的操作,之后在进行一个Reshape处理得到30x30 x7的输出结构

在这里插入图片描述

损失函数

yolo v1的损失函数个人感觉是及其复杂的,在论文中给出的函数表达形式为:

λ coord  ∑ i = 0 S 2 ∑ j = 0 B 1 i j obj  [ ( x i − x ^ i ) 2 + ( y i − y ^ i ) 2 ] + λ coord  ∑ i = 0 S 2 ∑ j = 0 B 1 i j obj  [ ( w i − w ^ i ) 2 + ( h i − h ^ i ) 2 ] + ∑ i = 0 S 2 ∑ j = 0 B 1 i j obj  ( C i − C ^ i ) 2 + λ noobj  ∑ i = 0 S 2 ∑ j = 0 B 1 i j n o o b j ( C i − C ^ i ) 2 + ∑ i = 0 S 2 1 i obj  ∑ c ∈ classes  ( p i ( c ) − p ^ i ( c ) ) 2 \begin{array}{l} \lambda_{\text {coord }} \sum_{i=0}^{S^{2}} \sum_{j=0}^{B} \mathbb{1}_{i j}^{\text {obj }}\left[\left(x_{i}-\hat{x}_{i}\right)^{2}+\left(y_{i}-\hat{y}_{i}\right)^{2}\right] \\ +\lambda_{\text {coord }} \sum_{i=0}^{S^{2}} \sum_{j=0}^{B} \mathbb{1}_{i j}^{\text {obj }}\left[\left(\sqrt{w_{i}}-\sqrt{\hat{w}_{i}}\right)^{2}+\left(\sqrt{h_{i}}-\sqrt{\hat{h}_{i}}\right)^{2}\right] \\ +\sum_{i=0}^{S^{2}} \sum_{j=0}^{B} \mathbb{1}_{i j}^{\text {obj }}\left(C_{i}-\hat{C}_{i}\right)^{2} \\ +\lambda_{\text {noobj }} \sum_{i=0}^{S^{2}} \sum_{j=0}^{B} \mathbb{1}_{i j}^{\mathrm{noobj}}\left(C_{i}-\hat{C}_{i}\right)^{2} \\ +\sum_{i=0}^{S^{2}} \mathbb{1}_{i}^{\text {obj }} \sum_{c \in \text { classes }}\left(p_{i}(c)-\hat{p}_{i}(c)\right)^{2} \end{array} λcoord i=0S2j=0B1ijobj [(xix^i)2+(yiy^i)2]+λcoord i=0S2j=0B1ijobj [(wi w^i )2+(hi h^i )2]+i=0S2j=0B1ijobj (CiC^i)2+λnoobj i=0S2j=0B1ijnoobj(CiC^i)2+i=0S21iobj c classes (pi(c)p^i(c))2

在这里插入图片描述

整个公式损失的计算采用的是误差平方和的形式来进行实现的即:预测值减去真实的标签值,在取平方

符号含义的说明:
在这里插入图片描述

在之前的机器学习中该符号也有一定的应用。

对于损失函数的定义包括了以下的三个部分:边界框损失,confidence损失和最后的分类损失三部分损失共同构成

存在问题

在这里插入图片描述
Yolo v1对小的集群目标的预测效果差,例如之前论文值提到的对图片中的较小的鸟群有较差的预测效果。

YOLO V2 (YOLO9000)

因为yolo v2可以检测出9000个类别的物体,也称为yolo9000

在这里插入图片描述
在当时的论文中可以看出yolov2的map值和计算速度都达到了当时最高的水准。

v2的改进

  1. Batch Normalization(引入了BN层)

提高了map值2%替代正则化的操作,同时也去除了dropout操作

Batch normalization leads to significant improvements in convergence while eliminating the need for other forms of regularization [7]. By adding batch normalization on all of the convolutional layers in YOLO we get more than 2% improvement in mAP. Batch normalization also helps regularize the model. With batch normalization we can remove dropout from the model without overfitting

  1. High Resolution Classifier(更高分辨率的分类器)
  2. Convolutional With Anchor Boxes.(使用锚框来进行预测)

增加了召回率

  1. Fine-Grained Features(结合更底层的特征信息)

将高层信息与相对低层的信息之间进行融合的操作。通过passthrough layer来进行实现的

passthrough layer将高层将13x13的结果与高层的特征图26x26x512进行一个结合的操作。
在这里插入图片描述
在通过PassThrough Layer (W/2, H/2, Cx4)时如图所示,高度和宽度会变为原来的一半,即26—13而通道数变为原来的4倍
在这里插入图片描述
中间连接有一个1x1的卷积层来进行通道的压缩与降维操作。

  1. Multi-Scale Training(采用多尺度的训练方法)

在这里插入图片描述

following multiples of 32: {320, 352, …, 608}. Thus the
smallest option is 320 × 320 and the largest is 608 × 608.
We resize the network to that dimension and continue training.

采用的全部的输入都是32的整数倍。

BackBone骨干网络

Yolo v2使用的网络架构为:Darknet-19作为其骨干网络(224x224的输入共19个卷积层)模型结构图。

在这里插入图片描述
不同之处在于YOLO v2使用的输入是448x448或32整数倍的一个输入。

网络结构:
在去掉backbone的最后一层卷积层的基础上,我们添加了三个3x3卷积核大小为1024的三个卷积层。
最后在接一个1x1的卷积层,输出的个数即为我们要检测的物体的类别数量。

输出的125是20个类别 4个坐标 一个confidence 使用5个锚框最后在x5

125 =(20+5) x 5

YOLO V3( An Incremental Improvement)

主干网络

Darknet-53:53层网络的特点通过卷积层替换之前的下采样层,使得检测的效果得到了提升。

在这里插入图片描述

其网络结构为:
在这里插入图片描述

2 + ( 1 × 2 ) + 1 + ( 2 × 2 ) + 1 + ( 8 × 2 ) + 1 + ( 8 × 2 ) + 1 + ( 4 × 2 ) + 1 = 53 \begin{array}{l} 2+ \\ (1 \times 2)+1+ \\ (2 \times 2)+1+ \\ (8 \times 2)+1+ \\ (8 \times 2)+1+ \\ (4 \times 2)+1=53 \end{array} 2+(1×2)+1+(2×2)+1+(8×2)+1+(8×2)+1+(4×2)+1=53

其中在网络结构这里论文中给出了锚框的一些设定的尺寸,并对得到的参数进行了解释。

On the COCO dataset the 9 clusters were:
(10×13),(16×30),(33×23),(30×61),(62×45),(59×119),(116 × 90),(156 × 198),(373 × 326).

N × N × [3 ∗ (4 + 1 + 80)] for the 4 bounding box offsets,
1 objectness prediction, and 80 class predictions.

首先有80个类别信息,4个位置信息和yolo中特有的一个confidence参数。
在这里插入图片描述
一个锚框就包括了85个参数信息。

在这里插入图片描述

目标边界框的预测

在这里插入图片描述

σ ( x ) = Sigmoid ⁡ ( x ) \sigma(x)=\operatorname{Sigmoid}(x) σ(x)=Sigmoid(x)

将预测的边界框中心限制在当前cell中。

与之前的FasterRCNN不同的是边界框的回归并不是基于锚框的而是相对与当前网格的左上角点的。

其中的tx ty tw th是预测所给出的坐标的参数信息。

b x = σ ( t x ) + c x b y = σ ( t y ) + c y b w = p w e t w b h = p h e t n \begin{array}{l} b_{x}=\sigma\left(t_{x}\right)+c_{x} \\ b_{y}=\sigma\left(t_{y}\right)+c_{y} \\ b_{w}=p_{w} e^{t_{w}} \\ b_{h}=p_{h} \mathrm{e}^{t_{n}} \end{array} bx=σ(tx)+cxby=σ(ty)+cybw=pwetwbh=phetn

从而得到最终预测的中心点的坐标和宽高值

损失函数

L ( o , c , O , C , l , g ) = λ 1 L conf  ( o , c ) + λ 2 L c l a ( O , C ) + λ 3 L l o c ( l , g ) L(o, c, O, C, l, g)=\lambda_{1} L_{\text {conf }}(o, c)+\lambda_{2} L_{c l a}(O, C)+\lambda_{3} L_{l o c}(l, g) L(o,c,O,C,l,g)=λ1Lconf (o,c)+λ2Lcla(O,C)+λ3Lloc(l,g)

λ 1 , λ 2 , λ 3 为平衡系数。 \lambda_{1}, \lambda_{2}, \lambda_{3}为平衡系数。 λ1,λ2,λ3为平衡系数。

损失函数同样包括了三个损失分别为:置信度损失,分类损失,定位损失。

  • 置信度损失使用的是二值交叉熵损失:

YOLOv3 predicts an objectness score for each bounding
box using logistic regression.This should be1if thebound-lng
g box prior overlaps a ground truth object by more than
any other bounding box prior. If the bounding box prior

Binary Cross Entropy

L conf  ( o , c ) = − ∑ i ( o i ln ⁡ ( c ^ i ) + ( 1 − o i ) ln ⁡ ( 1 − c ^ i ) ) N L_{\text {conf }}(o, c)=-\frac{\sum_{i}\left(o_{i} \ln \left(\hat{c}_{i}\right)+\left(1-o_{i}\right) \ln \left(1-\hat{c}_{i}\right)\right)}{N} Lconf (o,c)=Ni(oiln(c^i)+(1oi)ln(1c^i))

c ^ i = Sigmoid ⁡ ( c i ) \hat{c}_{i}=\operatorname{Sigmoid}\left(c_{i}\right) c^i=Sigmoid(ci)

其中oi,∈[0,1],表示预测目标边界框与真实目标边界框的IOU
c为预测值,ci,为c通过Sigmoid函数得到的预测置信度。N为正负样本个数。

  • 类别损失使用的是二值交叉熵损失:

L c l a ( O , C ) = − ∑ i ∈ posj  j cla  ( O i j ln ⁡ ( C ^ i j ) + ( 1 − O i j ) ln ⁡ ( 1 − C ^ i j ) ) N pos  C ^ i j = Sigmoid ⁡ ( C i j ) \begin{array}{c} L_{c l a}(O, C)=-\frac{\sum_{i \in \text { posj } j \text { cla }}\left(O_{i j} \ln \left(\hat{C}_{i j}\right)+\left(1-O_{i j}\right) \ln \left(1-\hat{C}_{i j}\right)\right)}{N_{\text {pos }}} \\ \hat{C}_{i j}=\operatorname{Sigmoid}\left(C_{i j}\right) \end{array} Lcla(O,C)=Npos i posj j cla (Oijln(C^ij)+(1Oij)ln(1C^ij))C^ij=Sigmoid(Cij)

其中Oij∈{0,1},表示预测目标边界框i中是否存在第j类目标存在则为1

Cij为预测值,Cij(hat)为Cij通过Sigmoid函数得到的目标概率

Npos为正样本个数

  • 定位损失

L loc  ( t , g ) = ∑ i ∈ pos  ( σ ( t x i ) − g ^ x i ) 2 + ( σ ( t y i ) − g ^ y i ) 2 + ( t w i − g ^ w i ) 2 + ( t h i − g ^ h i ) 2 N pos  L_{\text {loc }}(t, g)=\frac{\sum_{i \in \text { pos }}\left(\sigma\left(t_{x}^{i}\right)-\hat{g}_{x}^{i}\right)^{2}+\left(\sigma\left(t_{y}^{i}\right)-\hat{g}_{y}^{i}\right)^{2}+\left(t_{w}^{i}-\hat{g}_{w}^{i}\right)^{2}+\left(t_{h}^{i}-\hat{g}_{h}^{i}\right)^{2}}{N_{\text {pos }}} Lloc (t,g)=Npos i pos (σ(txi)g^xi)2+(σ(tyi)g^yi)2+(twig^wi)2+(thig^hi)2

g ^ x i = g x i − c x i g ^ y i = g y i − c y i g ^ w i = ln ⁡ ( g w i / p w i ) g ^ h i = ln ⁡ ( g h i / p h i ) \begin{array}{l} \hat{g}_{x}^{i}=g_{x}^{i}-c_{x}^{i} \\ \hat{g}_{y}^{i}=g_{y}^{i}-c_{y}^{i} \\ \hat{g}_{w}^{i}=\ln \left(g_{w}^{i} / p_{w}^{i}\right) \\ \hat{g}_{h}^{i}=\ln \left(g_{h}^{i} / p_{h}^{i}\right) \end{array} g^xi=gxicxig^yi=gyicyig^wi=ln(gwi/pwi)g^hi=ln(ghi/phi)
在这里插入图片描述

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

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

相关文章

服务器无法远程桌面连接,解决服务器进行无法远程桌面连接方法有哪些

当服务器无法建立远程桌面连接时,通常涉及多个层面的排查和修复。下面将详细列举一些专业的解决方法,以应对服务器远程桌面连接问题。 一、基础排查与验证 1. 确认网络连通性: - 使用ping命令检查客户端与服务器之间的网络连通性。 - …

数组(C语言)(详细过程!!!)

目录 数组的概念 一维数组 sizeof计算数组元素个数 二维数组 C99中的变⻓数组 数组的概念 数组是⼀组相同类型元素的集合。 数组分为⼀维数组和多维数组,多维数组⼀般比较多见的是二维数组。 从这个概念中我们就可以发现2个有价值的信息:(1)数…

什么是相对路径?什么是绝对路径?打包时路径怎么搞?

简单点说: 绝对路径:绝对路径是一个完整的路径,从根目录开始一直到目标文件或目录的路径。通常我们直接使用"/ "代表从根目录开始的目录路径。它提供了文件或目录在文件系统中的确切位置,与当前工作目录无关。绝对路径…

AMS深入浅出

目标: 1. 一、AMS启动流程 ActivityManagerService是 安卓10 以后,将AMS拆分出ActivityTaskManagerService。 1.1 启动入口 AMS是由SystemServer进程启动,在启动过程 startBootStripService,会启动AMS和ATMS服务。 SystemSe…

外卖跑腿APP开发指南:探索同城O2O系统源码技术要点

同城O2O系统作为这类服务的技术支撑平台,承载了外卖跑腿APP的开发与运行。本篇文章,小编将深入探讨同城O2O系统源码的技术要点,为外卖跑腿APP的开发提供指导与参考。 一、同城O2O系统概述 同城O2O系统是一种基于地理位置的线上到线下服务平台…

“论多源数据集成及应用”必过范文,突击2024软考高项论文

论文真题 在如今信息爆炸的时代,企业、组织和个人面临着大量的数据。这些数据来自不同的渠道和资源,包括传感器、社交媒体、销售记录等,它们各自具有不同的数据格式、分布和存储方式。因此如何收集、整理和清洗数据,以建立一个一…

阅读源码解析dynamic-datasource-spring-boot-starter中是如何动态切换数据源的

dynamic-datasource-spring-boot-starter是苞米豆提供的一个动态切换数据源的工具,可以帮助企业或者个人实现多数据源的切换,这里通过阅读源码的方式解析是如何动态的切换数据源的,采用的版本是3.5.1 源码解析 通过官方文档可以看到&#x…

vue 和 js写屏幕自适应

实现屏幕自适应的方式有很多种,可以通过插件本身提供的方法,可以通过flex布局等,今天我们来写写通过js实现屏幕自适应。 以下是在vue中实现的屏幕自适应 首先在data中定义一下屏幕的默认大小和缩放比例 然后在mounted中获取窗口的内置宽高&a…

揭秘软件测试秘籍:测试用例设计方法大揭秘

文章目录 引言一、等价类划分1.1 定义1.2 步骤1.3 等价类划分优点和缺点 二、边界值分析法2.1 定义2.2 步骤2.3 边界值分析法的优点和缺点 三、判定表法3.1 定义3.2 步骤3.3 判定表组成不分3.4 判定表的优点和缺点 四、正交实验法4.1 定义4.2 步骤4.3 正交实验法的优点和缺点 五…

基于Verilog表达的FSM状态机

基于Verilog表达的FSM状态机 1 FSM1.1 Intro1.2 Why FSM?1.3 How to do 在这里聚焦基于Verilog的三段式状态机编程; 1 FSM 1.1 Intro 状态机是一种代码实现功能的范式;一切皆可状态机; 状态机编程四要素:– 1.状态State&#…

基于51单片机的简易温控水杯恒温杯仿真设计( proteus仿真+程序+设计报告+讲解视频)

基于51单片机的简易温控水杯恒温杯仿真设计( proteus仿真程序设计报告讲解视频) 仿真图proteus7.8及以上 程序编译器:keil 4/keil 5 编程语言:C语言 设计编号:S0099 1. 主要功能: 基于51单片机的简易温控水杯恒温…

【课程总结】Day8(上):深度学习基本流程

前言 在上一篇课程《【课程总结】Day7:深度学习概述》中,我们了解到: 模型训练过程→本质上是固定w和b参数的过程;让模型更好→本质上就是让模型的损失值loss变小;让loss变小→本质上就是求loss函数的最小值&#xf…

史上最全盘点:一文告诉你什么是erp?erp系统厂商分别有哪些?

✅ 什么是ERP? ERP是Enterprise Resource Planning(企业资源计划)的简称,ERP是针对物资资源管理(物流)、人力资源管理(人流)、财务资源管理(资金流)、信息资…

webshell三巨头 综合分析(蚁剑,冰蝎,哥斯拉)

考点: 蚁剑,冰蝎,哥斯拉流量解密 存在3个shell 过滤器 http.request.full_uri contains "shell1.php" or http.response_for.uri contains "shell1.php" POST请求存在明文传输 ant 一般蚁剑执行命令 用垃圾字符在最开头填充 去掉垃圾字符直到可以正常bas…

【网络编程】TCP原理

TCP套接字中的I/O缓冲 write函数调用后并非立即传输数据,read函数调用后也非马上接收数据。write函数调用瞬间,数据将移至输出缓冲;read函数调用瞬间,从缓冲读取数据。 这些IO缓冲特性可整理如下。 口IO缓冲在每个TCP套接字中单…

VMware Ubuntu虚拟机上设置SSH连接,win直接用ssh连接虚拟机

要在Ubuntu虚拟机上设置SSH连接,并进行一些特定配置,您可以按照以下步骤进行操作: 步骤 1:安装OpenSSH Server 打开终端。 更新包列表并安装OpenSSH Server: sudo apt update sudo apt install openssh-server安装完…

cdh zookeeper报错 Canary 测试建立与 ZooKeeper 服务的连接或者客户端会话失败。

我一直纳闷这个是什么问题,搜索了半天没有结果,因为别人没有遇到过。后面我重新搭建了另一套cdh,然后看了一下默认的配置,然后更新上去才发现的。 这里面的clientPortAddress不要手动设置端口号。 别勾选通信验证 不要开启TLS/SS…

多模态大模型:识别和处理图片与视频的技术详解

多模态大模型:识别和处理图片与视频的技术详解 多模态大模型:识别和处理图片与视频的技术详解1. 什么是多模态大模型?2. 多模态大模型的基本架构3. 识别和处理图片3.1 图像特征提取3.2 图像分类与识别3.3 图像生成与增强 4. 识别和处理视频4.…

ABB控制主板3BHE024855R0101 UF C921 A101

控制板也是一种电路板,其运用的范围虽不如电路板来的宽泛,但却比普通的电路板来的智能、自动化。简单的说,能起到控制作用的电路板,才可称为控制板。大到厂家的自动化生产设备,小到孩童用的玩具遥控汽车,内…

.NET MAUI Sqlite程序应用-数据库配置(一)

项目名称:Ownership(权籍信息采集) 一、安装 NuGet 包 安装 sqlite-net-pcl 安装 SQLitePCLRawEx.bundle_green 二、创建多个表及相关字段 Models\OwnershipItem.cs using SQLite;namespace Ownership.Models {public class fa_rural_base//基础数据…