我想使用自己的数据集训练一个新模型。我会的使用Darkflow/Tensorflow。
关于我的疑虑:
(1( 我们是否应该根据特定的大小调整训练图像的大小?
(2( 我认为较小的图像可能会节省时间,但较小的图像会损害准确性吗?
(3( 那么要预测的图像呢?我们应该调整它们的大小吗?还是没有必要?
(1(它已经用.cfg文件中的random=1
调整了它的大小。答案是肯定的。图像的输入分辨率相同。你可以自己调整大小,或者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
以获得更好的结果。
(2( 较小的图像不会减少收敛的时间,但如果你的数据集只包含较小的图像,Yolo可能无法收敛(Yolov3对很多微小物体来说不是一个好的检测器(
(3( 不需要