首页 > 解决方案 > HOG检测方法

问题描述

我是计算机视觉和机器学习的新手,我搜索了很多但没有找到我的问题的完全答案。

第一:我想知道所有这些检测方法有什么区别。

1)HOG.detect()

2)HOG.detectMultiScale()

3)HOG.setSvmDetector()

第二:我读到HOG.setSvmDetector()仅用于检测一个对象,因为 SVM 是一个二元分类,我想知道我们可以训练多类 SVM(One vs All)并且对于每一个 SVM 类我们应用一个新的实例HOG.setSvmDetector()吗?

例如,如果我构造了 2 个 SVM,这意味着现在我有 2 个类的多类 SVM,我可以这样做:

HOGDescriptor hog1 = newHOGDescriptor()

HOGDescriptor hog2 = 新 HOGDescriptor()

hog1.setSvmDetector(第一类)

hog2.setSvmDetector(第二类)

标签: opencvimage-processingcomputer-visionsvm

解决方案


HOG.detect 它检测单个图像中的对象。

HOG.detectMultiScale 它以原始大小检测图像中的对象,然后使用某个因子对图像进行下采样,例如使用 1.2 作为因子。然后它检测下采样图像中的对象并进一步下采样图像。重复此过程,直到图像大小小于检测窗口大小。然后它结合在所有图像上找到的所有检测。

HOG.setSvmDetector() 用于设置训练好的分类器。OpenCV 为您提供了针对不同数据集的预训练分类器,例如 getDefaultPeopleDetector()(使用 INRIA 行人数据集训练)和 getDaimlerPeopleDetector()(使用戴姆勒行人数据集训练)。

您还可以训练自己的分类器,无论是二分类还是多分类,并在 setSvmDetector() 中使用它。


推荐阅读