YOLO (You-Look-Only-Once) 算法

黎 浩然/ 23 9 月, 2023/ 机器学习/MACHINELEARNING, 目标检测/OBJECTDETECTION/ 0 comments

YOLO(You Only Look Once)是一种实时目标检测算法,可以在单个网络传递中同时进行目标检测和分类。

训练集的构建

  1. 定义类别和背景: 如果我们要检测的目标有 3 个类别: 行人、汽车和摩托车,那么我们需要定义这些类别,并明确有一个背景类。
  2. 输出定义: 如果我们使用两个锚框(anchor boxes),并使用 3 × 3 的网格,那么输出 y 的维度将是 3 × 3 × 2 × 8。其中 8 是 5 × Pc 和边界框的 4 个坐标加上类别的数量 3。所以总体输出维度是 3 × 3 × 16。
  3. 目标向量: 对于每个网格单元,我们需要定义一个目标向量 y。如果网格中没有目标,则所有的 Pc 都为 0,其余值为不关心的值。如果网格中有目标,则相应的锚框的 Pc 为 1,其余值为目标的边界框坐标和类别。

预测

  1. 网络输出: 神经网络会输出一个 3 × 3 × 2 × 8 的体积,其中每个网格单元对应一个向量,包含了该网格中所有锚框的信息。
  2. 目标检测: 对于每个网格单元,神经网络会输出是否有目标的概率 Pc,以及目标的边界框坐标和类别。如果没有目标,那么边界框和类别的值就被忽略。

非极大值抑制

  1. 低概率预测的移除: 对每个网格单元,我们会得到两个预测的边界框(因为有两个锚框).首先,我们需要移除那些概率 Pc 很低的边界框,因为神经网络认为这些位置没有目标。
  2. 独立运行非极大值抑制: 对于每个类别,我们会独立运行非极大值抑制,以移除重叠的边界框。非极大值抑制会保留概率最高的边界框, 并移除与它重叠较多的其他边界框。

最终的输出就是图片中所有检测到的目标的边界框和类别。这些边界框的位置和大小是由神经网络预测出来的,而非极大值抑制则用于去除重叠的边界框,使得最终的结果更加准确。

Share this Post

Leave a Comment

您的邮箱地址不会被公开。 必填项已用 * 标注

*
*