YOLO anchor box



当我阅读YOLO的论文时,它说它用K-means制作锚盒。然而,当我看到实现这一点的代码时,它似乎修复了锚点大小,如下所示。我希望你描述一下它的确切含义,或者指出我对此的误解。

谢谢,并问候

[yolo] 
mask = 6,7,8
***anchors = 10,13,  16,30,  33,23,  30,61,  62,45,  59,119,  116,90,  156,198,  373,326***

锚点就像一个单元格的默认边界框。它由每个锚的宽度和高度组成。

anchors = anchor1_width, anchor1_height, anchor2_width, anchor2_height, ..., anchorN_width, anchorN_height

如果您正在训练yolov3,则可以使用此代码生成自己的锚点https://github.com/pjreddie/darknet/issues/597#issuecomment-377370922

对于yolov2https://github.com/AlexeyAB/darknet/blob/master/scripts/gen_anchors.py

生成自己的锚点后,用.cfg文件中的默认锚点替换

如其他答案所述,cfg文件中的锚框值只是初始值,稍后它将被调整为最接近的预测对象。您可以使用其他答案中所述的K-means生成自己的锚框。

重要的是,初始值将被调整大小。请参阅AlexeyAB的解释。https://github.com/pjreddie/darknet/issues/568

锚是初始尺寸(宽度、高度(,其中一些(最接近到对象大小(将被调整到对象大小-使用神经网络的输出(最终特征图(:

darknet/src/yolo_layer.c
Lines 88 to 89 in 6f6e475
b.w = exp(x[index + 2*stride]) * biases[2*n]   / w;   
b.h = exp(x[index + 3*stride]) * biases[2*n+1] / h;  

x[...]-神经网络的输出

biases[...]-锚

b.w和b.h结果将显示的有界框的宽度和高度在结果图像上

因此,网络不应该预测对象的最终大小,但是应仅将最近锚的大小调整为对象

在Yolo v3中,锚点(宽度、高度(是图像上对象的大小其大小调整为网络大小(cfg文件中的width=和height=(。

在Yolo v2中,锚(宽度、高度(-是相对于最终的功能图(默认情况下比Yolo v3小32倍cfg文件(。

相关内容

  • 没有找到相关文章

最新更新