本章主要介紹信息技術(shù)的發(fā)展背景,以及信息技術(shù)在社會發(fā)展中的重要地位,并介紹信息技術(shù)具體的典型應(yīng)用和信息技術(shù)發(fā)展的新方向。
圖像分類
驅(qū)動:本節(jié)介紹在將輸入圖像劃分至預(yù)設(shè)的分類集合中某項類別中,所遇到的一些問題。盡管它在計算機視覺中很簡單,但仍然是其中的核心問題之一,具有各式各樣的應(yīng)用。此外,在往后的課程中,很多看似不同的計算機視覺任務(wù)(如物體識別,分割)都可以被列為圖像分類。
案例:假如,將下圖通過圖像分類模型,匹配將其劃分至四類標(biāo)簽{cat,dog,hat,mug},并計算出各類的相似概率。計算機認(rèn)為下圖是一個大型的三維數(shù)據(jù)。例如,圖片大小為248 x400,包含RGB三個波段,那其相當(dāng)于包含248 x 400 x 3 個像素點,共計297,600個。每個像素點值域為0~255,0代表黑色,255代表白色。我們的任務(wù)是將這個百萬個像素點劃分為統(tǒng)一的一個標(biāo)簽,例如“cat”。
這里寫圖片描述
The task in Image Classification is to predict a single label (or a distribution over labels as shown here to indicate our confidence) for a given image. Images are 3-dimensional arrays of integers from 0 to 255, of size Width x Height x 3. The 3 represents the three color channels Red, Green, Blue.
挑戰(zhàn):由于圖片識別是與人相關(guān)的行為操作,但他需要從計算機視覺算法的角度思考問題。大體羅列下遇到的問題:
視角變量。同個物體可在不同的角度下拍攝,圖片結(jié)果截然不同。
尺度變量。物體具有大小的物理含義。
變形。物體拍攝的變形因素。
吸收變量。物體的興趣區(qū)域可能被隱藏。一些時候只有少量的興趣區(qū)域被展示出來(少至幾個像素)
照明變量。拍攝的光照條件影像像素結(jié)果的亮度值。
背景干擾。物體被相似的背景信息干擾,影響判別。
內(nèi)部差異。物體內(nèi)部可包含更細的子物體,各子物體不盡相同。
一個好的圖像分類模型必須對上述的變量具有不變性,同時能靈敏區(qū)分物體內(nèi)部的差異因素。
這里寫圖片描述
數(shù)據(jù)驅(qū)動方法:編寫一個怎樣的算才能將圖像分類至特定的類別呢?顯然,諸如對像素數(shù)據(jù)的排序這些方式,并不能做到。因此,在嘗試通過編碼的方式對每種特定類型進行特殊定義之外,本文采用的方法是與一個你會帶一個孩子:我們將向計算機輸入樣例類別的圖片數(shù)據(jù),開發(fā)出一種計算機學(xué)習(xí)的算法使計算機學(xué)習(xí)各類類別的數(shù)據(jù)特征。這種方法即稱為數(shù)據(jù)驅(qū)動的方式,因為它依賴于對分類圖像數(shù)據(jù)的學(xué)習(xí)。如下是一個分類集合的例子:
這里寫圖片描述
An example training set for four visual categories. In practice we may have thousands of categories and hundreds of thousands of images for each category.
圖像分類管線:我們了解到圖像分類在將一堆代表圖像信息的像素值數(shù)組識別一個特定的類別。其整個任務(wù)的流程如下所示:
- 輸入。數(shù)據(jù)輸入包括N幅已經(jīng)分類好的影像,分類類別達K種。我們稱之為訓(xùn)練樣本。
- 學(xué)習(xí)。我們的任務(wù)是通過訓(xùn)練樣本學(xué)習(xí)各類圖像的特征信息。這部我們稱之為樣本訓(xùn)練,或者模型學(xué)習(xí)。
- 預(yù)測。最后,我們通過對新數(shù)據(jù)的分類識別來評估分類模型的質(zhì)量。比較圖像真實的分類信息和預(yù)測的分類信息。當(dāng)然,我們希望預(yù)測結(jié)果與真實情況(我們稱之為the ground truth)相符。
最鄰近分類器
我們第一個方法,采用最鄰近分類器。這個分類器與卷積神經(jīng)網(wǎng)絡(luò)無關(guān)且不常用,但它能給我們一個對圖像分類問題基本方法的一些靈感。
樣例的分類數(shù)據(jù)集:CIFAR-10。一個著名的圖像分類數(shù)據(jù)集便是CIFAR-10。它有 60,000個32x32的小圖像組成,每個圖像被標(biāo)記為10個固定類別(如”airplane, automobile, bird,等”)中的一個。這60,000個圖像其中50,000 被劃分為訓(xùn)練集,另外10,000 被劃分為測試集。下圖隨機從10類中挑選樣本圖片。
這里寫圖片描述
Left: Example images from the CIFAR-10 dataset. Right: first column shows a few test images and next to each we show the top 10 nearest neighbors in the training set according to pixel-wise difference.
假設(shè)當(dāng)前我們有50,000 個已經(jīng)分類的CIFAR-10訓(xùn)練集數(shù)據(jù),需要利用他們對剩余的10,000個數(shù)據(jù)進行分類。最鄰近分類器針對每一幅測試圖片,會去訓(xùn)練集數(shù)據(jù)中一一比對,從而預(yù)報處最接近的一張訓(xùn)練圖片。在上圖右側(cè)中,我們可以看到10張測試圖分別找到幾張最鄰近圖片。結(jié)果發(fā)現(xiàn),10個測試圖片中僅3幅比對到了正確的類別。例如,第八行中最鄰近的訓(xùn)練圖片是一幅紅色的轎車,與真實的馬類別不符,這種情況可能是強背景導(dǎo)致的結(jié)果。因此,馬的圖像在本例中被錯認(rèn)為一輛轎車。
大家可能思考我們?nèi)绾伪葘蓮垐D的方式,實際上它們只是 32 x 32 x 3的矩陣而已。其中一種最簡單的方式,就是一一對比每個像素值的差異,最后將其結(jié)果相加得到。換而言之,給予兩幅圖像,其矢量表示為 I1,I2,一個可行的比較方法可以是L1 distance:
d1(I1,I2)=∑p|Ip1−Ip2|
其中數(shù)據(jù)集合就是如此,以下是該公式的圖形化表示:
這里寫圖片描述
An example of using pixel-wise differences to compare two images with L1 distance (for one color channel in this example). Two images are subtracted elementwise and then all differences are added up to a single number. If two images are identical the result will be zero. But if the images are very different the result will be large.
后面引申出了最鄰近的K個值的算法,從最鄰近的一個分類擴展為K個分類。
與此同時,對K這個參數(shù)的選擇成為一個問題(K值為多少時,分類效果最好),于是就是超參數(shù)調(diào)參方法,即Hyperparameter tuning。
tuning的過程有很多問題會出現(xiàn),需要考慮:過擬合、欠擬合等。
同時,有幾個關(guān)鍵的要點需要牢記:
Evaluate on the test set only a single time, at the very end.(測試集數(shù)據(jù)只能在最后的最后使用,最后測試識別效果的,調(diào)參的時候不能介入)
Split your training set into training set and a validation set. Use validation set to tune all hyperparameters. At the end run a single time on the test set and report performance.(把訓(xùn)練集數(shù)據(jù)劃分為訓(xùn)練集和驗證集數(shù)據(jù)。使用驗證集數(shù)據(jù)進行調(diào)參。最后,采用測試集數(shù)據(jù)進行測試,導(dǎo)出性能報告)
提供了兩種方法:最簡單的一種,及將原先的訓(xùn)練樣本集再分割為兩部分,一部分為訓(xùn)練集,一部分為驗證集,先訓(xùn)練后驗證,調(diào)參。另一種(Cross-validation),將訓(xùn)練樣本均分為若干部分,其中一部分為驗證集,其余的都為訓(xùn)練集,然后訓(xùn)練驗證,之后再選取另一部分為驗證集,其余為訓(xùn)練集,進行訓(xùn)練驗證。如此循環(huán),最后平均化所有的驗證精度,從而再確定調(diào)參。
這里寫圖片描述
Example of a 5-fold cross-validation run for the parameter k. For each value of k we train on 4 folds and evaluate on the 5th. Hence, for each k we receive 5 accuracies on the validation fold (accuracy is the y-axis, each result is a point). The trend line is drawn through the average of the results for each k and the error bars indicate the standard deviation. Note that in this particular case, the cross-validation suggests that a value of about k = 7 works best on this particular dataset (corresponding to the peak in the plot). If we used more than 5 folds, we might expect to see a smoother (i.e. less noisy) curve.
實際操作中,如果樣本數(shù)據(jù)多的話,可以直接使用第一種方法,如果樣本少的話,需要使用第二種方法,可將樣本集合均分為3、5、10類等等。
這里寫圖片描述
Common data splits. A training and test set is given. The training set is split into folds (for example 5 folds here). The folds 1-4 become the training set. One fold (e.g. fold 5 here in yellow) is denoted as the Validation fold and is used to tune the hyperparameters. Cross-validation goes a step further iterates over the choice of which fold is the validation fold, separately from 1-5. This would be referred to as 5-fold cross-validation. In the very end once the model is trained and all the best hyperparameters were determined, the model is evaluated a single time on the test data (red).
最鄰近分類器的優(yōu)缺點
優(yōu)點:
- 算法簡單可實現(xiàn)
- 不用訓(xùn)練(只要圖片數(shù)據(jù)有就行,不需要生成訓(xùn)練的一些結(jié)果)
缺點:
- 測試時花費計算時間(需要對每個圖片進行一一比對,很耗時。這個問題很重要,大家對訓(xùn)練時間的長短并不介意,但對測試的時間很在意)
事實上,深度神經(jīng)網(wǎng)絡(luò)后面發(fā)展了,將這個測試的代價轉(zhuǎn)移到另外的極端方向:訓(xùn)練代價極其昂貴,而一旦訓(xùn)練完畢,測試非常快速簡單。這種方式更適應(yīng)于實際應(yīng)用。
另外,最鄰近分類法的計算復(fù)雜度也是一個常見的研究方向,并已經(jīng)開發(fā)出了一些近似最鄰近(ANN)算法和庫,來加速最鄰近查找方法 (e.g. FLANN)。這些算法權(quán)衡了最近李。。。。
最鄰近分類法子在某些情況下是個不錯的分類選擇(尤其是數(shù)據(jù)為低緯度的),但是它一般較少應(yīng)用于實際的圖像分類應(yīng)用中。一個問題是圖像是高緯度物體,包含很多像素值,且高緯度空間的距離很特殊。下圖就表示雖然圖片僅是鏤空部分或者變暗了一些,它與原圖的匹配相似度很低(pixel-wise距離),說明上述方法并不能用于知覺或語義相似度。