Opencv 如何实现更好的滑动窗口算法?
因此,我一直在为HoG及其变体编写自己的代码,以处理深度图像。然而,我一直在检测窗口部分测试我训练的SVM 我现在所做的就是首先从原始图像创建图像金字塔,然后从左上角到右下角运行一个64x128大小的滑动窗口 以下是它的视频捕获: 现在的问题是,我得到的误报比我预期的要多 是否有一种方法可以消除所有这些误报(除了使用更多图像进行培训)?到目前为止,我可以从SVM中得到“分数”,也就是到边距本身的距离。我如何利用它来利用我的结果Opencv 如何实现更好的滑动窗口算法?,opencv,machine-learning,computer-vision,sliding-window,Opencv,Machine Learning,Computer Vision,Sliding Window,因此,我一直在为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)
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]
- 是本地最大分数(大于其相邻分数)-->
local
- 足够强大-->
强大
您可以将阈值设置为0,并调整它,直到获得满意的结果。或者您可以使用您的培训集自动校准。答案很好,但如果您或其他人不介意的话,我还有几个问题要问。如何将其与比例空间一起使用?我是否将另一个尺度中检测到的窗口视为另一个邻居?非最大抑制是如何发挥作用的?不管怎样,还是要谢谢你清晰的回答。关于天平的好问题!你确实可以在邻里之间加入比例(左/右/上/下/小/大),但这在很大程度上取决于你的数据和最终目标-你会得到很多多比例的误报吗?不幸的是,试错法是计算机视觉中最实用的方法。关于非最大抑制,我描述的是一种非最大抑制(只保留局部最大值)。