課程目錄

本章主要介紹信息技術的發(fā)展背景,以及信息技術在社會發(fā)展中的重要地位,并介紹信息技術具體的典型應用和信息技術發(fā)展的新方向。

圖像分類

驅動:本節(jié)介紹在將輸入圖像劃分至預設的分類集合中某項類別中,所遇到的一些問題。盡管它在計算機視覺中很簡單,但仍然是其中的核心問題之一,具有各式各樣的應用。此外,在往后的課程中,很多看似不同的計算機視覺任務(如物體識別,分割)都可以被列為圖像分類。

案例:假如,將下圖通過圖像分類模型,匹配將其劃分至四類標簽{cat,dog,hat,mug},并計算出各類的相似概率。計算機認為下圖是一個大型的三維數據。例如,圖片大小為248 x400,包含RGB三個波段,那其相當于包含248 x 400 x 3 個像素點,共計297,600個。每個像素點值域為0~255,0代表黑色,255代表白色。我們的任務是將這個百萬個像素點劃分為統(tǒng)一的一個標簽,例如“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):由于圖片識別是與人相關的行為操作,但他需要從計算機視覺算法的角度思考問題。大體羅列下遇到的問題:


視角變量。同個物體可在不同的角度下拍攝,圖片結果截然不同。

尺度變量。物體具有大小的物理含義。

變形。物體拍攝的變形因素。

吸收變量。物體的興趣區(qū)域可能被隱藏。一些時候只有少量的興趣區(qū)域被展示出來(少至幾個像素)

照明變量。拍攝的光照條件影像像素結果的亮度值。

背景干擾。物體被相似的背景信息干擾,影響判別。

內部差異。物體內部可包含更細的子物體,各子物體不盡相同。

一個好的圖像分類模型必須對上述的變量具有不變性,同時能靈敏區(qū)分物體內部的差異因素。

這里寫圖片描述


數據驅動方法:編寫一個怎樣的算才能將圖像分類至特定的類別呢?顯然,諸如對像素數據的排序這些方式,并不能做到。因此,在嘗試通過編碼的方式對每種特定類型進行特殊定義之外,本文采用的方法是與一個你會帶一個孩子:我們將向計算機輸入樣例類別的圖片數據,開發(fā)出一種計算機學習的算法使計算機學習各類類別的數據特征。這種方法即稱為數據驅動的方式,因為它依賴于對分類圖像數據的學習。如下是一個分類集合的例子:


這里寫圖片描述

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.


圖像分類管線:我們了解到圖像分類在將一堆代表圖像信息的像素值數組識別一個特定的類別。其整個任務的流程如下所示:

- 輸入。數據輸入包括N幅已經分類好的影像,分類類別達K種。我們稱之為訓練樣本。

- 學習。我們的任務是通過訓練樣本學習各類圖像的特征信息。這部我們稱之為樣本訓練,或者模型學習。

- 預測。最后,我們通過對新數據的分類識別來評估分類模型的質量。比較圖像真實的分類信息和預測的分類信息。當然,我們希望預測結果與真實情況(我們稱之為the ground truth)相符。


最鄰近分類器

我們第一個方法,采用最鄰近分類器。這個分類器與卷積神經網絡無關且不常用,但它能給我們一個對圖像分類問題基本方法的一些靈感。

樣例的分類數據集:CIFAR-10。一個著名的圖像分類數據集便是CIFAR-10。它有 60,000個32x32的小圖像組成,每個圖像被標記為10個固定類別(如”airplane, automobile, bird,等”)中的一個。這60,000個圖像其中50,000 被劃分為訓練集,另外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.


