有四个重要的变量:
锚点:预先确定的一组具有特定高宽比的框
mask:该层负责预测的边界框(锚点)的 id 列表
num:锚点总数
filter = (num_classes+5)*k 其中 k=一个 yolo 层中的掩码数
YOLOv3 预测一组具有特定高宽比(锚点)的预定框的偏移量。锚点是初始(宽度、高度)大小,其中一些(最接近对象大小)将调整为对象大小。
每[yolo]
一层都必须知道所有的锚框,但只负责其中的一个子集。掩码告诉图层它应该使用哪个边界框进行预测。
YOLOv3的默认配置:
[convolutional]
size=1
stride=1
pad=1
filters=255
activation=linear
[yolo]
mask = 0,1,2
anchors = 10,13, 16,30, 33,23, 30,61, 62,45, 59,119, 116,90, 156,198, 373,326
classes=80
num=9
jitter=.3
ignore_thresh = .7
truth_thresh = 1
random=1
这mask = 0,1,2
意味着该[yolo]
层(配置文件中的最后[yolo]
一层)负责预测与锚点 0 (10,13)、1 (16,30)、2 (33,23) 相关的边界框。
全面的,
第一[yolo]
层负责 6,7,8 个锚点。
第二[yolo]
层负责 3,4,5 个锚点。
第三[yolo]
层负责 0,1,2 个锚点。
[yolo]
在每一层预测一个边界框的示例配置:
[convolutional]
size=1
stride=1
pad=1
filters=85
activation=linear
[yolo]
mask = 0
anchors = 10,13, 30,61, 116,90
classes=80
num=3
jitter=.3
ignore_thresh = .7
truth_thresh = 1
random=1