neural-network - Yolo v3 不能设置少于三个的边界框吗?

标签 neural-network conv-neural-network darknet

在Yolo v3的滤波器的计算公式中,边界框的数量除以3(为什么?)。

因此,边界框的数量只允许是3的倍数。

但我想设置一个边界框。 这可能吗?

如果可以的话,过滤器是多少个?

下面是我想实现的代码。

[convolutional]
batch_normalize=1
size=3
stride=1
pad=1
filters=256
activation=leaky

[convolutional]
size=1
stride=1
pad=1
filters=????????? 
activation=linear

[yolo]
mask = 0,1,2
anchors = 10,13
classes=20
num=1
jitter=.3
ignore_thresh = .5
truth_thresh = 1
random=1

最佳答案

有四个重要的变量:

anchor :具有特定高宽比的预定框组

掩码:图层负责预测的边界框( anchor )的 id 列表

num: anchor 总数

过滤器 = (num_classes+5)*k,其中 k=一个 yolo 层中的掩模数量

YOLOv3 预测具有特定高宽比( anchor )的预定框集的偏移量。 anchor 是初始(宽度、高度)尺寸,其中一些(最接近对象尺寸)将调整为对象尺寸。

每个[yolo]层都必须了解所有 anchor 框,但只负责其中的一个子集。掩码告诉图层应该使用哪个边界框进行预测。

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] 层)负责用于预测与 anchor 0 (10,13)、1 (16,30)、2 (33,23) 相关的边界框。

总的来说,

第一个[yolo]层负责6,7,8个 anchor 。

第二个[yolo]层负责3,4,5个 anchor 。

第三个[yolo]层负责0,1,2个 anchor 。

在每个 [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

关于neural-network - Yolo v3 不能设置少于三个的边界框吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51608208/

相关文章:

machine-learning - Prelu权重的解释

machine-learning - 为什么不同类型的层使用不同的偏置值

python - yolov3 中的 CNN 实际层数是多少?

ubuntu - RTX 3060 无法使用 cuda 11.4 运行 Pytorch Yolov4

python - 在 Tensorflow 中获取未知张量的形状

machine-learning - 比 k 均值聚类更准确的方法

python - 有没有一种Python方法可以减少卷积神经网络的训练时间?

yolo - 使用YOLO训练后如何裁剪检测到的物体?

python - 模块 'darknet' 没有属性 'load_network'

machine-learning - 为什么以及何时需要深度强化学习而不是 q 学习?