当我读到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***发布于 2019-11-15 00:01:46
锚点类似于单元格的默认边界框。它由每个锚点的宽度和高度组成。
anchors = anchor1_width, anchor1_height, anchor2_width, anchor2_height, ..., anchorN_width, anchorN_height
如果您正在训练yolov3 https://github.com/pjreddie/darknet/issues/597#issuecomment-377370922,则可以使用此代码生成自己的锚点
对于yolov2 https://github.com/AlexeyAB/darknet/blob/master/scripts/gen_anchors.py
生成自己的锚点后,在.cfg文件中将默认锚点替换为您的锚点
发布于 2019-11-15 14:06:12
如其他答案所述,cfg文件中的锚框的值只是初始值,稍后它将被调整到最接近的预测对象。您可以使用K-means生成自己的锚框,如其他答案中所述。
重要的是,初始值将是调整大小的。请参阅AlexeyAB提供的此说明。https://github.com/pjreddie/darknet/issues/568
锚点是初始大小(宽度、高度),其中一些(最接近对象大小)将调整为对象大小-使用来自神经网络的一些输出(最终特征图):
darknet/src/yolo_layer.c 6f6e475B.W= exp(xindex + 2*stride) * biases2*n / w;b.h = exp(xindex + 3*stride) * biases2*n+1 / h;x[...] -神经网络的输出
biases[...] -锚点
b.w和b.h结果将在结果图像上显示的有界框的宽度和高度
因此,网络不应预测对象的最终大小,而应仅将最近锚点的大小调整为对象的大小。
在Yolo文件中,v3锚点(宽度、高度)是图像上对象的大小,这些对象的大小调整为网络大小(cfg文件中的width=和height= )。
在Yolo v2锚点(宽,高)-是相对于最终特征地图的对象大小(对于默认的v3文件,比Yolo cfg文件小32倍)。
https://stackoverflow.com/questions/58848237
复制相似问题