我嘗試使用OpenCV2.3實現基於SVM和HOG的人檢測系統。但我被困住了。OpenCV + HOG + SVM:支持SVM單特徵向量所需的幫助
我來到目前爲止: 我可以從圖像數據庫計算HOG值,然後用LIBSVM計算SVM向量,所以我得到了例如1419個SVM向量,每個值爲3780。
OpenCV只是想要方法hog.setSVMDetector()中的一個特徵向量。因此,我必須計算LIBSVM計算出的1419個SVM向量中的一個特徵向量。
我發現一個提示,如何計算此單個特徵向量:link
「在成分中的檢測的特徵向量(其中i的範圍是從例如0-3779)構建出的總和的支持向量i *該支持向量的alpha值,例如 det[i] = sum_j (sv_j[i] * alpha[j])
,其中j
是支持向量的數量,i
是支持向量的組件數「
根據這一點,我的日常工作是這樣的:。 我把我的第一次的第一個元素SVM載體,具有阿爾法值相乘,並與第二SVM矢量已經乘以alpha值,第一個元素添加它...
但綜合各1419元后,我得到相當高的值:
16.0657, -0.351117, 2.73681, 17.5677, -8.10134,
11.0206, -13.4837, -2.84614, 16.796, 15.0564,
8.19778, -0.7101, 5.25691, -9.53694, 23.9357,
如果peopledetect.cpp(和hog.cpp在OpenCV的源)對它們進行比較,爲默認矢量OpenCV的樣品中
0.05359386f, -0.14721455f, -0.05532170f, 0.05077307f,
0.11547081f, -0.04268804f, 0.04635834f, -0.05468199f, 0.08232084f,
0.10424068f, -0.02294518f, 0.01108519f, 0.01378693f, 0.11193510f,
0.01268418f, 0.08528346f, -0.06309239f, 0.13054633f, 0.08100729f,
-0.05209739f, -0.04315529f, 0.09341384f, 0.11035026f, -0.07596218f,
-0.05517511f, -0.04465296f, 0.02947334f, 0.04555536f,
你看,默認矢量值在-1和+1之間的邊界,但是我的數值超過了它們。
我想,我的單一特徵向量例程需要一些調整,有什麼想法嗎?
問候,
克里斯托夫