深度學習|Tensorflow圖像識別基礎(二)

    前面我們用簡單的方法來訓練我們的模型,且w和b我們都是置零操作。對於這種簡單的圖片識別可能還有效果,稍微複雜一點的圖片只怕這個網絡就不行了。現在在圖像識別領域最火的就是CNN算法了。我這裏只放一張結構圖,不過你先需要了解神經網絡,我推薦這篇博文,寫的真的非常棒。CNN推薦這篇,不過是全英文,理解起來可能費勁。

                                            

    我們不去研究它的前世今生了(不過真的是非常有意思),我們學習該怎麼理解並使用它。

    手寫字只是灰度圖,而更多的現在是RGB圖片,這些圖片每張在計算機上就是一個寬width, 高height, 深depth 來描述的 。它就是一個三維張量,然後展開成一個向量作爲我們的輸入層。其次卷積神經網絡滿足了畫面不變性這個必要條件。怎麼做到的呢?讓權重在不同位置共享。

    還要說說神經元怎麼理解,你可以把它當作一個計算存儲單元,上一層傳來的數據經過計算存儲後傳給下一層。看看這張圖,在網上流傳甚廣,它幹了什麼呢?也就是像素的加權求和,作用就是特徵提取。黃色的3x3矩陣叫做卷積核,普通的卷積操作,卷積核是已知的,而卷積神經網絡中卷積核是未知的。它需要我們訓練的時候得出。這就是卷積層的工作。


    

     注意上面的可以看作是depth爲1的卷積,多維你可以想想一下,應該很好理解。

    經過線性組合和偏移後,我們加入非線性來增強模型的擬合能力,最常用的就是ReLU激活函數,也叫修正線性單元,它是一個分段函數,0以上爲線性函數,0以下爲0。這層叫做激勵層,也叫做非線性轉化層。它的位置很靈活,而且可能不止一次被使用。

    卷積之後還有一個pooling的操作,不知誰翻的池化層,很直白但是具體工作說起來就是採樣。不如叫採樣層?這個很類似於高斯去噪,局部範圍取最大,也有取平均的,一般都是取最大。這樣做的好處就是去掉一些冗餘信息,當然可能其他像素點是否對識別有沒有影響?我們不知道,這就可能出錯。不過總的來說這是一個比較好的方法了。

    上面的步驟總的來說是提取特徵,然後特徵我們該如何處理呢?我們是不是該給圖片分類了,全連接層就是用來將最後的輸出映射到線性可分的空間。通常送入全連接層進行分類的是平攤的向量,然後配合其進行分類。

    當然輸出層就是全連接層的分類結果。

    還有幾個概念:

    超參數:就是學習之前自定義的量,比如學習率(梯度下降的步長),隱藏層數等。

    正則化:降低模型複雜度以減少過擬合。

    反向傳播:梯度下降法的變形。

    dropout: 防止過擬合,具體請看這篇博文

    說了很多,還是要用實例來說明,網上很多,然後我看到一位仁兄寫的挺細的,貼在這裏。他是訓練自己的圖片,準確率不高,說更新也沒後文了。。

    我建議去看這個博文,每一步寫的很清楚,學習後大概就懂了基本流程。

    然後,後續我會去學習fast-RCNN還有faster-RCNN,用於目標檢測,學習後繼續分享心得。我放了很多鏈接是因爲他們寫的很好,我的理解不一定比他們好,學習的過程總是要博採衆長。

    祝學習愉快!


詳細代碼請訪問:

    https://github.com/chenzhibin29/MNIST

    

    

    

發佈了45 篇原創文章 · 獲贊 15 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章