Opencv 如何实现更好的滑动窗口算法?

Opencv 如何实现更好的滑动窗口算法?,opencv,machine-learning,computer-vision,sliding-window,Opencv,Machine Learning,Computer Vision,Sliding Window,因此,我一直在为HoG及其变体编写自己的代码,以处理深度图像。然而,我一直在检测窗口部分测试我训练的SVM 我现在所做的就是首先从原始图像创建图像金字塔,然后从左上角到右下角运行一个64x128大小的滑动窗口 以下是它的视频捕获: 现在的问题是,我得到的误报比我预期的要多 是否有一种方法可以消除所有这些误报(除了使用更多图像进行培训)?到目前为止,我可以从SVM中得到“分数”,也就是到边距本身的距离。我如何利用它来利用我的结果 有人对实现一个好的滑动窗口算法有什么见解吗 您可以添加一个处理步骤,

因此,我一直在为HoG及其变体编写自己的代码,以处理深度图像。然而,我一直在检测窗口部分测试我训练的SVM

我现在所做的就是首先从原始图像创建图像金字塔,然后从左上角到右下角运行一个64x128大小的滑动窗口

以下是它的视频捕获:

现在的问题是,我得到的误报比我预期的要多

是否有一种方法可以消除所有这些误报(除了使用更多图像进行培训)?到目前为止,我可以从SVM中得到“分数”,也就是到边距本身的距离。我如何利用它来利用我的结果


有人对实现一个好的滑动窗口算法有什么见解吗

您可以添加一个处理步骤,从SVM中找到局部最强的响应。让我解释一下

您现在正在做的事情:

对于每个滑动窗口
W
,记录
category[W]=SVM.hardDecision(W)

硬决策意味着它返回一个布尔值或整数,对于2类分类,可以这样写:

hardDecision(W) = bool( softDecision(W) > 0 )
既然您提到了OpenCV,那么在
CvSVM::predict
中,您应该将
returnDFVal
设置为true:

returnDFVal–指定返回值的类型。如果为true,问题是2类分类,则该方法返回决策函数值,该值是到边距的有符号距离,否则该函数返回类标签(分类)或估计函数值(回归)

你能做的是:

  • 对于每个滑动窗口
    W
    ,记录
    score[W]=SVM.softDecision(W)
  • 对于每个W,计算并记录:
    • neights=max(分数[W\u left],分数[W\u right],分数[W\u up],分数[W\u bottom])
    • local[W]=分数[W]>邻居
    • power[W]=分数[W]>阈值
  • 对于每个
    W
    ,如果
    local[W]&power[W]
  • 由于您的分类器将对windows cloth(在空间和/或外观上)做出肯定的响应,因此您的想法是记录每个窗口的分数,然后只保留

    • 是本地最大分数(大于其相邻分数)-->
      local
    • 足够强大-->
      强大

    您可以将阈值设置为0,并调整它,直到获得满意的结果。或者您可以使用您的培训集自动校准。

    答案很好,但如果您或其他人不介意的话,我还有几个问题要问。如何将其与比例空间一起使用?我是否将另一个尺度中检测到的窗口视为另一个邻居?非最大抑制是如何发挥作用的?不管怎样,还是要谢谢你清晰的回答。关于天平的好问题!你确实可以在邻里之间加入比例(左/右/上/下/小/大),但这在很大程度上取决于你的数据和最终目标-你会得到很多多比例的误报吗?不幸的是,试错法是计算机视觉中最实用的方法。关于非最大抑制,我描述的是一种非最大抑制(只保留局部最大值)。