如何使用可变大小的原始图像补丁训练SVM?

时间:2016-11-12 16:22:43

标签: matlab image-processing machine-learning computer-vision svm

我想训练一个分类器来分类“武器之人”和“无武器之人”。武器可以包含任何武器,如左轮手枪或突击浅滩。
我有图像中带有边界框武器的图像。图像大小不同。
我想做什么?
我想使用使用武器的边界框坐标获得的原始图像补丁来训练SVM分类器。对于“没有武器的人”,我想将整个原始图像作为特征向量传递给SVM。
限制:
每个边界框都有不同的大小,这意味着不同大小的武器。我不能将PCA用于这些边界框,因为我认为这可能会导致信息丢失,因为图像中有3种不同类型的武器具有不同的尺寸。一些边界框几乎覆盖整个图像。所以首先我必须缩小图像和边界框,因为否则我的内存耗尽,如果我为PCA拍摄整个图像。
问题:
如何使用可变大小的特征向量训练SVM?换句话说,如何在不丢失信息的情况下制作相同大小的所有特征向量?

1 个答案:

答案 0 :(得分:3)

由于您具有可变大小的修补程序,因此有两种方法可以使用SVM处理这些修补程序的分类。这些都有它们的优点和缺点,所以你必须决定你认为最好的。鉴于您已决定选择大小为M x N的补丁,以便将图像提交到SVM进行分类,您可以尝试以下两种方法之一:

调整输入图像补丁的大小

对于测试时的每个图像,调整它们的大小以使它们都匹配M x N的大小,然后运行SVM分类管道以确定该图像属于哪个类。这样做的好处是,您丢失的唯一信息是由于在对图像进行二次采样时丢失了信息。但是,缺点是如果图像小于目标补丁大小M x N,则在上采样以匹配目标补丁大小时将引入虚假信息。之前已经看到过这种事情,特别是在深度学习中。具体来说,Region Proposal Networks by Ren et al.首先要看一下较大图像中的哪些贴片是候选对象或值得在图像中查看的东西,然后调整补丁以匹配输入层进入他们的神经网络(卷积btw)然后进行分类。

搜索多个级别的补丁

另一种方法是保持图像大小不变但使用M x N的修补程序大小,执行滑动窗口方案,在其中提取大小为M x N的重叠修补程序,然后将其提交给SVM,然后为每个中心提交每个重叠的补丁,确定该补丁的类别。您可以在多个比例上执行此操作,然后进行投票过程,其中整个图像上最常出现的类是感兴趣的类。类似于此的东西在Semenet et al. for their Overfeat classification engine中也可以看到 - 也使用卷积神经网络。这样做的好处是,您不会丢失任何信息,因为您在对对象进行分类时使用了所有(如果不是大多数)图像信息。缺点是需要的计算时间量 - 具体而言,比例数,窗口之间的重叠量和补丁大小本身都是您需要确定的最佳性能的超参数。该方法还假设在扫描时补丁尺寸小于所讨论的图像。您必须认识并选择小于训练数据集中最大图像的补丁大小。

如果我可以推荐....

因为您正在进行图像分类,所以在分类中具有最佳性能并且在测试时具有绝对速度的算法将是卷积神经网络。我会考虑查看这些而不是使用SVM来提高性能。首先,看看AlexNet pipeline by Krizhevsky et al.作为开始。这是 开创性的工作,以及卷积神经网络如何被放置在地图上,用于计算机视觉任务,如分类,检测等。