YOLO简介

23 阅读1分钟

YOLO

YOLO(you only look once)是一个基于CNN的高效实时物体检测模型。YOLO将物体检测视为一种回归模型,对于输入的图象将输出图象对应类别的概率以及边框的坐标。

其结构如下

YOLO_Architecture_from_the_original_paper_ff4e5383c0.png

  • 进行计算前,调整输入图形大小为448x448
  • 在卷积网络中计算
  • 选择概率最高的类别作为结果输出

YOLO如何工作

  • 图象分割

    YOLO首先将原始图象分割为NxN的单元格。如图为N=4的示例

    Application_of_grid_cells_to_the_original_image_7d3c056d06.png

  • 边框回归

    这一步将确定所有物体的边界框,其中每一个边界框用向量YY表示

    Y=[pc,bx,by,bh,bw,c]Y = [ pc, bx, by, bh, bw , c]
    • pc表示单元格中含有物体的概率。例如下图中,红色单元格表示pc>0pc>0而黄色单元格表示pc=0pc=0 Identification_of_significant_and_insignificant_grids_d1e80c8bf4.png

    • bx, by则表示边界框中心点的相对坐标。bx,by[1,0]bx,by \isin [1,0]。例如(0.5,0.5)(0.5, 0.5)表示物体中心位于单元格中心

    • bh, bw表示边界框的相对宽和高。同样其长度单位也是一个单元格的宽和高,但是bw,bw1bw ,bw \ge 1

      Bounding_box_regression_identification_f530973d75.png

    • c表示出现物体条件下是某一种类的条件概率:P(classobject)P(class|object)

  • IOU

    Intersection Over Unions,交集与并集之比。 通常一个物体往往被多个单元格包括,而且并不是所有单元格都与物体有这强烈的关系,所以我们通过计算IOU并设定阈值去筛选掉无关的单元格。

    Process_of_selecting_the_best_grids_for_prediction_393ee31f11.png

  • NMS Non-Max Suppression。IOU的阈值并不足够,虽然这能帮助我们筛选掉一部分,但是一个物体可能含有多个符合条件的边界框。为了避免全部保留而产生噪声,我们选择概率最高的一个边界框作为检测结果

如何让YOLO在自定义训练集上训练

我一定会填坑的~


参考文献:

[1]: YOLO Object Detection Explained

[2]: Understanding a Real-Time Object Detection Network: You Only Look Once (YOLOv1)

[3]: Train YOLOv8 on Custom Dataset – A Complete Tutorial

[4]: YOLO offical