Shi*_*iro 8 computer-science machine-learning computer-vision deep-learning yolo
我想实现 Yolo v1,但我对算法有一些疑问。
我理解这样一个事实,在 YOLO 中,我们对每个单元格(7x7)划分图像,并预测固定数量的边界框(论文中默认为 2 个,有 4 个坐标:x、y、w、h),一个置信度分数我们还预测每个单元格的类别分数。在测试步骤中,我们可以使用 NMS 算法来消除对一个对象的多次检测。

1)我们什么时候将图像分成网格?事实上,当我阅读论文时,他们提到分割图像,但是当我查看网络的架构时,我们似乎有两部分:卷积层和 FC 层。这是否意味着网络通过边界框输出“自然地”做到这一点?网格 7x7 的大小是否特定于卷积部分使用它的论文?如果我们使用例如 VGG 它会改变网格的大小吗?
编辑:由于我们网络的输出,似乎网格被“虚拟地”分割了。
2) 每个单元格使用 2 个边界框。但是在一个单元格中,我们只能预测一个对象。为什么我们使用两个边界框?
在训练时,我们只希望一个边界框预测器负责每个对象。我们指定一个预测器“负责”根据哪个预测具有最高当前 IOU 和地面实况来预测对象。这导致边界框预测器之间的专业化。每个预测器在预测特定大小、纵横比或对象类别方面会变得更好,从而提高整体召回率。
3)我真的没有得到这个报价。实际上,据说图像中的每个对象都有一个边界框。但是边界框仅限于单元格,那么当物体大于一个单元格时,YOLO 是如何工作的呢?
4)关于输出层,据说他们使用线性激活函数,但它使用的最大值等于1吗?因为他们说他们将 0 和 1 之间的坐标标准化(我认为置信度和类别预测是相同的)。
And*_*rew 16
1) 最后一层的输出将是一个大小为 SxSx(5B+C) 的向量。这意味着,如果您将采用此向量并采用前 5 个值,这些值将是第一个单元格中第一个框的 x、y、w、h 和置信度,则后五个值将对应于第二个边界框在第一个单元格中,您将拥有与类别概率相对应的 C 值,假设您有两个类别和网络的以下输出 [0.21 0.98],因此第二个类别的概率更大,这意味着网络认为它是此网格单元格中的第二个类。所以是的,你是对的,图像实际上是分开的。
2)当他们训练网络时,他们选择了要惩罚的预测器(从某个网格单元中的 B 个框中读取一个框)。他们通过具有基本事实的最高 IoU 选择一个预测器。引自论文:“我们指定一个预测器“负责”预测对象,基于哪个预测具有最高的当前 IOU 和真实情况。” 因此,假设在预测期间,第一个框的 IoU 为 0.3,第二个框的 IoU 为 0.7,我们选择第二个框负责预测该对象,我们将仅从该框累积损失。因此,例如,在训练期间,网络自然会学习用第一个预测器预测高框(人),用第二个预测器(汽车)预测宽框。所以使用多个框的原因是为了能够预测具有不同纵横比的框。
3)“但是边界框仅限于单元格,那么当物体大于一个单元格时YOLO如何工作?”。YOLO 预测的边界框不限于网格单元,仅其 (x,y) 坐标限于网格单元。他们在论文中写道:“(x, y) 坐标表示相对于网格单元边界的框中心。宽度和高度是相对于整个图像预测的。”。因此,如您所见,它们相对于整个图像而不是网格单元来预测 bbox 的宽度和高度。
4) 好吧,我不知道这个问题的答案,但我可以说,在他们的代码中,他们也使用了检测层,用于计算损失、IoU 和许多其他东西。我不太擅长阅读他们的代码,但你可能有更好的运气:这是 yolo github 中检测层的代码
PS 关于 YOLO 的另一个很好的信息来源:Joseph Redmon 在 youtube 上的介绍
| 归档时间: |
|
| 查看次数: |
4037 次 |
| 最近记录: |