SVM是怎麼對圖像進行分類的?

陽光e視


一、圖像分類的任務

圖像分類是模式分類(Pattern C1assification)在圖像處理中的應用,它完成將圖像數據從二維灰度空間轉換到目標模式空間的工作。分類的結果是將圖像根據不同屬性劃分為多個不同類別的子區域。一般地,分類後不同的圖像區域之問性質差異應儘可能的大,而區域內部性質應保證平穩特性。

二、SVM分類原理

下圖是SVM通過超平面進行圖像分類的原理示意圖。SVM通過平面將空間中的實例劃分到不同的類別,從而實現分類。在圖中的每一個平面都將整個高維空間劃分為兩個部分,兩個不同的部分即是將圖像進行分類的結果。例如藍色平面一側為飛機類別,另一側是非飛機類別。

每一個類別都對應一個平面,這些平面互相之間不存在關聯,利用SVM模型進行分類的目的就是確定這樣一組平面,使得同一類儘可能劃分在該類對應的平面的一側,其他類儘可能在另一側,而且兩種類別離平面的距離越大越好(平面儘可能把兩類分的更開),這是SVM模型的思路。

所有這些類別對應的平面通過下面的矩陣唯一確定:

其中改變W可以使平面旋轉,而改變b使平面平移。如果b為0,此時W*0=0,那麼平面會經過原點。

三、SVM進行圖像分類的直觀解釋

SVM模型用於圖像分類可以看做給每一種圖像的類別生成一個圖像模板,然後拿待分類的圖像和這個圖像模板做內積,計算他們的相似度,相似度最高的類別就是分類類別。根據這個思想,生成的權重向量可視化如下:

可以看出,這些圖像模板比較能夠代表某種類別的共性,比如car類別是一輛紅色的車的形象,而horse類型是左右兩匹馬的形象,這些是集合了所有訓練樣本得出的模板。從這個角度,SVM可以看做KNN模型的一種簡化,KNN模型對一張圖片分類時需要和所有訓練樣本做比較,而SVM只需要和抽象出來的每個類別下的一個圖像模板做比較即可,顯然更高效。

四、SVM多分類問題

SVM是用來處理二分類問題的,但現實中碰到的大都是多分類問題,因此SVM採用不同方式來達到多類分類的目的。目前支持向量機多分類方法主要分為兩個方向:一個是一次求解法,即通過一個優化的公式來優化所有類別的參數;還有一種通過組合多個SVM分類來解決多類分類問題。

具體的SVM多分類算法可參見:https://blog.csdn.net/xfchen2/article/details/79621396

五、具體實現

利用SVM進行圖像分類還有一些其他細節需要注意,比如損失函數的確定、圖像的預處理和圖像數據訓練的方法等。斯坦福CS231n課程中詳細的對相關的原理細節進行了講解,並給出了實現代碼。在他們的實例中:模型採用的總的損失函數=摺頁損失+L2正則化損失。實例對圖像進行了中心化和歸一化處理,梯度更新採用了小批量數據梯度下降的方法。

具體的代碼參見:https://github.com/452896915/cs231n_course_homework。

需要指出的是在這個實例中SVM模型分類效果還是比較差的,通過更復雜的神經網絡,或者CNN等模型可以將分類的準確率達到95%以上。


ICMLL實驗室



分享到:


相關文章: