YOLO

YOLO(You Only Look Once) 是一种目标检测算法,其网络结构主要由卷积层、池化层、全连接层和特定设计的输出层组成。以下是 YOLO 中常见的层类型:

  1. 卷积层(Convolutional Layer) :YOLO 网络中包含多个卷积层,用于从输入图像中提取特征。这些卷积层通常采用较小的卷积核和步长,以逐渐减小特征图的空间尺寸。
  2. 池化层(Pooling Layer) :池化层用于降低特征图的空间维度,同时保留最重要的特征。YOLO 中通常使用最大池化层来实现这一功能。
  3. 全连接层(Fully Connected Layer):YOLO 的输出层之前可能包含一些全连接层,用于将卷积层输出的特征图转换为向量形式,以便后续进行目标检测。
  4. YOLO 输出层:YOLO 的输出层是该算法的关键所在。它将卷积层的输出转换为目标检测结果。YOLO 输出层通常由卷积层和特定设计的层组成,其中包括:
  5. 卷积层:负责提取特征并生成检测结果。
  6. 网格分割层(Grid Division Layer):将输入图像分割成固定大小的网格。
  7. 预测边界框参数层(Bounding Box Prediction Layer):用于预测每个网格单元内的目标边界框的位置和大小。
  8. 类别预测层(Class Prediction Layer):用于预测每个网格单元内目标的类别。
  9. 置信度预测层(Confidence Prediction Layer):用于预测每个边界框的置信度,即该边界框内是否包含目标以及预测的准确度。
  10. 非极大值抑制(Non-maximum suppression,NMS)层:用于筛选检测结果并消除重叠的边界框,以获得最终的目标检测结果。

这些层共同构成了 YOLO 的网络结构,并使其能够在单次前向传递中实现高效的目标检测。

NMS-非极大值抑制

NMS 的基本思想是通过一系列步骤筛选出最优的边界框:

  • 置信度排序:首先,根据每个边界框的置信度得分对所有检测结果进行排序,通常置信度越高表示检测到目标的可能性越大。
  • 选择最高置信度的边界框:从排好序的边界框列表中选择置信度最高的边界框,将其添加到最终的输出列表中。
  • 计算重叠面积:对于剩余的边界框,计算它们与已选择的边界框的重叠面积。
  • 移除重叠边界框:对于与已选择的边界框重叠面积高于某个阈值的边界框,将其从候选列表中移除。
  • 重复步骤 2-4:重复执行上述步骤,直到所有的边界框都被处理。

训练部分

Responsive Image

006-YOLO原理详解-20240402

Responsive Image

006-YOLO原理详解-20240402-3

每次训练过后都会有个 pt 文件用于保存本次训练模型的参数,训练迭代次数完成以后会有一个最好的. best 的模型参数

Responsive Image

006-YOLO原理详解-20240402-1

检测部分

Responsive Image

006-YOLO原理详解-20240402-2