是否可以迭代地对检测到误报的SVM进行训练?

时间:2012-08-01 14:09:59

标签: machine-learning svm

我正在处理图像处理中的机器学习问题。我想通过使用方向梯度直方图(HOG)和支持向量机(SVM)来获取图像中对象的位置。我已经阅读了一些关于训练SVM的文章和教程。设置非常标准。我已经标记了正面训练图像,现在需要生成一组负面训练样本。

在文献中,经常发现通过随机选择位置来生成负面训练样本的方法。我还看到了一些方法,在连续步骤中选择随机阴性样本,检测的假阳性再次用作阴性训练样本。 但是,我想知道从一开始就不能使用这种方法。因此,人们只会随机生成一个假训练样本,运行检测并再次在假训练集中放入假阳性。这对我来说似乎是一个非常明显的策略,但我想知道我是否遗漏了一些东西。

3 个答案:

答案 0 :(得分:3)

对我来说,听起来你想在线/逐步训练SVM分类器,即用新样本更新分类器。这些方法通常仅在新数据随时间推移时使用。在你的情况下,似乎你可以生成一整套负面训练样本,因此不需要逐步训练它。我倾向于说,在一次运行中训练分类器将比逐步进行训练更好(正如larsmans所暗示的那样)。

答案 1 :(得分:3)

这种方法背后的理论由P. Felzenszwalb,R。Girshick,D。McAllester,D。Ramanan在他们的PAMI论文中Object Detection with Discriminatively Trained Part Based Models阐述。本质上,您的起始负集并不重要,如果您迭代地添加硬样本(SVM边距> -1),您将始终收敛到相同的分类器。从单个负片开始只会使这种收敛变慢。

答案 2 :(得分:0)

(同样,我不是图像处理专家,所以请耐心等待。)

  

我想知道从一开始就不能使用这种方法。

您需要某种方法来检测分类运行中的误报。要做到这一点,你需要一个基本的事实,也就是说,你需要一个人在循环中。实际上,你正在做active learning。如果这就是你想做的事情,你也可以从一堆带有手工标签的反面例子开始。

或者,您可以将其设置为PU learning问题。我不知道这是否适用于图像,但对于文本分类,它有时会起作用。