卷積神經網絡(CNN)簡易教程

2021-01-07 人工智慧遇見磐創

讓我們先來了解一下我們的大腦是如何識別物體的。我們將學習什麼是CNN, CNN如何利用大腦的啟發進行物體識別,CNN是如何工作的。

讓我們來了解一下我們的大腦是如何識別圖像的

根據諾貝爾獎獲得者Hubel和Wiesel教授的說法,視覺區域V1由簡單細胞和複雜細胞組成。簡單的單元有助於特徵檢測,而複雜的單元則結合了來自小空間鄰域的多個這樣的局部特徵。空間池有助於實現平移不變特徵。

當我們看到一個新的圖像時,我們可以從左到右和從上到下掃描圖像,以了解圖像的不同特徵。我們的下一步是結合我們掃描的不同的局部特徵來對圖像進行分類。CNN就是這樣工作的

平移不變特徵是什麼意思?

圖像的不變性意味著,即使圖像旋轉、大小不同或在不同照明下觀看,對象也將被識別為同一對象。

這有助於對象識別,因為圖像表示對圖像變換(如平移、旋轉或小變形等)保持不變。

我們使用卷積神經網絡進行圖像識別和分類。

讓我們了解什麼是CNN,以及我們如何使用它。

CNN是什麼?

CNN是Convolutional Neural Network卷積神經網絡的縮寫,卷積神經網絡是一種專門用來處理數據的神經網絡,它的輸入形狀類似於二維的矩陣圖像。

CNN通常用於圖像檢測和分類。圖像是二維的像素矩陣,我們在其上運行CNN來識別圖像或對圖像進行分類。識別一個圖像是一個人,還是一輛車,或者只是一個地址上的數字。

和神經網絡一樣,CNN也從大腦中獲取啟發。我們使用Hubel和Wiesel提出的對象識別模型。

卷積是什麼?

卷積是一種數學運算,其中我們有一個輸入I和一個參數核K來產生一個輸出。

讓我們用圖像來解釋。

我們有一個圖像「x」,它是一個具有不同顏色通道(紅色、綠色和藍色RGB)的二維像素矩陣,我們有一個特徵檢測器或核「w」,然後應用數學運算後得到的輸出稱為特徵圖

這個數學運算有助於計算兩個信號的相似度。

我們可能有一個特徵檢測器或濾波器來識別圖像中的邊緣,所以卷積運算將有助於我們識別圖像中的邊緣。

我們通常假設卷積函數在除存儲值的有限點集外的任何地方都為零。

I是二維數組,K是核卷積函數

因為卷積是可交換的,我們可以把上面的方程重新寫一下,如下圖所示。我們這樣做是為了便於在機器學習中實現,因為m和n的有效值範圍變化較小。這是大多數神經網絡使用的互相關函數。

以上是互相關函數

那麼,我們如何在CNN中實現它呢?

我們實現它的方式是通過卷積層

卷積層是CNN的核心構件,它有助於特徵檢測。

核K是一組可學習的過濾器,與圖像相比,它在空間上很小,但是可以擴展到整個輸入圖像的深度。

理解這一點的一個簡單方法是,如果你是一名偵探,你在黑暗中看到一幅很大的圖像或一幅畫,你將如何識別圖像?

你將使用你的手電筒和掃描整個圖像。這正是我們在卷積層中所做的。

核K是一個特徵檢測器,它相當於圖像I上的手電筒,我們正在嘗試檢測特徵並創建多個特徵圖來幫助我們識別或分類圖像。

我們有多個特徵探測器,以幫助像邊緣檢測,識別不同的形狀,彎曲或不同的顏色等事情。

這一切是如何運作的?

讓我們取一幅3通道5×5矩陣的圖像(RGB), 3通道3×3的特徵檢測器(RGB),然後以步長為1來掃描圖像上的特徵檢測器。

當我在圖像上應用特徵檢測時,輸出矩陣或特徵圖的維數是多少?

特徵圖的維數與輸入圖像的大小(W)、特徵檢測器的大小(F)、步長(S)和圖像的填充大小(P)有關

(WF+2p)/S + 1

在我們的例子中,W是輸入圖像的大小,為5。

F是特徵檢測器接受域大小,在我們的例子中,為3

步長(S)為1,圖像上使用的填充大小(P)為0。

因此,我們的特徵圖維度為(5-3+0)/1+1=3。

因此特徵圖將是一個3*3的矩陣,有3個通道(RGB)。

下面一步一步進行解釋

我們看到5×5的輸入圖像被簡化為3×3的特徵圖,通道為3(RGB)

我們使用多個特徵檢測器來尋找邊緣,我們可以使用特徵檢測器來銳化圖像或模糊圖像。

如果我們不想減少特徵圖的維數,那麼我們可以使用如下所示的填充0

在這種情況下應用相同的公式,我們得到

(WF + 2 p) / S + 1 => (5 - 3 +2)/1 + 1= 5,

現在輸出的尺寸將是5×5,帶有3個顏色通道(RGB)。

讓我們看看這一切是如何運作的

如果我們有一個3×3的特徵檢測器或濾波器,一個偏置單元,那麼我們首先應用如下所示的線性變換

