yolo 学习1(23.10.25)

122 阅读6分钟

1 创造者

YOLO(You Only Look Once)的创造者是美国约瑟夫·雷德蒙德(Joseph Redmon)和阿里·法尔哈坎(Ali Farhadi)。他们在2016年共同发布了YOLO的第一个版本,该算法以其高效的实时目标检测而受到广泛关注。YOLO的设计理念是将目标检测任务转化为单个神经网络的回归问题,从而实现了实时性能和较高的准确率。YOLO算法的不断改进和演进也推出了多个版本,如YOLOv2、YOLOv3等。这些版本都在计算效率和准确率之间取得了平衡,使得YOLO成为了目标检测领域的重要算法之一。

2 前向推断

前向推断(forward inference)是指在机器学习或人工智能模型中,通过输入数据并经过一系列计算得到输出结果的过程。在前向推断过程中,模型会根据已有的参数和权重对输入数据进行处理,并不断更新计算结果,直到得到最终的输出结果。

在深度学习中,前向推断通常是指神经网络模型的正向传播过程。在正向传播过程中,神经网络会从输入层开始逐层计算,每一层都会根据上一层的输出和本层的权重计算出新的输出,并将其传递到下一层,直到最终得到输出层的结果。这个过程可以看作是一种函数映射,将输入数据映射为输出结果。

yolo中前向推断的含义

YOLO(You Only Look Once)是一种目标检测算法,它的前向推断是指在给定输入图像时,通过模型进行前向计算以预测图像中存在的目标及其位置。

YOLO的前向推断包括以下步骤:

  1. 输入图像:将待检测的图像作为输入传递给模型。
  2. 特征提取:通过卷积神经网络(CNN)对输入图像进行特征提取,以捕捉图像中的语义信息。
  3. 特征处理:将提取到的特征图进行进一步处理,以获取更高级别的特征表示。
  4. 目标预测:将处理后的特征图分为网格,并为每个网格预测目标的类别概率和边界框信息。每个网格通常负责检测一个或多个目标。
  5. 边界框调整:根据预测的边界框信息,调整其位置和大小,以更准确地匹配目标的位置。
  6. 非最大抑制:对于同一目标可能被多个网格检测到的情况,采用非最大抑制(NMS)方法来消除重叠的边界框,只保留置信度最高的边界框。
  7. 输出结果:最终输出检测到的目标及其位置信息。

通过YOLO的前向推断,可以在一次前向计算中快速、准确地检测图像中的目标。相较于传统的目标检测算法,YOLO具有较高的实时性能,适用于需要快速处理大量图像的应用场景,如实时视频分析、自动驾驶等。

3 指的是 RGB 3个通道,经过卷积层,池化层,3*3 卷积层,3*3 池化层 

输入。。。 输出。。。包括所有的预测框位置坐标,置信度,类别标签。

条件概率乘以这个条件本身的概率就是全概率。

98个**(bounding box)** 属于20个类别的概率是多少。

预测阶段才会有,非极大值抑制,训练阶段没有。

3 训练阶段:反向传播:

反向传播(Backpropagation)是神经网络中用于训练模型的一种常用优化算法。它通过计算损失函数对网络参数的梯度,从输出层向输入层逐层反向传播误差信号,并更新网络参数以最小化损失函数。

下面是反向传播的基本步骤:

  1. 前向传播:将输入数据通过神经网络进行正向传播,计算出网络的输出结果。

  2. 计算损失函数:将网络的输出结果与真实标签进行比较,计算出损失函数的值,用于衡量网络预测的准确程度。

  3. 反向传播误差:从输出层开始,计算每个神经元的误差信号。误差信号可以通过求导链式法则来计算,即将损失函数对当前层的输出求导,然后乘以当前层的激活函数对输入的导数。

  4. 更新权重:根据误差信号和梯度下降法则,逐层更新网络参数。通过计算当前层的梯度,乘以学习率,然后用该梯度更新当前层的权重。

  5. 重复迭代:重复执行前向传播和反向传播的步骤,直到达到预定的停止条件(如达到最大迭代次数或损失函数达到阈值)。

反向传播算法的关键在于通过链式法则将误差信号从输出层传播到输入层,从而计算出每个参数的梯度。这使得神经网络能够根据训练数据自动调整权重,不断优化模型的性能。反向传播算法的有效性和高效性使得它成为了深度学习中广泛使用的优化算法之一。

yolo 中的反向传播:

在YOLO(You Only Look Once)算法中,反向传播(Backpropagation)是用于训练模型的一种常用优化算法。YOLO网络结构包含了卷积层、池化层、全连接层等多个组成部分,其中卷积层和全连接层的参数是通过反向传播算法进行更新的。

在YOLO中,反向传播的具体实现步骤如下:

  1. 前向传播:将输入图像通过YOLO网络进行正向传播,得到网络的输出结果。

  2. 计算损失函数:将网络的输出结果与真实标签进行比较,计算出损失函数的值,用于衡量网络预测的准确程度。

  3. 反向传播误差:从输出层开始,计算每个神经元的误差信号。误差信号可以通过求导链式法则来计算,即将损失函数对当前层的输出求导,然后乘以当前层的激活函数对输入的导数。

  4. 更新权重:根据误差信号和梯度下降法则,逐层更新网络参数。通过计算当前层的梯度,乘以学习率,然后用该梯度更新当前层的权重。

  5. 重复迭代:重复执行前向传播和反向传播的步骤,直到达到预定的停止条件(如达到最大迭代次数或损失函数达到阈值)。

在YOLO中,反向传播的实现与其他神经网络模型类似,但由于YOLO采用了特殊的网络结构和损失函数,因此需要进行相应的修改和优化。例如,YOLO采用了多尺度检测和多标签分类的方法,需要在反向传播中对不同尺度和标签进行处理。此外,YOLO还使用了边界框回归和置信度预测等技术,需要在反向传播中对这些技术进行相应的计算和更新。

带上标的是标注值。不带上标的是预测值,加根号使得小框更加敏感,就是造成的损失函数更大。