FPN 论文演练:利用内部金字塔

了解 FPN 如何让深度学习模型检测小物体以及如何从头开始实现 FPN 论文演练:利用内部金字塔首先出现在《走向数据科学》上。

来源:走向数据科学

我正在谈论 YOLOv3 [1]。使这个 YOLO 版本比其前辈更好的因素之一是,由于模型采用了类似 FPN 的颈部,因此能够检测小物体。不幸的是,我在那篇文章中对 FPN 的解释不太彻底,因为我更多地关注 YOLOv3 本身。因此,在本文中,我决定从其题为“用于对象检测的特征金字塔网络”[2] 的原始论文中专门撰写有关 FPN 的内容,以便您可以更好地了解它的实际含义及其工作原理。不仅如此,在这里我还将演示如何从头开始实现 FPN 以及如何将其与 CNN 主干和 RPN 头连接。

脊椎、颈部和头部

在进入FPN之前,我们首先需要知道目标检测模型的结构与分类模型的结构不同,其中主要的区别在于最后一层。在典型的分类模型中,最后一层包含许多神经元,其中每个神经元对应于数据集中可用的每个类别。或者,在二元分类的情况下,输出层仅由单个神经元组成,该神经元负责预测样本属于类别0还是类别1。这种输出层实际上不适合检测任务,因为除了类别之外,它还需要专门用于预测对象的位置和大小的神经元。

因此,为了使模型能够预测物体的位置和大小,我们需要用所谓的检测头替换输出层,即分类头。其余层本身(除了头部之外的所有层)通常称为主干。使用这种结构的一些模型是 YOLOv1 和 YOLOv2,它们使用一堆卷积层作为主干和一个特定的头来预测图像及其类别中的对象位置和大小。

多尺度检测机制的演进

FPN 的工作原理

FPN 从头开始