YOLOv1 损失函数演练:所有人的回归

解释 YOLOv1 如何衡量其对象检测和分类预测的正确性YOLOv1 损失函数演练:所有人的回归首先出现在《走向数据科学》上。

来源:走向数据科学

在我之前的文章中,我解释了 YOLOv1 的工作原理以及如何使用 PyTorch 从头开始​​构建架构。在今天的文章中,我将重点讨论用于训练模型的损失函数。我强烈建议您在阅读本文之前阅读我之前的 YOLOv1 文章,因为它涵盖了您需要了解的许多基础知识。单击参考号 [1] 处的链接即可到达那里。

什么是损失函数?

我相信我们都知道损失函数是深度学习(以及机器学习)中极其重要的组成部分,它用于评估我们的模型在预测基本事实方面的效果。一般来说,损失函数应该能够接受两个输入值,即目标值和模型做出的预测。每当预测远离真实情况时,该函数就会返回一个很大的值。相反,每当模型成功给出接近目标的预测时,损失值就会很小。

通常,模型仅用于分类或回归。然而,YOLOv1 有点特殊,因为它包含了一个分类任务 ——对检测到的对象进行分类,而对象本身将被包围在边界框内,边界框的坐标和大小是使用连续数字确定的—— 因此是一个回归任务。在处理分类任务时,我们通常使用交叉熵损失,对于回归,我们可以使用 MAE、MSE、SSE 或 RMSE 之类的东西。但由于 YOLOv1 的预测同时包含分类和回归,因此我们需要创建一个自定义损失函数来适应这两个任务。  这就是事情开始变得有趣的地方。

分解组件

现在让我们看一下损失函数本身。下面是根据原始 YOLOv1 论文 [2] 得出的结果。

这里你可以看到损失函数基本上由 5 行组成。现在让我们一一探讨它们。

第 1 行:中点损失

第 2 行:尺寸损失

IoU 函数