将提取的 HoG 特征输入到 CvSVM 的训练函数中

Posted

技术标签:

【中文标题】将提取的 HoG 特征输入到 CvSVM 的训练函数中【英文标题】:Feeding extracted HoG features into CvSVM's train function 【发布时间】:2012-08-04 01:55:58 【问题描述】:

这是一个愚蠢的问题,因为我对 SVM 还很陌生,

我已经设法使用 OpenCV 的 HoGDescriptor 提取特征和位置:

vector< float > features;
vector< Point > locations;
hog_descriptors.compute( image, features, Size(0, 0), Size(0, 0), locations );

然后我继续使用 CvSVM 根据我提取的特征来训练 SVM。

Mat training_data( features );
CvSVM svm;
svm.train( training_data, labels, Mat(), Mat(), params );

这给了我一个错误:

OpenCV Error: Bad argument (There is only a single class) in cvPreprocessCategoricalResponses, file /opt/local/var/macports/build/ 

我的问题是,如何将 vector 转换为适当的矩阵以输入 CvSVM ?显然我做错了,OpenCV 的教程显示包含训练数据的 2D 矩阵被输入 SVM。那么,如何将 vector 转换为 2D 矩阵,2nd 维的值是多少?

这些功能究竟是什么?它们是由归一化幅度直方图组成的 9 个 bin 吗?

【问题讨论】:

【参考方案1】:

我发现了这个问题,因为我正在测试将特征向量传递到 SVM 以训练它是否正确,所以我没有费心准备负样本和正样本。

然而,CvSVM 需要至少 2 个不同的类进行训练,这就是它抛出错误的原因。

还是非常感谢!

【讨论】:

能否提供完整的代码?至少我们可以比较一下,看看原来的帖子有什么问题?谢谢!

以上是关于将提取的 HoG 特征输入到 CvSVM 的训练函数中的主要内容,如果未能解决你的问题,请参考以下文章

如何使 HOG 特征向量适应线性 svm 输入

车牌识别基于HOG特征提取和GRNN网络的车牌识别算法matlab仿真

Opencv学习之路—Opencv下基于HOG特征的KNN算法分类训练

opencv进阶-HOG+SVM行人检测(已训练好的分类器)

使用 OpenCV 提取 HoG 特征

使用可变大小的训练图像 hog 描述符训练 SVM (MATLAB)