据我在YOLO算法中了解,我们将inuput图像划分为一个网格,例如19x19,并且必须为每个像元获取输出矢量(pc,bx,by,bh bw,c)。然后,我们可以训练我们的网络。我的问题是:为什么我们只给网络XML文件一个边界框,标签等(如果图像上只有一个对象),而不是给19 * 19 = 361个呢?网络的实现是否会自动划分图像并为每个单元创建矢量? (它是怎么做到的?)
同样的问题是滑动窗口算法。为什么我们只给网络一个带有标签和边界框的向量,而不是给每个滑动窗口一个向量。
答案 0 :(得分:1)
让我们说YOLO的输出由19 x 19的网格单元组成,每个网格单元都有一定的深度。每个网格单元都可以检测到一些边界框,其最大数量取决于模型的配置。例如,如果一个网格单元最多可以检测到5个边界框,则该模型总共可以检测到19x19x5 = 1805个边界框。
由于该数字太大,因此我们训练模型,使得仅其中包含边界框中心的网格单元格可以预测出高置信度的边界框。训练模型时,我们首先要找出真实边界框的中心所在的位置,然后训练模型,使得包含中心的网格单元将很有可能预测出与真相相似的边界框,而另一个网格单元将以尽可能低的概率预测边界框(当概率低于阈值时,将放弃此预测)。
下图显示了当输出具有13 x 13网格单元时包含框中心的网格单元。
当训练图像中有多个对象时,情况相同。如果训练图像中有两个对象,我们将更新包含真实两个框的中心的两个网格单元,以使它们很有可能生成边界框。