什么是对象检测 "head"?

What is an object detection "head"?

我目前正在阅读 SSD Single Shot Detector,有一个术语我很难理解。术语是 "head"。一听到这个词,我就想起了网头,一如当初。

我查看了具有不同头部类型的 object detection API created by google and I found the "heads" folder,一种用于框编码,另一种用于 class 预测。

摘要的文档 "head" class 不是很有启发性:

All the different kinds of prediction heads in different models will inherit from this class. What is in common between all head classes is that they have a predict function that receives features as its first argument.

我想我对它们的理解程度很高,但我对它们没有具体的定义。有人可以定义 "head" 并解释如何拥有 "box prediction head" 或 "classification head" 吗?

在某些领域,head 是指开始或开始的术语。 在这个领域是不同的。 在计算机视觉的许多任务中,您通常使用 "backbone",它通常在 ImageNet 上进行预训练。这样,backbone 用作特征提取器,它为您提供输入的特征图表示。 现在你有了这样的特征图,你需要执行实际的任务,比如检测、分割等。 你这样做的方式通常是在特征图上应用 "detection head",所以它就像一个头连接到 backbone.

在对象检测的情况下,您需要两种输出类型:分类置信度和边界框。它们可以是两个不同的、解耦的头(例如 RetinaNet),或者是计算两个输出的单个头(例如 SSD)。在这两种情况下,您都需要指出解释输出的确切方法。例如,边界框回归输出,它们是否与锚点相关?或者可能相对于整个图像?分类置信度——你是否在输出上使用 softmax 来接收置信度?等等