1. 程式人生 > >CS231n 學習筆記(1) Image CLassification

CS231n 學習筆記(1) Image CLassification

eight function 分享 便是 數據驅動 rain 分類問題 很難 特征

圖像分類是計算機視覺中的一項核心任務,那麽什麽是圖像分類?

例如,給你一個標簽集,其中包括(貓、狗、鳥、卡車、飛機...等) 然後給你一張圖片,那麽這張圖片屬於哪個類別呢?這就是一個分類問題

技術分享

跟人有區別的是計算機“看到”的圖是一堆數字組成的矩陣,彩色圖通常為RGB三通道組成的,灰度則為0~255數字組成的單通道圖片。

對於計算機來說識別物體面臨著許多的困難,如從不同的角度拍攝的物體,不同光照下的物體,發生形變的物體,被遮擋的物體,跟背景相似的物體以及同種類物體間的變化都會對識別造成困難。

下面看看什麽是圖片分類器,一個簡單的圖片分類器應該如下,輸入一副圖像,返回一個對應的標簽。

技術分享

分類器通常是數據驅動型的方法,其步驟一般是 : 1 收集帶標簽的圖像, 2 用機器學習方法在數據集上訓練模型, 3 在測試集上評估驗證模型

下面介紹一種簡單的分類器 nearest neighbor,也就是最鄰近模型,當比較前k個最鄰近時便是KNN。

lecture中介紹的數據集是cifar10,包括10類圖片,50000張訓練,10000張測試

技術分享

在NN中為了找出與輸入圖像最相近的圖像我們需要一種比較機制,這裏引入了L1 distance。

技術分享

上式中I1,I2分別為我們輸入的需要分類的測試圖像和訓練集圖像,拿一個簡單4*4的圖像做例子如下,對於位置像素做差後求和得到兩幅圖像間的距離。

技術分享

所以NN的train step 是記錄所有訓練圖像的數值, predict step 則是找出與測試圖片最近的圖片。 這裏我們發現一個問題就是沒預測一副圖像我們都需要計算所有訓練集圖片與測試圖片的距離,也就是測試

時間復雜度為O(N),而訓練的時間復雜度反而為O(1)。通常我們可以接受較長訓練的時間,而希望測試的時間能夠短些,而knn恰恰相反。另外NN算法還存在如何確定k值,如何確定合適的計算距離以及

計算時面臨維度爆炸等一系列的問題,而這些參數通常是依據你的問題而定的,往往需要我們在問題中尋找答案。

lecture中介紹了cross validation也就是交叉驗證,用來確定k的最佳值。 其將訓練集分為5個fold,每次分別用其中一個做驗證集,最後取平均得到結果。

技術分享

後面有提到距離機制對於像素的信息是很難提取的,最後給KNN的結論就是,不適合用在圖像分類領域。。

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

線性分類器

技術分享

通過一張圖片來理解什麽是線性分類。給定一張圖片作為輸入,通過對輸入特征(這裏中用的是像素值)的線性組合得到各類的分數來確定類別。

一個更加簡單直觀的例子,假設有一副4個像素的圖片,和3個類別。

技術分享

所以這裏我們通過定義了一個線性的score fun f(x,W) = Wx + b (這裏b是bias )來計算每類對應的得分,右面我們得到三類的分數。

這裏有個問題是我們如何評估W是否合適,後面將引進loss function也就是損失函數來評估W的好壞。同時也將介紹optimization 優化方法,從隨機的W開始最終得到一個最優的能夠使loss fun最小化的W。以及後面的convnet卷積網絡

CS231n 學習筆記(1) Image CLassification