【发布时间】:2014-12-02 22:52:11
【问题描述】:
我想使用 opencv 的 hog 实现来检测图像中的物体。我在 opencv 的文件夹 samples 中找到了 peopledetect.cpp,它是使用预训练模型的 hog 算法的默认实现。通过谷歌搜索,我发现这种默认方法不能令人满意。我必须使用 libSvm 创建自己的模型。我的第一个问题是有任何解释此过程的教程或示例吗?第二个,我的模型应该学习什么?什么将是我的训练样本?仅包含人物的图像?
编辑问题:是否有机会训练一个仅包含人体图像的一类模型?我试图理解代码in here。它计算数据库的 hog 特征并训练 svm 模型。在评估过程中,它使用带有 detectMultiScale 的 hog 级联。 detectMultiScale 和 SVM 是什么关系?
我已经训练了一个带有线性内核的 libsvm,并提供了 from here 的图像。图像有两种,一种是包含人的,一种是没有人的。训练结果接近 98%(wuth svm_predict)。如何在测试图像中定位身体的位置?我可以为此目的使用detectmultiscale吗?用 svm 模型喂 multiscallefunction?我注意到在我的 svm 模型中,一些支持向量在行的开头没有标签,但只有符号。这是正常现象,还是可能是错误?
Hogcascade 似乎对我不起作用(f.e 在image):
CascadeClassifier body_cascade;
body_cascade.load("cascades/hogcascade_pedestrians.xml");
Mat image, gray_image;
image = imread( fileName, 1 );
resize(image, image, Size(150, 200));
vector<Rect> bodies;
cvtColor(image, gray_image, CV_BGR2GRAY);
body_cascade.detectMultiScale( gray_image, bodies, 1.3, 5 );
cout << "size of detection" << bodies.size() << endl;
每次我得到 0 个尸体。
【问题讨论】:
-
请注意,除了 svm 解决方案之外,您还可以为 persons 训练具有 HOG 特征的 CascadeClassifier。
-
酷,我去看看! DetectmultiScale 仅适用于级联模型?
-
我想是的。 (您是在问,是否可以从 svmdetector 获得 rects?)
-
我觉得这个作品可以帮到你:geocities.ws/talh_davidc