輸出=輸入*權重+偏差

參數個數 = (3 * 3 * 3)+1 = 28

對於100個特徵檢測器或過濾器,參數的數量將是2800。

在每一個線性函數的卷積運算之後,我們應用ReLU激活函數。ReLU激活函數在卷積層中引入了非線性。

它將特徵圖中的所有負像素值替換為零。

下圖是應用ReLU激活函數後的特徵圖變換。

現在我們已經完成了局部區域的特徵檢測,我們將結合所有這些來自空間鄰域的特徵檢測來構建圖像。

記住你是一個在黑暗中掃描圖像的偵探,你現在已經從左到右、從上到下掃描了圖像。現在我們需要結合所有的特徵來識別圖像

池化

我們現在應用池來獲得平移不變性。

平移的不變性意味著當我們少量改變輸入時,合併的輸出不會改變。這有助於檢測輸入中常見的特徵,如圖像中的邊緣或圖像中的顏色

我們使用最大池函數,它提供了比最小或平均池更好的性能。

當我們使用最大池時,它總結了整個鄰居的輸出。與原來的特徵圖相比,我們現在有更少的單元。

在我們的例子中,我們使用一個2x2的框掃描所有的特徵圖,並找到最大值。

現在我們知道卷積網絡由以下構成

並行的多重卷積,輸出是線性激活函數卷積層中應用非線性函數ReLU使用像最大池這樣的池函數來匯總附近位置的統計信息。這有助於「平移不變性」我們將結果展平,然後將其輸入到全連接神經網絡下圖是完整的卷積神經網絡

卷積使用了三個重要的思想

稀疏的交互參數共享等變表示稀疏交互或稀疏權值是通過使用小於輸入圖像的核或特徵檢測器來實現的。

如果我們有一個大小為256 * 256的輸入圖像,那麼就很難檢測到圖像中的邊緣,因為其可能只佔圖像中像素的一個更小的子集。如果我們使用更小的特徵檢測器,那麼當我們專注於局部特徵識別時,就可以很容易地識別邊緣。

另一個優點是計算輸出所需的操作更少,從而提高了統計效率。

參數共享用於控制CNN中使用的參數或權值的數量。

在傳統的神經網絡中,每個權值只使用一次,但是在CNN中,我們假設如果一個特徵檢測器可以用來計算一個空間位置,那麼它可以用來計算一個不同的空間位置。

當我們在CNN中共享參數時,它減少了需要學習的參數的數量,也減少了計算需求。

等變表示

這意味著目標檢測對光照、位置的變化是不變的,而內部表示對這些變化是等方差的

