我想用我自己的数据集训练一个新模型。我将为此使用 Darkflow/Tensorflow。
关于我的疑惑:
(1) 我们是否应该将训练图像调整为特定大小?
(2) 我认为较小的图像可能会节省时间,但较小的图像会损害准确性吗?
(3)对于要预测的图像,我们应该调整它们的大小还是没有必要?
我想用我自己的数据集训练一个新模型。我将为此使用 Darkflow/Tensorflow。
关于我的疑惑:
(1) 我们是否应该将训练图像调整为特定大小?
(2) 我认为较小的图像可能会节省时间,但较小的图像会损害准确性吗?
(3)对于要预测的图像,我们应该调整它们的大小还是没有必要?
(1)它已经random=1
在.cfg文件中调整了大小。答案是“是”。图像的输入分辨率相同。您可以自己调整大小或Yolo可以做到。
(2) 如果您的硬件足够好,我建议您使用大尺寸的图像。另外作为建议,如果您将使用网络摄像头,请使用与网络摄像头使用相同分辨率的图像。
(3)是的,和培训一样。
(1) 是的,神经网络具有固定的输入维度。这些可以根据您的目的进行调整,但最后您需要提交定义的输入尺寸,因此您需要输入适合这些尺寸的图像。对于 YOLO,我发现了以下内容:
layer filters size input output
0 conv 32 3 x 3 / 1 416 x 416 x 3 -> 416 x 416 x 32
可能是您使用的框架已经为您完成了该步骤。也许有人可以对此发表评论。
(3) 您在推理过程中输入的图像/样本,用于预测的图像/样本应尽可能与训练图像/样本相似。因此,无论您对训练数据进行何种预处理,都绝对应该对推理数据进行同样的处理。
(2) 如果您的硬件 无法在内存中保存较大的图像,或者如果您使用大批量进行训练以使您的硬件需要在内存中保存多个图像,则较小的图像是有意义的。最后,计算时间与架构的操作量成正比,而不一定与图像大小成正比。
(1) 不,没有必要。但是如果你的数据集包含随机分辨率,你可以把
random = 1
在您的 .cfg 文件中以获得更好的结果。
(2) 较小的图像不会减少收敛时间,但如果你的数据集只包含小图像,Yolo 可能无法收敛(Yolov3 对于很多微小物体来说不是一个好的检测器)
(3) 没有必要