我正在使用 HOG 描述符和 SVM 分类器来识别图片中的人。我正在为 OpenCV 使用 Python 包装器。我使用了pymagesearch的优秀教程,它解释了算法的作用,并提供了有关如何设置detectMultiScale方法参数的提示。
具体来说,我做
# initialize the HOG descriptor
hog = cv2.HOGDescriptor()
# Set the support vector machine to be pre-trained for people detection
hog.setSVMDetector(cv2.HOGDescriptor_getDefaultPeopleDetector())
# Detect people in the image
(rects, weights) = hog.detectMultiScale(image,
winStride=(4, 4),
padding=(8, 8),
scale=1.05)
根据教程本身的说明,根据对准确性和性能的微调来选择参数。
我的问题是,这种方法似乎是目前根据文献(原始论文的日期为 2005 年)在图片中识别人类的最佳方法,但在我的图像上似乎表现不佳。我有包含衣服的图像,无论是有模特还是没有模特,我正在尝试这种方法来识别那些有模特的人。在我手动扫描以标记它们是否包含模型的 300 张图像的子集上,该方法有 30% 的时间失败。
这些是一些图像作为示例。
我知道探测器适用于直立的人。他们也应该是全图的吗?我的图像包括半身像,没有头或没有脚的人物。
在此之前,我尝试过基于 Haar 特征的级联分类器来识别图像中的人脸,并且在同一组图像上的准确率已经达到 90%,因此我正在尝试对此进行改进。另外,我有兴趣了解为什么事情在这里不起作用。