圖像分類問題
定義:
在已有固定的分類標簽集合的前提下,能夠對輸入的圖像進行識別處理,從集合中找到該圖像所對應的標簽。
對于計算機而言,圖像并非直觀的圖像,而是一個的像素集合,對于每個像素,其又有RBG三個顏色通道。因此,一張圖片可以被認為是一個
?的三維數組,數組內每個元素都是在
?范圍內的整型。而計算機圖像分類的任務,就是將這樣的一個三維數組映射到其對應的標簽上
困難點:
Viewpoint variation:對于同一個物體,圖片可能從多個角度來展現
Scale variation:由于攝影距離的遠近、物體尺寸大小不同,物體的可視大小通常是變化的
Deformation:同一個物體可能以不同的形態出現,會發生形變
Occlusion:目標物體可能會被無關物體擋住,只有部分可見
Illumination conditions:光照會極大程度地影響同一個形狀物品的RGB值
Background clutter:物體可能會混入背景中,難以被分辨
Intra-class variation:同一類物體的外觀差異可能也會較大
流程:
1.輸入:輸入是包含N個圖像的集合,每個圖像的標簽是K種標簽的一種,我們把這個圖像集合成為訓練集
2.模型學習/訓練分類器:使用訓練集來學習每個標簽具體長什么樣
3.評價:使用分類器來給其從未見過的圖像打標簽,并以此正確率來評價分類器
Nearest Neighbor分類器
原理:
對于輸入的圖像,我們將其與訓練集中的所有圖像進行差異比較,找到與輸入圖像差異最小的圖像,并將這個圖像的標簽作為輸入圖像的標簽
差異的量化:
假設我們需要比較圖片?和圖片
,則我們先將這個兩個三維數組分別展開成為向量
?和?
?,然后將這兩個向量的L1距離作為差異的量化標準,即
即將兩個向量每對元素的差的絕對值求和
我們也可以選擇L2距離作為量化的標準,即
?
L1與L2距離的使用情景其實并沒有區分的很清楚,更多的是要實際去嘗試哪個更好
缺點:
每次對輸入圖像進行預測時,如果圖片的尺寸很大,像素很多(稱為高維數據),則需要耗費大量的時間進行比較,這對使用帶來了極大的不便,雖然這種缺點可以通過PCA降維的方法進行彌補(但PCA也只能夠提取線性相關的主成分)。再者,僅通過像素來比較圖像之間的差異是完全不夠的,這更像是對圖片按顏色分布進行分類,而不是按照圖片的語義來進行分類
K-Nearest Neighbor分類器
對于上述的Nearest Neighbor分類器而言,只選1個最相近的圖片可能會出現較大偏差,因此,我們可以選擇k個最相近的圖片,然后再在這k個圖片中選出頻數最高的標簽作為輸入圖像的標簽
優點:
選取更高的k值,可以使得分類的決策邊界(在選取差異最小的圖片的時候,相當于是尋找輸入圖片應當落入哪片合適的分類標簽區間)更加平滑,對于異常點的處理能力更強,使得分類器針對測試數據的泛化(generalization)能力更好
但K-Nearest Neighbor分類器會存在一些空白區間,它不屬于任何分類標簽,這是由于這些區間內的點到多種標簽的頻數相同導致的
Hyperparameter:
對于上文提到的K-Nearest Neighbor分類器,其中出現了k這個參數,而這個參數是我們人為提前預設好的,不同的k值會影響分類器的正確率,以及對差異量化的距離函數的選擇,是L1距離還是L2距離,都會影響分類器的性能。所有這些選擇,被稱為超參數(Hyperparameter)
超參數調優與驗證集(validation set):
想要找到使分類器性能最好的超參數,通常的辦法就是在一定范圍內嘗試多個不同的超參數的值,并驗證它的好壞,那么關鍵問題就是如何去評價一個超參數的好壞
做法:
將數據集合分為三部分,分別是訓練集(training set),驗證集(validation set),和測試集(test set)
在訓練時,我們使用training set進行訓練,并使用validation set來對超參數進行調優,找到最合適的超參數,然后使用test set來檢驗分類器的最終性能,這樣可以有效減少模型對訓練集、驗證集的過擬合現象
交叉驗證:
當訓練集數量較少時,(通常不用于深度學習),我們將訓練集分為n份,第i輪訓練時,我們按順序地選取其第i份作為validation set,剩下的n-1份作為training set,來得到驗證結果i,最后取i次驗證結果的平均值作為模型的評價
優點是能夠使用少量數據進行訓練,缺點是會耗費大量的計算資源,因為需要訓練的輪數變得很多