[5機器學習]計算機視覺的世界-卷積神經網路(CNNs)
本文已參與「新人創作禮」活動,一起開啟掘金創作之路。
我們知道,資料不僅包含文字、數字,還包含圖片、影片等,如何更好地檢視、識別和解釋影象和影片的內容,就像人類視覺一樣,一直是目前人工智慧的主要研究方向。機器學習無疑是現代資料科學的核心,在經歷了幾十年迴歸、分類、決策樹、異常檢測的沉澱後,資料科學的魔爪也不斷地向更深度的學習試探。
一、計算機視覺的世界
今天,ofter會通過最簡單、易懂、完整的講解(儘量不出現公式之類枯燥的元素),帶大家領略計算機視覺的世界!
- 人工神經網路的常用模型,以及如何使用正確的模型;
- 人工神經網路的例項檢測和分割實戰應用。
二、常規神經網路(NNs)
圖片的本質是數字,通過對大量數字的處理,來實現我們對圖片的一系列處理:
- 影象分類
- 影象分類+定位
- 例項檢測
- 例項分割
- 影象風格轉換
- 影象著色
- 影像重建
- 影象超解析度
- 影象合成
最簡單的圖片型別,應該就是黑白的手寫數字圖了吧?這和我們小時候咿呀學語的狀況很像,一開始我們也是在紙上寫數字。從上圖中,也可以看出來,我們寫一個數字,就一筆,但計算機看到的卻是一長串數字列表。
為了模擬人類視覺神經對圖片的處理過程,有人發明了人工神經網路,其實就是把神經收發的訊號換成數字。
看下圖,Input Layer是一個個數字,也可以是一個個陣列,通過一層層的Hidden Layer加工處理,最後識別圖片中的內容。
不過呢,這個是對人類神經網路的初步模仿,無論是速度、準確度肯定都沒法與人類的視覺相比。因此,我們研究出了卷積神經網路(CNNs)、迴圈神經網路(RNNs)等模型來不斷進化我們的計算機,使得計算機的識別力無限逼近人類,甚至超越人類。
三、卷積神經網路(CNNs)
今天,我們重點介紹下卷積神經網路的發展過程以及常用模型。卷積神經網路大大提高了圖片的計算效能,它的架構下主要分為3個型別的層:卷積層、池化層、全連線層(神經網路)。
上圖,也很明顯,就是經過N次的卷積+池化,最後再進行常規的神經網路,輸出識別內容。因為,作為資料科學家,其實不需要知道具體的卷積層、池化層以及常規神經網路是怎麼運作的,我們只需要明白某個模型能帶來什麼樣的識別、效能、效果就可以了,所以我就不詳細展開每個模型具體每層是怎麼計算的了。
我們需要知道4個引數,這個在模型訓練時要定義:
• 過濾器大小 (Filter,例如3 × 13)
• 過濾器的數量 (我們要使用多少個過濾器,例如我們可以使用 20 個過濾器,則 k = 20)
• Stride (指定過濾器每次移動的步長,例如,Stride = 2)
• 零填充量 (添加了一層零值畫素(灰色區域),這樣我們的特徵圖就不會縮小,例如 Padding = 2)
\
四、卷積神經網路的應用
4.1 常用的架構
近10年的時間裡,我們研究了許多架構,效能、準確度也是不斷地提升,從下圖也可以看出來,總體上發展得比較迅速。
每一種架構,或多或少都有點站在前人肩膀上的意味,再加上自己的一些亮點。比如AlexNet、VGG、GoogleNet,它們基於卷積神經網路,在卷積層、池化層採用了不同的過濾器、不同數量的過濾器,不同的stride, padding,總之是各種排列組合,通過很多很多次的測試得到最佳案例。更多的架構:
4.2 訓練模型
主要有2種訓練方式:從頭開始訓練,預訓練模型遷移學習。
在實踐中,很少有人會從頭開始訓練整個卷積網路,從頭開始訓練一個準確的模型需要大量資料,大約數百萬個樣本,這需要大量時間。因此我們重點看下遷移學習,舉個簡單的例子,在學習識別汽車時獲得的知識可以應用於識別卡車。在哪裡找類似的預訓練模型呢?推薦一個網址:http://modelzoo.co
許多研究和開發人員為各種任務訓練機器學習模型,並在 Model Zoo 中共享他們的預訓練模型。作為資料科學家,你可以評估哪個模型更加適合你關注的場景和資料,或組合新用途,甚至改進以前釋出的模型。
4.3 影象處理
4.3.1 分類和定位
分類和定位比較好理解。
4.3.2 語義分割
語義分割的應用包括自動駕駛、醫學成像分析、工業檢測、室內導航,甚至虛擬或增強現實系統等。下圖是醫學成像的一個例子。
語義分割是將影象中的每種元素進行分類,具有相同標籤的畫素具有相同特徵。比如下圖:
但是,語義分割仍然不是一個成熟的領域,許多研究人員仍在研究它。 過去幾年已經開發出了許多新方法。
4.3.3 例項檢測
例項檢測模型主要有2大類:基於預測區域的模型和不基於預測區域的模型。
CSDN上也有好多YOLO、SSD的案例,總體來說,Faster R-CNN 比 YOLO/SSD 演算法慢,但更準確。因此,當實時性比較高的時候,我們肯定要採用YOLO這樣的模型,而實時性要求不高但準確度要求高的時候,我們就需要採用Faster R-CNN。
4.3.4 例項分割
Mask R-CNN 是非常有影響力的例項分割技術。 這是一個兩階段的框架:第一階段掃描影象並生成建議(可能包含物件的區域)。 第二階段對建議內容進行分類並生成邊框和蒙版。
五、總結
今天,ofter為大家介紹了些常用的深度學習模型和使用場景。需要使用機器學習的時候,你就知道大概要使用什麼樣的模型。下一期,我們將通過實戰,用python+tensorflow/keras等框架+模型進行圖片內容的識別。