我所知,来完成这项任务所需的步骤:OpenCV的 - 使用SVM和HOG用于人员检测
- 收集训练集(正面和负面套)。
- 提取要用于训练SVM的每个图像的猪描述符(当前为'1'类标签为正,'-1'类为负类标签)。
- 将训练的SVM设置为HOGDescriptor并使用detect/detectMultiscale。
我已经完成了上述所有步骤。我只是困惑,HOGDescriptor.detect/detectMultiscale检测到哪个类?它是否仅检测正面类别标签(1)?
我所知,来完成这项任务所需的步骤:OpenCV的 - 使用SVM和HOG用于人员检测
我已经完成了上述所有步骤。我只是困惑,HOGDescriptor.detect/detectMultiscale检测到哪个类?它是否仅检测正面类别标签(1)?
在计算机视觉中,视觉描述符或图像描述符(即,HoG)是图像内容的视觉特征的描述。他们描述了诸如形状,颜色,纹理或运动等基本特征。因此,HoG描述符仅描述了图像中显示的场景 - 即在街上行走的行人,您可以在下面看到示例HoG描述符(HoG仅计算图像的局部部分中梯度方向的出现):
支持向量机是用于分类,回归和异常值检测的一组监督学习方法。但最初,支持向量机是一种用于构建最佳二元(2级)分类器的技术,所以支持向量机决定了描述符的含义。因此,HoG的输出是SVM的输入,后者的输出是+1或-1。
OpenCV提供了一个隐藏此操作的接口,可以通过函数调用完成全部对象检测。这是HOGDescriptor::detectMultiScale()
所做的,它使用多尺度窗口执行对象检测。一旦cv::HOGDescriptor hog
实例将被宣布,那么SVM分类的系数应该也做:
hog.setSVMDetector(cv::HOGDescriptor::getDefaultPeopleDetector());
然后detectMultiScale()
执行完整的对象检测(描述符提取和二元分类在一起),并返回的边框每个考生:
std::vector<cv::Rect> found;
hog.detectMultiScale(frame, found, 0, cv::Size(8,8), cv::Size(32,32), 1.05, 2);
这可以帮助你:http://www.geocities.ws/talh_davidc/ – SomethingSomething