提问者:小点点

yolo v3模型输出澄清与keras


我使用yolo v3模型与keras和这个网络给我作为输出容器的形状如下:

[(1, 13, 13, 255), (1, 26, 26, 255), (1, 52, 52, 255)]

所以我找到了这个链接

然后我了解了3个容器中每个容器的值255,我还了解了有3个容器,因为创建边界框时有3种不同的图像缩放。

但我不明白为什么在输出向量中,第一个缩放率有13*13个列表,第二个缩放率有26*26个列表,最后一个缩放率有52*52个列表。

我找不到一些好的解释,所以我不能使用这个网络。如果有人知道我在哪里可以找到一些关于输出维度的信息,我会非常高兴。

编辑

是不是因为如果我把图像切成13×13个部分,考虑到每个部分都是对象的中心,我只能检测到13*13个对象?


共1个答案

匿名用户

YOLOv3有3个输出层。此输出层预测3个不同比例的长方体坐标。YOLOv3也以这种方式运作,将图像分割成细胞网格。根据您查看的输出层,单元数是不同的。

所以输出的数量是正确的,3个列表(因为有三个输出层)。必须考虑YOLVO3是完全卷积的,这意味着输出层是宽度X高度X滤波器。看第一个形状(1,13,13,255)。您知道255代表边界框坐标

为什么它有用?从实际的角度来看,想象一幅画面,许多小鸽子集中在某个地方。当您只有一个13 x 13输出层时,所有这些鸽子都可以出现在一个网格中,因此您无法逐个检测它们。但如果你把图像分割成52 x 52的网格,你的细胞就会很小,你很有可能检测到所有的细胞。检测到小物体是针对YOLOv2的投诉,因此这是回应。

从更多机器学习的角度来看。这是一种称为特征金字塔的实现。视网膜网络架构推广了这一概念。

您可以处理输入图像、应用卷积、最大池等。在某种程度上,您可以将此功能映射用作输出层的输入(在YOLOv3情况下为13 x 13)。然后,您可以将用作13 x 13层输入的要素图放大,并与相应大小的要素图连接(该要素图将取自网络的早期部分)。因此,现在您可以使用输出层放大的特征作为输入,这些特征在整个网络中都经过了预处理,而这些特征是在前面计算的。这将导致更高的准确性。对于YOLOv3,您可以再次将此放大的特征与先前的特征合并,将其放大,合并并用作第三个输出层的输入。