Detectron2 中每次迭代有多少图像

How many images per iteration in Detectron2

我刚开始使用 detectron2,只是学习 it.This 可能是一个菜鸟问题,但我确实需要答案。我在存储库中找不到任何与纪元数相关的内容。

我们知道,epoch 是指所有数据单次通过模型,batch 是指整个数据集的某个子集,具有通过梯度下降影响损失的能力。 在这个模型中,(Detectron2)我们有一个叫做迭代的东西。这个迭代是什么意思?这是否意味着通过该模式或一个纪元传递一批(考虑到每次迭代的时间不应该是这种情况)

我的问题是,我如何知道将所有图像至少传递给模型一次的最少迭代次数。

根据 this 源代码,Detectron2 术语中的迭代等于 epoch
你应该通过选择最优损失 rate/train 时间比率来实验性地找到最优 MAX_ITER 值。

在detectron2中,epochMAX_ITER * BATCH_SIZE / TOTAL_NUM_IMAGES

我认为当前接受的答案不正确

single_iteration = cfg.SOLVER.NUM_GPUS * cfg.SOLVER.IMS_PER_BATCH

因此,如果你现在想知道一个时期需要多少次迭代(所有图像都看过一次),那么这个数字就是

iterations_for_one_epoch = TOTAL_NUM_IMAGES / single_iteration

所以如果你想训练 20 个 epoch,你可以设置 MAX_ITER 如下:

cfg.SOLVER.MAX_ITER = iterations_for_one_epoch * 20

来源:

Detectron2 Docs(一次迭代是一次 run_step-call,从加载器数据中提取一个“数据点” = next(self._data_loader_iter))

MaskRCNN-benchmark Github issue 类似解释