相關焦點

  • 教程 | 基於Matlab的卷積神經網絡(CNN)
    原文連結:https://blog.csdn.net/walegahaha/article/details/51603040原文標題:卷積神經網絡
  • CNN卷積神經網絡實例(基於pytorch)
    1.關於卷積神經網絡卷積神經網絡(Convolutional Neural Network,CNN) 是一種具有局部連接、權重共享等特徵的深層前饋神經網絡
  • Matlab編程之——卷積神經網絡CNN代碼解析
    deepLearnToolbox-master是一個深度學習matlab包,裡面含有很多機器學習算法,如卷積神經網絡CNN,深度信念網絡DBN,
  • 【深度學習】卷積神經網絡-CNN簡單理論介紹
    當然,這裡默認讀者對神經網絡有一定的了解和認識,如果有疑問可留言,本文也不介紹太多關於數學的內容,以便於讀者理解,如有需要後期更新相關數學推導。1 卷積神經網絡簡介通常有:當然也還包括神經網絡常用的激活層,正則化層等。
  • 數據分析之道|CNN卷積神經網絡之文本分類
    卷積神經網絡(Convolutional Neural Networks, CNN)
  • 卷積神經網絡算法的一個實現
    卷積神經網絡CNN是Deep Learning的一個重要算法,在很多應用上表現出卓越的效果,[1]中對比多重算法在文檔字符識別的效果,結論是CNN優於其他所有的算法。CNN在手寫體識別取得最好的效果,[2]將CNN應用在基於人臉的性別識別,效果也非常不錯。前段時間我用BP神經網絡對手機拍照圖片的數字進行識別,效果還算不錯,接近98%,但在漢字識別上表現不佳,於是想試試卷積神經網絡。
  • 卷積神經網絡(CNN)綜述
    卷積神經網絡概念2. 卷積神經網絡的特點   2.1 局部區域連接   2.2 權值共享   2.3 降採樣3. 卷積神經網絡的結構   3.1 卷積層   3.2 池化層4. 卷積神經網絡的研究進展1.
  • 卷積神經網絡小白入門手冊
    學習深度學習,最常接觸到的就是各式各樣的神經網絡了,其中卷積神經網絡是諸多神經網絡中最典型最常用的神經網絡了。本文原始素材來源於freecodecamp博客,經本人翻譯首發於此。希望能幫助到大家!覺得不錯就點個讚,或者關注下我吧,後續我還會分享更多相關的精彩內容。
  • 用於圖像分割的卷積神經網絡:從R-CNN到Mask R-CNN
    選自Athelas作者:Dhruv Parthasarathy機器之心編譯參與:王宇欣、hustcxy、黃小天卷積神經網絡(CNN)的作用遠不止分類那麼簡單!在本文中,我們將看到卷積神經網絡(CNN)如何在圖像實例分割任務中提升其結果。
  • CNN卷積神經網絡— LeNet(二)
    一般神經網絡VS卷積神經網絡:相同點:卷積神經網絡也使用一種反向傳播算法(BP)來進行訓練不同點:網絡結構不同。卷積神經網絡的網絡連接具有局部連接、參數共享的特點。局部連接:是相對於普通神經網絡的全連接而言的,是指這一層的某個節點只與上一層的部分節點相連。參數共享:是指一層中多個節點的連接共享相同的一組參數。
  • 卷積神經網絡(CNN)新手指南
    然而最經典的,或者說最流行的神經網絡使用範例是將其用於圖像處理領域。提到圖像處理,本文主要介紹的是如何使用卷積神經網絡來進行圖像分類。以類似的方式計算機能夠進行圖像分類任務,通過尋找低層次的特徵如邊緣和曲線,然後運用一系列的卷積層建立一個更抽象的概念。這是卷積神經網絡應用的一個總體概述,接下來我們來探討下細節。生物聯繫首先要稍微普及下一點背景知識,當你第一次聽到卷積神經網絡這個詞時,你也許會想這是是不與神經科學或者生物學有關?恭喜你,猜對了一部分。
  • 9 大主題卷積神經網絡(CNN)的 PyTorch 實現
    這份資源已經開源在了 GitHub 上,連結如下:https://github.com/shanglianlm0525/PyTorch-Networks先來個總結介紹,該系列的卷積神經網絡實現包含了 9 大主題,目錄如下:1. 典型網絡2.
  • 卷積神經網絡(CNN)
    1.卷積神經網絡是在CNN也運用前向傳播與反向傳播求解參數卷積神經網絡(Convolutional Neural Networks,CNN)由若干個卷積層和池化層組成的深度神經網絡,它屬於深度神經網絡的一個特例,它用於圖像識別和自然語言處理
  • CNN卷積神經網絡
    CNN卷積神經網絡卷積神經網絡通常包含以下幾種層:卷積層(Convolutional layer),卷積神經網路中每層卷積層由若干卷積單元組成
  • CNN卷積神經網絡層級結構
    在傳統的神經網絡中,比如多層感知機(MLP),其輸入通常是一個特徵向量:需要人工設計特徵,然後將這些特徵計算的值組成特徵向量,在過去幾十年的經驗來看,人工找到的特徵並不是怎麼好用,特徵有時多了(需要PCA降維),特徵有時少了(容易過擬合),有時選擇的特徵根本就不起作用(真正起作用的特徵在浩瀚的未知裡面)。這就是為什麼在過去卷積神經網絡一直被SVM等完虐的原因。
  • 一文讀懂卷積神經網絡CNN
    卷積神經網絡簡介(Convolutional Neural Networks,簡稱CNN)卷積神經網絡是近年發展起來,並引起廣泛重視的一種高效識別方法。現在,CNN已經成為眾多科學領域的研究熱點之一,特別是在模式分類領域,由於該網絡避免了對圖像的複雜前期預處理,可以直接輸入原始圖像,因而得到了更為廣泛的應用。K.Fukushima在1980年提出的新識別機是卷積神經網絡的第一個實現網絡。隨後,更多的科研工作者對該網絡進行了改進。
  • 輕鬆學pytorch-構建卷積神經網絡
    大家好,這個是我的pytorch學習筆記第三篇,主要是使用pytorch來構建一個簡單的卷積神經網絡,完成mnist手寫字符識別。涉及到主要知識點是如何使用torch.nn.Module這個基類來實現一個網絡結構定義。這個基類中最重要的是實現自己的forward方法,這個也是自定義網絡結構的實現方法。
  • 如何設計卷積神經網絡CNN?
    所以設計網絡結構還真是一件非常費事費力的事情。如何設計CNN網絡架構資料匯總在inception和resnet網絡提出並相對完善以後,網絡結構的設計就不再爆發式出現了,這兩大類網路涵蓋了大部分應用的卷積網絡結構。!很有用——基於CNN的圖形分類綜合設計指南對於大多數應用來說,應該使用遷移學習而不是從頭訓練網絡。
  • 卷積神經網絡及Python代碼實現
    blogId=97卷積神經網絡(Convolutional Neural Network,CNN)是將二維離散卷積運算和人工神經網絡相結合的一種深度神經網絡。它的特點是可以自動提取特徵。有關卷積神經網絡的數學原理和訓練過程請見我的另一篇文章《機器學習教程 十五-細解卷積神經網絡》。
  • 卷積神經網絡(CNN)介紹與實踐
    - 來源:http://cs231n.github.io/classification/為了「教會」一種算法如何識別圖像中的對象,我們使用特定類型的人工神經網絡:卷積神經網絡(CNN)。他們的名字源於網絡中最重要的一個操作:卷積。卷積神經網絡受到大腦的啟發。