SVM是怎麼對圖像進行分類的?
02-02
經常會聽到有說用SVM對圖像進行分類,比如說用SVM識別某個圖像是否有車輛,或者用SVM識別某個圖像是否屬於比如說「天空」這樣的類別,在一般性的理解中,常常覺得SVM分類點非常好理解,就是很直觀的用超平面分開,可是具體到圖像據說要什麼提取特徵什麼的,然後又處理什麼的??那麼SVM處理圖像的具體思路是怎樣的?
多謝邀請。。第一次在知乎回答問題。。
我覺得圖片首先是由像素點組成的,比如一個1024*1024的圖片,就有1024^2個像素點,如果是黑白圖片的話,每個像素點都有一個亮度(如果是彩色的那麼每個像素點都有R,G,B三個數據)。那麼我們就可以把每個圖片當做一個數據,並且把像素矩陣展開成一個1024*1024的向量。那麼每張圖片,或者說每個數據就是1024^2維的。當我們用很多數據來訓練SVM的時候,比如說有的有汽車有的沒汽車,我們首先用PCA來做降維,去掉沒用的像素點(對識別騎車不產生影響的數據點)比如邊邊角角的像素點。做降維是因為SVM佔用空間大,訓練速度慢,所以我們要盡量提高效率,去除不必要的計算量。
然後這就劃歸為我們通常的SVM問題了,每個像素點位置都是一個feature,裡邊有具體的亮度數據(或顏色數據),然後尋找分割平面。在這個過程中SVM會學習到汽車的特徵(recognize pattern),比如說車身的亮度與周圍亮度不同,亮度不同所塑造的汽車的形狀,車燈處亮度或顏色與車身不同等等。有這種pattern的圖片被放到hyperplane的一端,沒有這種pattern的被放到另一端。這種hyperplane很有可能是很複雜的,比如是在無限維才線性可分。
具體做這種圖像識別的可能會有很多具體細節,但我理解的大致是這樣的原理。相對簡單的問題是數字識別(Handwritten digit recognition)你可以去看看相關的文章。
不知對不對。。希望大家指正。。hog svm
推薦閱讀: