理解PyTorch版YOLOv5模型构架

一个深度学习模型,可以拆解为:

  • 模型构架(Model Architecture): 下面详述
  • 激活函数(Activation Function):YOLOv5在隐藏层中使用了LeakyReLU激活函数,在最后的检测层中使用了Sigmoid激活函数,参考这里
  • 优化函数(Optimization Function):YOLOv5的默认优化算法是:SGD;可以通过命令行参数更改为Adam
  • 损失函数(Loss Function) 或者叫代价函数Cost Function:YOLOv5的Loss函数分为三个部分:Classes loss(BCE loss) + Objectness loss(BCE loss) + Location loss(CIoU loss)

YOLOv5模型构架和其它单阶段(one-stage)目标检测器一样,可以拆解为三个主要部分:

  • 模型主干网络(Model Backbone):主要用于提取输入图像特征,YOLOv5使用了CSP-Darknet53网络,相比YOLOv3使用的Darknet53网络,参数少-34%(意味着更快),精度基本一致
  • 模型颈部(Model Neck):主要用于生成特征金字塔(feature pyramids)。 特征金字塔有助于提升模型对不同大小和比例对象的泛化性能,即有助于识别具有不同大小和比例的同一对象。YOLOv5使用New CSP-PAN作为特征金字塔。
  • 模型检测头(Model Head):主要用于执行最后的检测部分。 它将锚框应用于特征并生成具有类别概率(class probabilities)、对象分数(objectness scores)和边界框(bounding boxes)的输出向量(output vectors)。YOLOv5的检测头跟YOLOv3的一致(YOLOv3 Head)。
    检测器构架 one-stage vs two-stage

    本图引用自:
    本文参考资料:https://github.com/ultralytics/yolov5/issues/6998

你可能感兴趣的:(理解PyTorch版YOLOv5模型构架)