什么是物体检测“头”?

Max*_*ers 0 machine-learning computer-vision neural-network conv-neural-network object-detection-api

我目前正在阅读SSD Single Shot Detector,并且有一个我很难理解的术语。该术语是“头”。当我听到这个词时,就像起初一样,我想到了网络的负责人。

我查看了由Google创建的对象检测API,发现带有不同头部类型的“ heads”文件夹,一种用于框编码,另一种用于类预测。

抽象的“ head”类的文档不是超级启发性的:

不同模型中所有不同种类的预测头都将从该类继承。所有头类之间的共同点是它们具有一个 作为其第一个参数predict接收的features函数。

我想我对它们有较高的了解,但是我对它们没有具体的定义。有人可以定义一个“头”并解释如何拥有“盒子预测头”或“分类头”吗?

net*_*sam 5

在某些领域,“头”是某个事物的开始或开始的术语。在这个领域是不同的。在计算机视觉的许多任务中,通常使用“骨干”,通常在ImageNet上对其进行预训练。这样,将主干用作特征提取器,即可为输入提供特征图表示。现在,您已经拥有了这样的特征图,您需要执行实际的任务,例如检测,分割等。您通常通过在特征图上应用“检测头”来完成此任务,就像头附着在骨干上。

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

  • 简而言之,模型的结构如下:输入 -> 骨干 -> 颈部 -> 头部 -> 输出。对于对象检测模型,主干提取特征(它通常是用于图像分类的网络的一部分),颈部提取一些更复杂的特征(例如查看特征金字塔网络),头部计算输出。 (4认同)