C++ 基于CvSVM和HOG的人体检测

C++ 基于CvSVM和HOG的人体检测,c++,opencv,machine-learning,libsvm,C++,Opencv,Machine Learning,Libsvm,我正在使用opencv进行一个项目,需要完成以下工作: 训练分类器,使其能够在热图像中检测人 我决定使用opencv并使用HOG和SVM进行分类 到目前为止,我已经到了我能做到的地步 加载若干图像,正片和负片样本约1000 提取每个图像的HOG特征 将要素与其标签一起存储 训练支持向量机 获取SVM设置alpha和bias,将其设置为HOG描述符的SVM 运行测试 测试是可怕的,甚至比原来的测试更糟糕 hog.setSVMDetector(HOGDescriptor::getDefaultPeo

我正在使用opencv进行一个项目,需要完成以下工作:

训练分类器,使其能够在热图像中检测人

我决定使用opencv并使用HOG和SVM进行分类

到目前为止,我已经到了我能做到的地步

加载若干图像,正片和负片样本约1000 提取每个图像的HOG特征 将要素与其标签一起存储 训练支持向量机 获取SVM设置alpha和bias,将其设置为HOG描述符的SVM 运行测试 测试是可怕的,甚至比原来的测试更糟糕

hog.setSVMDetector(HOGDescriptor::getDefaultPeopleDetector());

我认为我做的猪特征是错误的,因为我计算了整个图像的猪特征,但我需要在人物所在的图像部分计算它们。所以我猜,我必须裁剪人物所在的图像,将其调整到某个窗口大小,训练SVM对这些窗口进行分类,然后将其传递给HOG描述符

当我直接在训练好的SVM上测试图像时,我观察到,我得到了几乎100%的误报。我想这是我前面描述的问题造成的

我对任何想法都持开放态度

问候,


hh

我认为我做的猪特征是错误的,因为我计算了整个图像的猪特征,-这听起来绝对是错误的。i、 默认的PeopleDetector是在48x96像素的补丁上训练的,上面只包含了人。所以我必须训练von eg 64x128人类补丁?测试整个图像?是的。不确定最佳尺寸,但请记住,-detectMultiScale会进行放大,因此您无法检测到任何小于原始尺寸的内容此网站可能会帮助您: