首页
学习
活动
专区
圈层
工具
发布

YOLO锚箱
EN

Stack Overflow用户
提问于 2019-11-14 09:52:05
回答 2查看 5K关注 0票数 3

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

谢谢,并致以问候

代码语言:javascript
复制
[yolo] 
mask = 6,7,8
***anchors = 10,13,  16,30,  33,23,  30,61,  62,45,  59,119,  116,90,  156,198,  373,326***
EN

回答 2

Stack Overflow用户

发布于 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文件中将默认锚点替换为您的锚点

票数 2
EN

Stack Overflow用户

发布于 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倍)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58848237

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档