深度學習在計算機視覺中應用綜述
前言
注意!注意!注意!本文是針對中國科學院計算所山世光教授於2017年1月7日於北京師範大學所做的《深度學習在計算機視覺中的應用與前景》講座的內容總結梳理。
1 視覺智慧的內涵
計算機視覺系統的任務就是像人一樣描述攝像機拍攝到的內容。
常見的視覺任務:
- 距離估計
- 目標檢測與跟蹤
- 物體分割
- 目標識別
- 內容理解
下圖所示就是計算機視覺任務中的物體識別的一個例子,如單一物體(圖中貓)的識別,或多物體的識別(如圖中的狗、貓和鴨子等的識別)。
從2012年到2016年,計算機視覺經歷了跨越式發展。在ImageNet ILSRVRC 影象分類上 1000類Top5錯誤率:26%-> 3.6%
2 視覺跨越式發展源於深度卷積網路CNN
2.1 計算機視覺的基本任務
- 針對待檢測圖片,識別出圖片中的目標物體物件;
- 對圖片內容進行理解,實現圖片的語義分割。
處理的流程圖如下:
2.2 深度學習的起源——生物神經網路
深度學習的基本原理是“加權投票模型”,它來源與生物神經學系統中的神經元系統的啟示。
如圖所示,生物學中,一個完成的神經元主要包括軸突和樹突兩大部分,神經訊號的傳遞主要是軸突的神經末梢受體釋放後經過突觸間隙被樹突的受體捕獲,產生電位傳遞給胞體。胞體將獲得的電訊號進行彙總給出決策:產生激勵訊號或者抑制。
最後整個大腦的決策就是所有神經元訊號的加權投票決策
2.3 人工神經網路
正是受到生物神經網路的啟發,我們在計算機中構建人工神經網路模型。
2.3.1 單一神經元模型
加權求和(卷積)+ 非線性啟用函式
如圖所示,我們的輸入訊號
激勵函式
我們常用的啟用函式有Sigmoid 和tanh 等函式,因為這些函式有光滑、連續、可導、有界等優良的性質。
2.3.2 人工神經網路
一個神經元看的更遠(視野更大、更寬)知識因為它站在了其他神經元的肩上。
神經網路是一種模仿生物神經網路(動物的中樞神經系統,特別是大腦)的結構和功能的數學模型或計算模型,用於對函式進行估計或近似。神經網路由大量的人工神經元聯結進行計算。
如圖所示,對於一幅影象的特徵,low-level 是一些簡單、底層的特徵(如畫素特徵),到了mid-level 就是一些複雜的特徵(如影象中的一些邊之類的特徵),到了high-level 就是更復雜的特徵(如影象中邊的組合特徵)。處在high-level 的神經元此時它們的決策就更抽象重要。
神經網路的訓練
- 網路結構認為確定
- 訓練集:“有標註” 的樣本
{Xk,Yk,k=1,2,⋯,N} - 學習目標——權重值:每個神經元都有大量的
wi 需要學習 - 學習方法——BP演算法:基本原理:調整權重,使最後層輸出錯誤率下降:
error=||Yo−Yg||
2.4 卷積神經網路(CNN)
卷積神經網路主要層疊包括以下三個步驟+全連線層
- 卷積層:區域性連線(卷積、濾波器…)
- 非線性啟用
- Pooling 層:下采樣,降維
下圖是一個經典的CNN結構,稱為LeNet-5網路,關於LeNet 的詳解可以參考 LeNet-5 網路詳解 。LeNet-5 網路共有7層(不包括輸入層),每層都包含不同數量的訓練引數,主要的有卷積層、下抽樣層、全連線層3中連線方式。從中可以看出,CNN中主要有兩種型別的網路層,分別是卷積層和池化/取樣層(Pooling)。
其中卷積層的作用是提取影象的各種特徵;池化層的作用是對原始特徵訊號進行抽樣,從而大幅減少訓練引數,另外還可以減輕模型過擬合的程度。
2.4.1 卷積層
卷積層是卷積核在上一級輸入層上通過逐一滑動視窗計算而得,卷積核中的每一個引數都相當於傳統神經網路中的權值引數,與對應的區域性畫素相連線,將卷積核的各個引數與對應的區域性畫素值相乘之和,(通常還要再加上一個偏置引數),得到卷積層上的結果。如下圖所示。
下面的動圖能夠更好地解釋卷積過程:
從圖中我們知道卷積的實質是區域性連線(卷積、濾波器)、共享權重(若干種濾波器,大大減少學習的權重數),等價於訊號中的濾波器。
2.4.2 非線性啟用
在卷積神經網路中,我們採用的是Sigmoid 等非線性函式,原因是如果是線性激勵,無論神經網路的層數有多少,最終都會坍塌為一個線性激勵。
2.4.3 池化/取樣層(Pooling)
通過卷積層獲得了影象的特徵之後,理論上我們可以直接使用這些特徵訓練分類器(如softmax),但是這樣做將面臨巨大的計算量的挑戰,而且容易產生過擬合的現象。為了進一步降低網路訓練引數及模型的過擬合程度,我們對卷積層進行池化/取樣(Pooling)處理。池化/取樣的方式通常有以下兩種:
- Max-Pooling: 選擇Pooling視窗中的最大值作為取樣值;
- Mean-Pooling: 將Pooling視窗中的所有值相加取平均,以平均值作為取樣值;
如下圖所示:
使用Pooling 技術的另一個目的也是為了獲取不變性:
- 小的平移不變性:有即可,不管在哪裡
- 旋轉不變性:9個不同朝向的filters。
2.4.4 CNN結構演化——新的功能模組
CNN+RNN/LSTM
其中CNN學習表示, RNN/LSTM 建模時序訊號
應用: Image Caption, Image QA, Viedo Representation
上圖所示:Show and tell: A neural image caption generator。
上圖所示: Long-term Recurrent Convolutional Networks 。
深度神經網路已經由傳統CNN 向RNN(CVPR14, TPAMI15)和 CNN Cascade 演進。
3 計算機視覺應用——人臉識別系統
全自動人臉識別系統流程:
深度學習主要作用在特徵提取器這一步上。
特徵提取器
第一代:完全人工涉及特徵
也是非常底層的特徵,包括幾何特徵,影象模板,Fourier 頻譜,如形狀,顏色,紋理,頻譜等
第一代特徵是知識驅動
第二代:(子空間)變換特徵
此時的特徵是經過處理或變換後的特徵,經過如PCA, LDA, LPP, SR 等特徵變換處理後得到的特徵。
第二代特徵是資料驅動(學習
W 矩陣,y=Wx )。第三代: 人工設計區域性特徵+ (子空間)變換特徵
如Gabor濾波器,LBP+PCA, LDA等
第三代特徵是知識+資料驅動,
y=W(f(x)) 。第四代:特徵學習
- 區域性特徵引數可學習
- 變換可學習
- 非線性
第四代特徵是完全資料驅動的特徵。
卷積神經網路(CNN) 本質上是層次抽象的濾波型區域性特徵。
其與之前區域性特徵的不同:
- Gabor :權值固定,人為設定(如加窗傅立葉型函式),沒有目標函式
- CNN: 資料驅動的權值學習(最有利於目標函式達成的)。
如圖所示,理想的深度卷積神經網路是從資料中學習多層特徵,如對影象中人臉的學習,可從底層的畫素特徵學習到第一層的邊的特徵,然後再到第2層基本臉部部位器官(如鼻子,嘴)等特徵,再到高維的特徵臉特徵。
4 總結
- 自從深度學習與深度卷積神經網路取得了重大的突破,其給計算機視覺領域帶來巨大的效能提升,深度模型極大推進了人臉識別能力,使得人臉的檢測與識別不再具有特殊性,其甚至在一些場景上超過了人眼能力。
- 深度學習本質上是特徵的學習,它也是隱式學習,借鑑的是生物神經元的思維模式,雖然對於學習到的模型在理論上無法做出清晰明顯的解釋,但是其極高的效能提高能力還是令相關領域的專家學者報以很高的學習熱情。
- 深度學習也由一些不足之處:如學習模型的計算量大,缺少基礎理論的支撐等。