gpt4 book ai didi

opencv - 将 HOG 喂入 SVM : the HOG has 9 bins, 但 SVM 采用一维矩阵

转载 作者:太空宇宙 更新时间:2023-11-03 21:04:29 25 4
gpt4 key购买 nike

在 OpenCV 中,有一个 CvSVM 类,它接受样本矩阵来训练 SVM。矩阵是二维的,样本在行中。

我创建了自己的方法来根据视频源生成定向梯度 (HOG) 直方图。为此,我创建了一个 9 channel 矩阵来存储 HOG,其中每个 channel 对应一个方向箱。所以最后我有一个类型为 CV_32FC(9) 的 40x30 矩阵。

还为 HOG 制作了一个可视化效果,它正在运行。

我不明白我应该如何将这个矩阵输入 OpenCV SVM,因为如果我将它展平,我不明白 SVM 应该如何从 1D 输入数据学习 9D 超平面。

最佳答案

SVM 始终为每个特征向量接收一行数据。因此,特征向量的维数就是行的长度。如果您处理的是二维数据,那么每个特征向量有 2 个项目。此网页上有二维数据示例:

http://www.csie.ntu.edu.tw/~cjlin/libsvm/

OpenCV 中等效演示的代码 http://sites.google.com/site/btabibian/labbook/svmusingopencv

要点是,即使您认为直方图是具有 9 个单元格的 2D,特征向量实际上是它的扁平化版本。所以把它展平成一个长的特征向量是正确的。对我来说,结果是一个长度为 2304 (16x16x9) 的特征向量,我在一个小型测试集上获得了 100% 的预测准确率(即它可能略低于 100%,但它运行得非常好)。

之所以可行,是因为 SVM 正在处理特征向量中每一项的权重系统。所以它与问题的维度没有任何关系,超平面总是与特征向量在同一维度。另一种看待它的方法是忘记超平面,只将其视为特征向量中每个项目的一堆权重。在这种情况下,它需要为每个项目一个权重,然后将每个项目乘以其权重并输出结果。

关于opencv - 将 HOG 喂入 SVM : the HOG has 9 bins, 但 SVM 采用一维矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6706919/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com