MobileNet-SSD输入分辨率

MobileNet-SSD input resolution

我有一个工作对象检测模型(经过微调的 MobileNet SSD)可以检测我的自定义小型机器人。我将为其提供一些网络摄像头镜头(将与无人机绑定)并使用实时边界框信息。

所以,我要买相机了。

我的问题:由于 SSD 将输入图像的大小调整为 300x300,相机分辨率是否很重要?更高的分辨率是否意味着更高的准确性(即使无论如何将其调整为 300x300)?在 运行 将我的对象检测模型应用到它之前,我是否应该在每一帧将相机镜头裁剪成 1:1 纵横比?我是否应该将图像分成 MxN 个裁剪片段并 运行 一个一个地推理?

因为我的机器人非常小而且无人机将在 4 米的高度,所以我将有效地尝试检测输入图像上的一个非常小的点。

非常感谢任何智慧,谢谢。

这些问题很多,我会尽力回答所有问题。检测模型在通过某种调整大小的方法将输入图像馈送到网络之前调整输入图像的大小,例如双线性的。如果输入图像等于或大于网络的输入大小而不是更小当然会更好。一条经验法则是,更高的分辨率确实意味着更高的准确性,但这在很大程度上取决于设置和任务。如果您要检测一个小物体,假设原始分辨率为 1920x1080。然后在调整图像大小后,小物体会更小(像素方面),并且可能太小而无法检测到。因此,实际上,最好要么将图像拆分为更小的图像(可能有一些重叠以避免由于对象拆分导致的误检测)并对每个图像应用检测,或者使用具有更高输入分辨率的模型。请注意,虽然第一种可能适用于您当前的模型,但对于后者,您需要训练一个新模型,可能需要进行一些架构更改(例如,添加 SSD 层和修改锚点,具体取决于您要检测的尺度)。关于宽高比问题,您主要需要保持一致。如果您不保持原始宽高比并不重要,但如果您不这样做 - 在训练和 evaluation/test/deployment.

中都这样做