我是计算机视觉和机器学习的新手,我搜索了很多,但没有找到我的问题的答案。
首先:我想知道所有这些检测方法之间的区别。
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(CLASS ONE)
hog2.setSvmDetector(CLASS TWO)
答案 0 :(得分:1)
HOG.detect
它可以检测单个图像中的对象。
HOG.detectMultiScale
它以原始大小检测图像中的对象,然后使用某个因素对图像进行下采样,例如使用1.2作为因素。然后,它检测下采样图像中的对象,并进一步对图像进行下采样。重复该过程直到图像尺寸小于检测窗口尺寸。然后它将所有图像中的所有检测结合起来。
HOG.setSvmDetector()
它用于设置训练的分类器。 OpenCV为您提供了不同数据集的预训练分类器,如getDefaultPeopleDetector()(使用INRIA行人数据集训练)和getDaimlerPeopleDetector()(使用戴姆勒行人数据集训练)。
您也可以训练自己的分类器二进制或多类,并在setSvmDetector()中使用它。