假设一个卷积神经网络在一个物体的小图像上训练,比如花,如下 3 个训练图像:
如果测试图像中以放大的形式存在相同的对象,这个 CNN 会正确分类吗?如下例所示:
如果情况是相反的,即对大尺寸物体进行训练并用小尺寸物体进行测试怎么办?
为正确分类图像而处理可能存在的不同大小的对象的最佳方法是什么?
(图片来自:https ://www.shutterstock.com/video/search/flowers )
假设一个卷积神经网络在一个物体的小图像上训练,比如花,如下 3 个训练图像:
如果测试图像中以放大的形式存在相同的对象,这个 CNN 会正确分类吗?如下例所示:
如果情况是相反的,即对大尺寸物体进行训练并用小尺寸物体进行测试怎么办?
为正确分类图像而处理可能存在的不同大小的对象的最佳方法是什么?
(图片来自:https ://www.shutterstock.com/video/search/flowers )
我认为有关该项目的更多信息会有所帮助。例如,在您的示例中,您只需要检测整个图像中的花框并裁剪它。然后,您只需在喂食 NN 之前将图像大小调整为相同大小。在这种情况下,检测目标帧并对其进行缩放是预处理的一部分,学习阶段保持不变。
另一种方法是学习这种缩放。这意味着学习算法需要尺度不变的特征,但 NN 应该通过学习在其隐藏层中实际创建特征。因此,如果您有足够大的数据集来呈现所有变体,那么您的神经网络就会学习它(很可能结果很差)。这个过程是直观的 ML-wise:
最好的情况可能是您的数据集不是那么庞大和丰富,或者您不想使用很多参数,或者您想提高结果的质量。然后专注于寻找尺度不变的特征。要么从图像中提取它们并将其提供给 NN,要么以它自己发现它们的方式设计 NN。一种更直观的方法是在不同的尺度上训练不同的模型并将它们集成。
希望它有所帮助:) 祝你好运!
PS:SIFT 已申请专利。注意不要将其用于商业目的。
一般来说,不,CNN 不是尺度不变的。证明很简单:卷积网络的最大感受野总是固定的和有限的,它是网络深度、下采样层的数量和速率以及内核大小和步幅的函数。所要做的就是提供一个缩放到超过网络最大感受野的输入,然后您将到达一个无法可靠识别对象的点。
尝试在此处修改感受野计算器以查看一些具体的交互式示例。由于感受野总是有界的,CNN 匹配对象的能力仅限于与最大理论感受野大小相当的像素空间尺度。
除了感受野问题之外,以一种规模训练并在另一种规模上进行测试的网络的行为通常没有明确定义。不要指望它会起作用。许多关于识别任务的论文通过使输入的规模更符合网络预期的规模来提高性能。这是Spatial Transformer Networks成功的关键。