假設當前我們有50,000 個已經分類的CIFAR-10訓練集數據,需要利用他們對剩余的10,000個數據進行分類。最鄰近分類器針對每一幅測試圖片,會去訓練集數據中一一比對,從而預報處最接近的一張訓練圖片。在上圖右側中,我們可以看到10張測試圖分別找到幾張最鄰近圖片。結果發(fā)現(xiàn),10個測試圖片中僅3幅比對到了正確的類別。例如,第八行中最鄰近的訓練圖片是一幅紅色的轎車,與真實的馬類別不符,這種情況可能是強背景導致的結果。因此,馬的圖像在本例中被錯認為一輛轎車。


大家可能思考我們如何比對兩張圖的方式,實際上它們只是 32 x 32 x 3的矩陣而已。其中一種最簡單的方式,就是一一對比每個像素值的差異,最后將其結果相加得到。換而言之,給予兩幅圖像,其矢量表示為 I1,I2,一個可行的比較方法可以是L1 distance:

d1(I1,I2)=∑p|Ip1−Ip2|


其中數據集合就是如此,以下是該公式的圖形化表示:

這里寫圖片描述

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這個參數的選擇成為一個問題(K值為多少時,分類效果最好),于是就是超參數調參方法,即Hyperparameter tuning。

tuning的過程有很多問題會出現(xiàn),需要考慮:過擬合、欠擬合等。

同時,有幾個關鍵的要點需要牢記:


Evaluate on the test set only a single time, at the very end.(測試集數據只能在最后的最后使用,最后測試識別效果的,調參的時候不能介入)

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.(把訓練集數據劃分為訓練集和驗證集數據。使用驗證集數據進行調參。最后,采用測試集數據進行測試,導出性能報告)

提供了兩種方法:最簡單的一種,及將原先的訓練樣本集再分割為兩部分,一部分為訓練集,一部分為驗證集,先訓練后驗證,調參。另一種(Cross-validation),將訓練樣本均分為若干部分,其中一部分為驗證集,其余的都為訓練集,然后訓練驗證,之后再選取另一部分為驗證集,其余為訓練集,進行訓練驗證。如此循環(huán),最后平均化所有的驗證精度,從而再確定調參。


這里寫圖片描述

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.


實際操作中,如果樣本數據多的話,可以直接使用第一種方法,如果樣本少的話,需要使用第二種方法,可將樣本集合均分為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)

- 不用訓練(只要圖片數據有就行,不需要生成訓練的一些結果)

缺點:

- 測試時花費計算時間(需要對每個圖片進行一一比對,很耗時。這個問題很重要,大家對訓練時間的長短并不介意,但對測試的時間很在意)

事實上,深度神經網絡后面發(fā)展了,將這個測試的代價轉移到另外的極端方向:訓練代價極其昂貴,而一旦訓練完畢,測試非常快速簡單。這種方式更適應于實際應用。


另外,最鄰近分類法的計算復雜度也是一個常見的研究方向,并已經開發(fā)出了一些近似最鄰近(ANN)算法和庫,來加速最鄰近查找方法 (e.g. FLANN)。這些算法權衡了最近李。。。。


最鄰近分類法子在某些情況下是個不錯的分類選擇(尤其是數據為低緯度的),但是它一般較少應用于實際的圖像分類應用中。一個問題是圖像是高緯度物體,包含很多像素值,且高緯度空間的距離很特殊。下圖就表示雖然圖片僅是鏤空部分或者變暗了一些,它與原圖的匹配相似度很低(pixel-wise距離),說明上述方法并不能用于知覺或語義相似度。


郵箱
huangbenjincv@163.com

楚雄市| 五大连池市| 宽城| 五指山市| 宁德市| 青州市| 双峰县| 许昌市| 迭部县| 翼城县| 巩义市| 桑植县| 苍梧县| 武汉市| 南漳县| 寿阳县| 涞源县| 磴口县| 昌平区| 景谷| 酉阳| 长沙县| 韩城市| 城步| 那坡县| 永泰县| 宣城市| 漳浦县| 灵石县| 石门县| 四平市| 汉沽区| 康乐县| 遂川县| 嘉兴市| 昌平区| 南充市| 志丹县| 永宁县| 阳西县| 凌源市|