一文搞懂卷積神經(jīng)網(wǎng)絡(luò)(CNN)的原理(超詳細(xì))
卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,CNN)是一種在計(jì)算機(jī)視覺領(lǐng)域取得了巨大成功的深度學(xué)習(xí)模型。它們的設(shè)計(jì)靈感來自于生物學(xué)中的視覺系統(tǒng),旨在模擬人類視覺處理的方式。在過去的幾年中,CNN已經(jīng)在圖像識(shí)別、目標(biāo)檢測(cè)、圖像生成和許多其他領(lǐng)域取得了顯著的進(jìn)展,成為了計(jì)算機(jī)視覺和深度學(xué)習(xí)研究的重要組成部分。
在了解卷積神經(jīng)網(wǎng)絡(luò)前,我們先來看看圖像的原理:
圖像在計(jì)算機(jī)中是一堆按順序排列的數(shù)字,數(shù)值為0到255。0表示最暗,255表示最亮。?如下圖:
上圖是只有黑白顏色的灰度圖,而更普遍的圖片表達(dá)方式是RGB顏色模型,即紅、綠、藍(lán)三原色的色光以不同的比例相加,以產(chǎn)生多種多樣的色光。RGB顏色模型中,單個(gè)矩陣就擴(kuò)展成了有序排列的三個(gè)矩陣,也可以用三維張量去理解。
其中的每一個(gè)矩陣又叫這個(gè)圖片的一個(gè)channel(通道),寬, 高, 深來描述。
二、為什么要學(xué)習(xí)卷積神經(jīng)網(wǎng)絡(luò)?
在傳統(tǒng)神經(jīng)網(wǎng)絡(luò)中,我們要識(shí)別下圖紅色框中的圖像時(shí),我們很可能識(shí)別不出來,因?yàn)檫@六張圖的位置都不通,計(jì)算機(jī)無法分辨出他們其實(shí)是一種形狀或物體。
傳統(tǒng)神經(jīng)網(wǎng)絡(luò)原理如下圖:
我們希望一個(gè)物體不管在畫面左側(cè)還是右側(cè),都會(huì)被識(shí)別為同一物體,這一特點(diǎn)就是不變性。為了實(shí)現(xiàn)平移不變性,卷積神經(jīng)網(wǎng)絡(luò)(CNN)等深度學(xué)習(xí)模型在卷積層中使用了卷積操作,這個(gè)操作可以捕捉到圖像中的局部特征而不受其位置的影響。
三、什么是卷積?
在卷積神經(jīng)網(wǎng)絡(luò)中,卷積操作是指將一個(gè)可移動(dòng)的小窗口(稱為數(shù)據(jù)窗口,如下圖綠色矩形)與圖像進(jìn)行逐元素相乘然后相加的操作。這個(gè)小窗口其實(shí)是一組固定的權(quán)重,它可以被看作是一個(gè)特定的濾波器(filter)或卷積核。這個(gè)操作的名稱“卷積”,源自于這種元素級(jí)相乘和求和的過程。這一操作是卷積神經(jīng)網(wǎng)絡(luò)名字的來源。
上圖這個(gè)綠色小窗就是數(shù)據(jù)窗口。簡(jiǎn)而言之,卷積操作就是用一個(gè)可移動(dòng)的小窗口來提取圖像中的特征,這個(gè)小窗口包含了一組特定的權(quán)重,通過與圖像的不同位置進(jìn)行卷積操作,網(wǎng)絡(luò)能夠?qū)W習(xí)并捕捉到不同特征的信息。文字解釋可能太難懂,下面直接上動(dòng)圖:
這張圖中藍(lán)色的框就是指一個(gè)數(shù)據(jù)窗口,紅色框?yàn)榫矸e核(濾波器),最后得到的綠色方形就是卷積的結(jié)果(數(shù)據(jù)窗口中的數(shù)據(jù)與卷積核逐個(gè)元素相乘再求和)
一張圖帶你了解卷積計(jì)算過程
卷積需要注意哪些問題?
a.步長(zhǎng)stride:每次滑動(dòng)的位置步長(zhǎng)。
b. 卷積核的個(gè)數(shù):決定輸出的depth厚度。同時(shí)代表卷積核的個(gè)數(shù)。
c. 填充值z(mì)ero-padding:在外圍邊緣補(bǔ)充若干圈0,方便從初始位置以步長(zhǎng)為單位可以剛好滑倒末尾位置,通俗地講就是為了總長(zhǎng)能被步長(zhǎng)整除。
以上圖為例,那么:
? 數(shù)據(jù)窗口每次移動(dòng)兩個(gè)步長(zhǎng)取 3*3 的局部數(shù)據(jù),即 stride=2 。
? 兩個(gè)神經(jīng)元,即 depth=2 ,意味著有兩個(gè)濾波器。
? zero-padding=1 。
為什么要進(jìn)行數(shù)據(jù)填充:
假設(shè)有一個(gè)大小為 4x4 的輸入圖像:
[[1, 2, 3, 4],
[5, 6, 7, 8],
[9, 10, 11, 12],
[13, 14, 15, 16]]
現(xiàn)在,我們要應(yīng)用一個(gè) 3x3 的卷積核進(jìn)行卷積操作,步幅(stride)為 1,且要使用填充(padding)為 1。如果不使用填充,卷積核的中心將無法對(duì)齊到輸入圖像的邊緣,導(dǎo)致輸出特征圖尺寸變小。假設(shè)我們使用步幅(stride)為 1 進(jìn)行卷積,那么在不使用填充的情況下,輸出特征圖的尺寸將是 2x2。
所以我們要在它的周圍填充一圈0,填充為 1 意味著在輸入圖像的周圍添加一圈零值。添加填充后的圖像:
[[0, 0, 0, 0, 0, 0],
[0, 1, 2, 3, 4, 0],
[0, 5, 6, 7, 8, 0],
[0, 9, 10, 11, 12, 0],
[0, 13, 14, 15, 16, 0],
[0, 0, 0, 0, 0, 0]]
現(xiàn)在,我們將 3x3 的卷積核應(yīng)用于這個(gè)填充后的輸入圖像,計(jì)算卷積結(jié)果,得到大小不變的特征圖。
數(shù)據(jù)填充的主要目的是確保卷積核能夠覆蓋輸入圖像的邊緣區(qū)域,同時(shí)保持輸出特征圖的大小。這對(duì)于在CNN中保留空間信息和有效處理圖像邊緣信息非常重要。
卷積神經(jīng)網(wǎng)絡(luò)的模型是什么樣的?
上面紅框框起來的部分便可以理解為一個(gè)濾波器,即帶著一組固定權(quán)重的神經(jīng)元。多個(gè)濾波器疊加便成了卷積層。
四、卷積神經(jīng)網(wǎng)絡(luò)的構(gòu)造
1 輸入層
輸入層接收原始圖像數(shù)據(jù)。圖像通常由三個(gè)顏色通道(紅、綠、藍(lán))組成,形成一個(gè)二維矩陣,表示像素的強(qiáng)度值。
2 卷積和激活
卷積層將輸入圖像與卷積核進(jìn)行卷積操作。然后,通過應(yīng)用激活函數(shù)(如ReLU)來引入非線性。這一步使網(wǎng)絡(luò)能夠?qū)W習(xí)復(fù)雜的特征。
3 池化層
池化層通過減小特征圖的大小來減少計(jì)算復(fù)雜性。它通過選擇池化窗口內(nèi)的最大值或平均值來實(shí)現(xiàn)。這有助于提取最重要的特征。
4 多層堆疊
CNN通常由多個(gè)卷積和池化層的堆疊組成,以逐漸提取更高級(jí)別的特征。深層次的特征可以表示更復(fù)雜的模式。
5 全連接和輸出
最后,全連接層將提取的特征映射轉(zhuǎn)化為網(wǎng)絡(luò)的最終輸出。這可以是一個(gè)分類標(biāo)簽、回歸值或其他任務(wù)的結(jié)果。
形象的過程如下圖:
展開形式
未展開形式
五、圖片經(jīng)過卷積后的樣子
與人眼觀看事物原理相似,卷積神經(jīng)網(wǎng)絡(luò)可以看到事物的輪廓
轉(zhuǎn)載請(qǐng)注明來自浙江中液機(jī)械設(shè)備有限公司 ,本文標(biāo)題:《一文搞懂卷積神經(jīng)網(wǎng)絡(luò)(CNN)的原理(超詳細(xì))》
還沒有評(píng)論,來說兩句吧...