標籤:
本文將主要介紹映像分類問題,即給定一張圖片,我們來給這張圖片打一個標籤,標籤來自於預先設定的集合,比如{people,cat,dog...}等,這是CV的核心問題,取向分類在實際應用中也有許多變形,而且許多看似無關的問題(比如 object detection, segmentation)最終也可劃分為映像分類問題。
彩色映像通常有RGB三個通道,每個通道都是一個二維數組,比如即為一張200*150的映像,該映像分為RGB三個通道,所以該映像可用200*150*3 = 90000的一維數組表示,數組每個點的取值為0(黑色)到255(白色)。映像分類即將這個90000維的數組打上標籤,比如 dog。
目前Image Recognition面臨的挑戰有:
- Viewpoint variation. 視角的變化
- Scale variation. 大小縮放
- Deformation. 一些物體可以隨意變形,比如人伸展
- Occlusion. 目標只有一小部分出現在映像裡
- Illumination conditions. 光線的變化
- Background clutter. 背景幹擾
- Intra-class variation. 類內的差異,比如各種鳥類大小不一,顏色不一
映像分類的方法,目前主要是機器學習中的監督學習的方法,給定訓練資料 {x(i),y(i)} 來訓練一個分類器來進行分類,比如KNN演算法
KNN演算法中有超參數(hyperparameters )需要選個K的取值以及距離的度量(L1還是L2 距離),所以需要對資料進行劃分,分別訓練集與測試集,這裡的測試集是十分寶貴的,用來測試模型的泛化性,而我們又要訓練一個準確的模型,這時可以把訓練資料進一步切分來進行Cross-validation.以下便是5折交叉驗證,通過交叉驗證的方法找到最優的模型,進而用測試集來測試模型的泛化能力。
KNN是非常慢的,因為每一次預測都要計算與訓練資料集中所有映像的距離,找出 top k,實踐KNN時需要注意一下幾個問題:
1)預先處理資料為0均值與單位方差(映像資料各個維度通常方差與均值都相等,因為像素介於0-255,所以映像可以省去此步驟)
2)高維資料可用PCA
3)若有很多參數,要保證測試集資料足夠多,訓練資料少得話就交叉驗證之,交叉驗證的 fold 越多,計算複雜度越高。
4)交叉驗證時比如以上的圖分了5折,其中用fold1 fold2 fold3 fold5 來訓練,fold4 測試得到了最好的模型,這時在測試集測試時,可以不用fold4,把fold4當成burden扔掉。
電腦視覺入門 Intorduction To Computer Vision