日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

Convolutional Neural Networks for Visual Recognition 8

發(fā)布時(shí)間:2024/4/15 编程问答 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Convolutional Neural Networks for Visual Recognition 8 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Convolutional Neural Networks (CNNs / ConvNets)

前面做了如此漫長(zhǎng)的鋪墊,現(xiàn)在終于來(lái)到了課程的重點(diǎn)。Convolutional Neural Networks, 簡(jiǎn)稱CNN,與之前介紹的一般的神經(jīng)網(wǎng)絡(luò)類似,CNN同樣是由可以學(xué)習(xí)的權(quán)值與偏移量構(gòu)成,每一個(gè)神經(jīng)元接收一些輸入,做點(diǎn)積運(yùn)算加上偏移量,然后選擇性的通過(guò)一些非線性函數(shù),整個(gè)網(wǎng)絡(luò)最終還是表示成一個(gè)可導(dǎo)的loss function,網(wǎng)絡(luò)的起始端是輸入圖像,網(wǎng)絡(luò)的終端是每一類的預(yù)測(cè)值,通過(guò)一個(gè)full connected層,最后這些預(yù)測(cè)值會(huì)表示成SVM或者Softmax的loss function,在一般神經(jīng)網(wǎng)絡(luò)里用到的技巧在CNN中都同樣適用。

那么,CNN與普通的神經(jīng)網(wǎng)絡(luò)相比,又有哪些變化呢?CNN的網(wǎng)絡(luò)結(jié)構(gòu)可以直接處理圖像,換句話說(shuō)CNN的輸入就是直接假設(shè)為圖像,這一點(diǎn)有助于我們?cè)O(shè)計(jì)出具備某些特性的網(wǎng)絡(luò)結(jié)構(gòu),同時(shí)前向傳遞函數(shù)可以更加高效地實(shí)現(xiàn),并且將網(wǎng)絡(luò)的參數(shù)大大減少。

Architecture Overview

前面介紹的普通的神經(jīng)網(wǎng)絡(luò),我們知道該網(wǎng)絡(luò)接收一個(gè)輸入,通過(guò)一系列的隱含層進(jìn)行變換,每個(gè)隱含層都是由一些神經(jīng)元組成,每一個(gè)神經(jīng)元都會(huì)和前一層的所有神經(jīng)元連接,這種連接方式稱為 full connected,每一層的神經(jīng)元的激勵(lì)函數(shù)都是相互獨(dú)立,沒(méi)有任何共享。最后一個(gè)full connected層稱為輸出層,在分類問(wèn)題中,它表示每一類的score。

一般來(lái)說(shuō),普通的神經(jīng)網(wǎng)絡(luò)不能很好地?cái)U(kuò)展到處理圖像,特別是高維圖像,因?yàn)樯窠?jīng)元的連接是full connected的方式,導(dǎo)致一般的神經(jīng)網(wǎng)絡(luò)處理大圖像的時(shí)候?qū)?huì)引入海量的參數(shù),而這樣很容易造成overfitting。

而CNN,利用了輸入是圖像這一事實(shí),他們用一種更加明智的方法來(lái)設(shè)計(jì)網(wǎng)絡(luò)結(jié)構(gòu),具體說(shuō)來(lái),不像普通的神經(jīng)網(wǎng)絡(luò),CNN中的每一層的神經(jīng)元被排列成一個(gè)三維模型:擁有width,height以及depth。這里的depth指的是CNN每一層的縱深,并非指整個(gè)CNN結(jié)構(gòu)的縱深。比如,對(duì)于CIFAR-10數(shù)據(jù)庫(kù)來(lái)說(shuō),輸入是一個(gè)三維的volume,32×32×3,分別對(duì)應(yīng)width,height和depth,我們將會(huì)看到,CNN中,每一層的神經(jīng)元只跟前一層的部分神經(jīng)元相連,而沒(méi)有full connected,而且最后的輸出層是一個(gè)1×1×10的volume,因?yàn)樽詈笠粚颖硎久恳活惖膕core,CNN通過(guò)這種結(jié)構(gòu),將一個(gè)輸入的圖像最后轉(zhuǎn)化成一個(gè)表示每一類score的向量,下圖給出了兩種神經(jīng)網(wǎng)絡(luò)的示意圖:

上圖左邊是一般的神經(jīng)網(wǎng)絡(luò),這個(gè)網(wǎng)絡(luò)有兩個(gè)隱含層,右邊是CNN,將每一層的神經(jīng)元排列成一個(gè)三維的volume,可以將3D的輸入volume轉(zhuǎn)化為3D的輸出volume.

Layers used to build ConvNets

上一節(jié)已經(jīng)提到,CNN的每一層都將某種輸入通過(guò)某些可導(dǎo)函數(shù)轉(zhuǎn)化為另一種輸出,一般來(lái)說(shuō),我們主要利用三種類型的layer去構(gòu)建一個(gè)CNN,這三種類型的layer分別是convolutional layer, pooling layer 以及full connected layer,這三種類型的layer通過(guò)組合疊加從而組成一個(gè)完整的CNN網(wǎng)絡(luò)。我們先來(lái)看一個(gè)簡(jiǎn)單的例子,以CIFAR-10數(shù)據(jù)庫(kù)為例,我們要設(shè)計(jì)一個(gè)CNN網(wǎng)絡(luò)對(duì)CIFRA-10進(jìn)行分類,那么一個(gè)可能的簡(jiǎn)單結(jié)構(gòu)是:[INPUT-CONV-RELU-POOL-FC],其中:

INPUT:[32×32×3] 表示輸入層,是圖像的像素值,這種情況下表示圖像是寬為32個(gè)像素,高為32個(gè)像素,并且有R,G,B三個(gè)通道。
CONV: 是卷積層,計(jì)算輸入層的局部神經(jīng)元與連接到CONV層神經(jīng)元的連接系數(shù)的點(diǎn)積,如果假設(shè)depth是12的話,那么可能的輸出就是[32×32×12]。
POOL: 這一層主要執(zhí)行降采樣的功能,可能的輸出為[16×16×12]。
FC: 這一層計(jì)算最終的每一類的score,輸出為[1×1×10]。與普通的神經(jīng)網(wǎng)絡(luò)一樣,這一層的神經(jīng)元與上一層的所有神經(jīng)元都會(huì)連接。

所以,利用這種結(jié)構(gòu),CNN通過(guò)一層一層的傳遞作用,將原始的圖像最后映射到每一類的score。我們可以看到,有些層有參數(shù),有些層沒(méi)有參數(shù)。特別地,CONV/FC層不僅僅只是通過(guò)激勵(lì)函數(shù)做轉(zhuǎn)化,而且參數(shù)(權(quán)值,偏移量)也起到非常重要的作用,另一方面,POOL/RELU 層只是固定的函數(shù)在起作用,并沒(méi)有涉及到參數(shù),CONV/FC層的參數(shù)將通過(guò)梯度下降的方法訓(xùn)練得到,使得訓(xùn)練樣本的預(yù)測(cè)值與目標(biāo)值吻合。
下圖給出了一個(gè)典型的CNN結(jié)構(gòu)。

總之,CNN可以總結(jié)如下:
1):一個(gè)CNN結(jié)構(gòu)是由一系列的執(zhí)行不同轉(zhuǎn)化功能的layers組成的,將輸入的原始圖像映射到最后的score。
2):整個(gè)網(wǎng)絡(luò)結(jié)構(gòu),只有少數(shù)幾類不同功能的layer (CONV/FC/RELU/POOL 是目前比較流行的幾種)。
3):每一層都接收一個(gè)3-D的數(shù)據(jù)體,最后也會(huì)輸出一個(gè)3-D的數(shù)據(jù)體。
4):有些層有參數(shù)(CONV/FC),有些層沒(méi)有(RELU/POOL)。
5):有些層還可能有hyperparameters(CONV/POOL/FC),有些層則沒(méi)有(RELU)。

接下來(lái),我們要描述每一類layer的作用,以及相關(guān)的參數(shù)。

Convolutional Layer

Conv layer是CNN網(wǎng)絡(luò)的核心部件,它的輸出可以看成是一個(gè)3-D的數(shù)據(jù)體,CONV 層包含一系列可學(xué)的filters,這些filter的尺寸都很小,但是可以擴(kuò)展到input的整個(gè)depth,前向傳遞的時(shí)候,filter在輸入圖像上滑動(dòng),產(chǎn)生一個(gè)2-D的關(guān)于filter的激勵(lì)映射,filter只會(huì)和局部的一些像素(神經(jīng)元)做點(diǎn)積,所以每一個(gè)輸出的神經(jīng)元可以看成是對(duì)輸入層的局部神經(jīng)元的激勵(lì),我們希望這些filter通過(guò)訓(xùn)練,可以提取某些有用的局部信息。我們接下來(lái)探討到更加詳細(xì)的細(xì)節(jié)。

當(dāng)輸入是高維的變量,比如圖像等,如果采用full connected的連接是不切實(shí)際的,相反,我們會(huì)采用局部連接的方式,那么每一個(gè)局部區(qū)域我們稱為receptive field,這種局部連接是針對(duì)輸入層的寬,高這兩個(gè)維度來(lái)說(shuō),但是對(duì)于第三個(gè)維度depth來(lái)說(shuō),依然是要完全連接,所以我們處理局部空間在寬,高維度與depth這個(gè)維度是不一樣的。寬,高維度上,我們采取局部連接,但是對(duì)于depth維度,我們采用全連方式。

比如,如果一個(gè)輸入圖像的尺寸是[32×32×3],我們定義下一層神經(jīng)元的receptive field的尺寸是5×5,那么考慮到depth這個(gè)維度,最終每一次都有5×5×3=75個(gè)神經(jīng)元與CONV層的一個(gè)神經(jīng)元連接,意味著有5×5×3=75個(gè)權(quán)值。

再比如,假設(shè)現(xiàn)在有一個(gè)輸入的數(shù)據(jù)體是16×16×20,那么如果定義一個(gè)receptive field為3×3的連接方法,那么在CONV層的每一個(gè)神經(jīng)元最終連接到上一層神經(jīng)元的個(gè)數(shù)是3×3×20=180。

這兩個(gè)例子都說(shuō)明了,在寬,高維度我們采用局部連接的方式,而在depth維度,我們會(huì)全部連接。下面給出了一個(gè)簡(jiǎn)單的示意圖:

前面我們介紹了CONV層的神經(jīng)元與前一層的連接方式,但是CONV層本身的神經(jīng)元如何排列,而且其尺寸如何,我們還沒(méi)有討論,事實(shí)上,CONV層本身的神經(jīng)元如何排列以及CONV層的尺寸由三個(gè)因素決定:depth,stride,zero padding。

首先,depth決定了CONV層中有多少神經(jīng)元可以與前一層相同的神經(jīng)元相連,這個(gè)類似普通的神經(jīng)網(wǎng)絡(luò),在普通的神經(jīng)網(wǎng)絡(luò)中,我們知道每一個(gè)神經(jīng)元都與上一層的所有神經(jīng)元相連,所有每一層的所有神經(jīng)元都是與上一層相同的神經(jīng)元相連。我們將會(huì)看到,所有這些神經(jīng)元將通過(guò)學(xué)習(xí)從而對(duì)輸入的不同特征產(chǎn)生應(yīng)激作用,比如,如果第一個(gè)CONV層接收的是原始輸入圖像,那么沿著depth維度排列的神經(jīng)元(注意:這些神經(jīng)元連接的輸入層的神經(jīng)元都相同)可能對(duì)不同的特性(比如邊界,顏色,斑塊)等產(chǎn)生激勵(lì)。我們將這些連接到輸入層同一區(qū)域的神經(jīng)元稱為一個(gè)depth volume。

接下來(lái),我們必須指定stride,這個(gè)決定了我們?nèi)绾卧贑ONV層排列depth volume,如果我們指定stride為1,那么depth volume的排列將會(huì)非常緊湊,意味著隔一個(gè)神經(jīng)元就會(huì)有一個(gè)depth volume,這樣會(huì)產(chǎn)生比較大的重疊,而且輸出的尺寸也會(huì)很大,如果我們?cè)龃髎tride,可以減少重疊,并且可以減少輸出的尺寸。

zero padding就是為了控制輸出的尺寸,對(duì)輸入圖像的邊緣進(jìn)行補(bǔ)零操作,因?yàn)榫矸e可能使輸出圖像的尺寸減少,有的時(shí)候?yàn)榱说玫脚c輸入一樣的尺寸,我們可以在做卷積之前先對(duì)輸入圖像的邊緣補(bǔ)零,即先增大輸入圖像的尺寸,這樣可以使得最終的卷積結(jié)果與補(bǔ)零前的輸入圖像的尺寸一致。

我們可以看到,輸出層有一個(gè)depth,一個(gè)spatial size,depth可以指定,spatial size與輸入層的size(W),receptive field的size,即filter的size(F),我們定義的stride(S),還有邊緣的zero padding的size(P)有關(guān),可以看成是這些變量的一個(gè)函數(shù),我們可以證明最終輸出的spatial size為:(W?F+2P)/S+1

我們可以看一個(gè)例子,如果輸入圖像的尺寸為[227×227×3],我們?cè)O(shè)計(jì)一個(gè)CONV層,每個(gè)神經(jīng)元的receptive field為11,即F=11,stride為S=4,沒(méi)有zero padding,那么輸出的CONV層的spatial size為(227?11)/4+1=55,如果我們定義CONV層的depth為96,那么這個(gè)CONV層的最終尺寸為55×55×96, 從上面這個(gè)定義看出,這55×55×96個(gè)神經(jīng)元中的每一個(gè)都和輸入圖像的一個(gè)11×11×3的局部區(qū)域相連,并且每一個(gè)depth volume中含有96個(gè)神經(jīng)元,這96個(gè)神經(jīng)元與輸入圖像的同一個(gè)11×11×3的局部區(qū)域相連,它們唯一的區(qū)別在于連接權(quán)值的不同。

繼續(xù)看上面的例子,我們知道CONV層有55×55×96=29040個(gè)神經(jīng)元,每個(gè)神經(jīng)元都與輸入層的11×11×3個(gè)神經(jīng)元連接,那么CONV層的每一個(gè)神經(jīng)元都將有11×11×3=363個(gè)權(quán)值外加一個(gè)bias,那么最終的系數(shù)將會(huì)達(dá)到29040×(363+1)=105,705,600。很明顯,這個(gè)系數(shù)量太大了。

我們可以利用一個(gè)合理的假設(shè)來(lái)大大系數(shù)的數(shù)量,我們將CONV層看成一個(gè)depth volume,比如上面這個(gè)例子,CONV層是一個(gè)55×55×96的volume,其depth為96,那么每一個(gè)55×55的排列可以看成是一個(gè)slice,那么這個(gè)CONV層有96個(gè)slices,每一個(gè)slice的尺寸都為55×55,我們讓每一個(gè)slice里的神經(jīng)元都共享一組同樣的連接系數(shù),或者說(shuō)同樣的filter,那么意味著每一個(gè)slice都只有11×11×3個(gè)不同的系數(shù),整個(gè)CONV層將只有11×11×3×96=34848,如果每個(gè)slice的神經(jīng)元也共享同樣的bias,那么最終的系數(shù)為34848+96=34944個(gè),我們看到,通過(guò)這種假設(shè),系數(shù)的總量大大減少了,每一個(gè)slice里的55×55個(gè)神經(jīng)元都共享同樣的連接系數(shù),實(shí)際運(yùn)算中,所有的神經(jīng)元都會(huì)計(jì)算相應(yīng)的梯度,但是這些梯度最終會(huì)相加,在每一個(gè)slice中只做一次更新。

如果每一個(gè)slice里的神經(jīng)元都共享同樣的連接系數(shù),那么實(shí)際運(yùn)算的時(shí)候可以利用卷積運(yùn)算,其實(shí)這也是這個(gè)網(wǎng)絡(luò)名稱的由來(lái),卷積在其中發(fā)揮重要的作用,所有我們有的時(shí)候把這些系數(shù)稱為filter或者kernel,卷積的結(jié)果就是activation map,每一個(gè)activation map疊加,最后形成一個(gè)55×55×96的volume。

總結(jié)一下CONV的特點(diǎn):

接收一個(gè)尺寸為W1×H1×D1的volume。
定義一些相關(guān)的hyperparameter,比如filter的個(gè)數(shù)K,filter的size或者稱為receptive fieldF,stride S以及zero padding P,通過(guò)運(yùn)算可以得到一個(gè)如下的
尺寸為:W2×H2×D2的depth volume,其中,W2=(W1?F+2P)/S+1H2=(H1?F+2P)/S+1D2=K,通過(guò)參數(shù)共享,每個(gè)slice
會(huì)有一個(gè)F?F?D1的kernel,一共有K個(gè)kernel,所以一共有系數(shù)(F?F?D1)?K,在輸出的數(shù)據(jù)體中,每一個(gè)slice的尺寸都是W2×H2,一共有D2=K個(gè)slice。

CONV層的backpropagation 同樣是卷積運(yùn)算,這個(gè)具體的細(xì)節(jié)留到后面詳細(xì)探討。

Pooling Layer

一般來(lái)說(shuō),在兩個(gè)CONV layer之間,會(huì)插入一共pooling layer,pooling layer的作用一個(gè)是減少輸入的空間尺寸,從而可以降低參數(shù)的數(shù)量及運(yùn)算量,同時(shí)也可以控制overfitting。Pooling layer與上一層的每一個(gè)slice是一一對(duì)應(yīng)的,沒(méi)有相互交叉。最常見(jiàn)的pooling 運(yùn)算是采用max 操作,在2×2的一個(gè)空間區(qū)域內(nèi),以stride為2進(jìn)行將采樣,pooling操作只在寬,高維度上進(jìn)行,所以不會(huì)改變depth,輸出與輸入的depth將會(huì)一樣。總結(jié)來(lái)說(shuō),Pooling layer:

接收一個(gè)尺寸為W1×H1×D1的volume。定義一些相關(guān)的hyperparameter,filter的size或者稱為receptive fieldF,stride S,通過(guò)運(yùn)算可以得到一個(gè)如下的尺寸為:W2×H2×D2的depth volume,其中,W2=(W1?F)/S+1H2=(H1?F)/S+1D2=D1,pooling layer不會(huì)又系數(shù),也不會(huì)使用zero padding。下圖給了一個(gè)pooling的示意圖:

max pooling 的backpropagation,簡(jiǎn)單來(lái)說(shuō)就是只對(duì)輸入的最大值進(jìn)行梯度運(yùn)算,所以每次前向運(yùn)算的時(shí)候,最好可以將最大值的位置記錄下來(lái),這樣每次backward的時(shí)候就可以方便運(yùn)算。

Full-connected Layer

FC layer就像普通神經(jīng)網(wǎng)絡(luò)里的隱含層一樣,FC layer中的每一個(gè)神經(jīng)元與上一層所有的神經(jīng)元都會(huì)連接(full connected),涉及到的運(yùn)算也和普通的神經(jīng)網(wǎng)絡(luò)一樣。值得注意的一點(diǎn)是,FC與CONV layer之間的區(qū)別僅在于CONV layer里的神經(jīng)元只和上一層的局部神經(jīng)元相連,但是兩者的運(yùn)算模式是一樣的,都是做點(diǎn)積,因此在FC與CONV之間存在相互轉(zhuǎn)換的可能。

對(duì)于CONV layer,如果我們從FC的角度來(lái)看,相當(dāng)于乘了一個(gè)非常大的稀疏矩陣(大部分系數(shù)為0,因?yàn)橹挥芯植可窠?jīng)元的連接是有效的),而且這些非0系數(shù)在某些block中是相等的(系數(shù)共享)。反過(guò)來(lái),任何FC layer也可以有效地轉(zhuǎn)換成CONV layer,比如一個(gè)神經(jīng)元個(gè)數(shù)K=4096的FC layer,接收的輸入是7×7×512,我們可以等同于利用一個(gè)CONV層其hyperparameter設(shè)定為 F=7, P=0, S=1, K=4096,我們?cè)O(shè)定filter的spatial size與輸入的spatial size是一樣的,這樣最后會(huì)得到一個(gè)1×1×4096的輸出。

上面所說(shuō)的兩種轉(zhuǎn)換,其中FC 轉(zhuǎn)換為CONV 在實(shí)際運(yùn)算中非常有用,考慮一個(gè)實(shí)際的CNN網(wǎng)絡(luò),最原始的輸入為224×224×3的圖像,經(jīng)過(guò)一系列的轉(zhuǎn)換運(yùn)算,我們得到了一個(gè)尺寸為7×7×512的volume,接下來(lái)我們用兩個(gè)FC layer,將這個(gè)volume轉(zhuǎn)換為尺寸為4096的volume,最后連接到size為1000的輸出,我們可以將這三個(gè)FC layer用CONV layer的運(yùn)算模式來(lái)表示。

將第一個(gè)FC layer替換成CONV layer,其filter size 為7,我們可以得到1×1×4096的輸出。將第二個(gè)FC layer替換成CONV layer,其filter size 為1,輸出的volume為1×1×4096。同樣,最后一個(gè)FC layer用filter size為1的CONV layer替換,最后的輸出為1×1×1000。

上面所說(shuō)的每一個(gè)轉(zhuǎn)換都涉及到系數(shù)矩陣的reshape問(wèn)題,這種轉(zhuǎn)換可以讓我們將CNN結(jié)構(gòu)非常有效的在更大的圖像上滑動(dòng)。比如,如果一個(gè)224×224的圖像生成了一個(gè)尺寸為7×7×512的volume,從224降到7,一共降了32倍,那么,如果輸入的圖像是384×384,那么我們會(huì)生成一個(gè)12×12×512的volume,那么我們利用這三層FC layer,轉(zhuǎn)換成CONV layer,我們最終會(huì)得到6×6×1000的輸出,意味著每一類的score不只是一個(gè)數(shù),而是一個(gè)6×6的數(shù)組。

我們可以看到,如果圖像保持不動(dòng),而CNN網(wǎng)絡(luò)每次以32個(gè)像素的stride在圖像上移動(dòng),最后得到的結(jié)果是一樣的。

一般來(lái)說(shuō),利用CNN網(wǎng)絡(luò)做一次遍歷,得到一個(gè)6×6的score,比重復(fù)調(diào)用CNN結(jié)構(gòu)36次計(jì)算其在圖像不同位置之間的score要更加高效,因?yàn)檫@36次調(diào)用使用的是同一個(gè)網(wǎng)絡(luò)結(jié)構(gòu),共享完全一樣的系數(shù)及運(yùn)算模式。這種實(shí)際應(yīng)用中,是一種提高分類性能的技巧,比如我們將一幅圖先放大,然后再利用CNN結(jié)構(gòu)做遍歷,最后將所有得到的score求平均。

最后一點(diǎn),如果我們想將CNN網(wǎng)絡(luò)以小于32的stride有效地應(yīng)用在圖像上,可以通過(guò)多次前向傳遞運(yùn)算達(dá)到目的。比如,我們想以16個(gè)像素的stride遍歷圖像,可以做兩次運(yùn)算,第一次是直接將CNN網(wǎng)絡(luò)在原圖上做遍歷,第二次,先將原圖在寬,高方向分別平移16個(gè)像素,然后在平移后的圖像上做遍歷。

ConvNet Architectures

我們已經(jīng)看到,CNN網(wǎng)絡(luò)一般只有幾種類型的layer:CONV,POOL(一般默認(rèn)為max pooling)以及FC,一般我們也會(huì)把RELU單獨(dú)列為一層,用來(lái)執(zhí)行非線性運(yùn)算的操作,我們看看這些layer如何構(gòu)建一個(gè)完整的CNN網(wǎng)絡(luò)。

比較常見(jiàn)的模式是先疊加幾層CONV-RELU layer,后面連上POOL layer,這樣將輸入的圖像逐漸減少到一個(gè)比較小的尺寸,接來(lái)下,就連上Full connected layer,最后的FC layer是輸出,所以一般比較常見(jiàn)的模式如下所示:

INPUT -> [[CONV -> RELU]*N -> POOL?]*M -> [FC -> RELU]*K -> FC

其中*表示重復(fù)疊加的意思,而POOL?表示這是可選擇的,而且N>=0,一般N<=3,M>=0,K>=0,通常K<=3,下面是一些常見(jiàn)的CNN網(wǎng)絡(luò)結(jié)構(gòu)。

INPUT -> FC,這是最普通的線性分類器,N = M = K = 0.

INPUT -> CONV -> RELU -> FC

INPUT -> [CONV -> RELU -> POOL]*2 -> FC -> RELU -> FC 我們看到CONV layer后面連著Pool layer。

INPUT -> [CONV -> RELU -> CONV -> RELU -> POOL]*3 -> [FC -> RELU]*2 -> FC 我們看到在連接POOL layer之前,已經(jīng)有兩個(gè)CONV layer疊加到一起了。

一般我們會(huì)選擇小尺寸的filter,這在實(shí)際應(yīng)用中的效果會(huì)更好。一般來(lái)說(shuō),輸入圖像的尺寸最好是2的冪次方,比如32,64,96,224,384以及512。CONV 層一般用比較小的filter,比如3×3或者5×5,stride一般設(shè)為1,為了讓卷積運(yùn)算之后圖像的尺寸保持不變,有的時(shí)候會(huì)引入zero padding,zero padding的大小一般為P=(F-1)/2,pool layer執(zhí)行降采樣的功能,最常見(jiàn)的pool是用max pooling,在一個(gè)2×2的區(qū)域內(nèi),這樣相當(dāng)于將圖像縮小一半,在設(shè)計(jì)CNN網(wǎng)絡(luò)的時(shí)候,對(duì)于這些參數(shù)要小心設(shè)定,要確保每個(gè)layer的輸出尺寸與設(shè)想的一致。

現(xiàn)在流行的CNN網(wǎng)絡(luò)結(jié)構(gòu)都是非常龐大的,比較著名的CNN結(jié)構(gòu)有如下幾個(gè)LeNet, AlexNet, ZF Net, Google Net, VGGNet,具體的介紹可以參考課程網(wǎng)站。這里不再詳述。

聲明:lecture notes里的圖片都來(lái)源于該課程的網(wǎng)站,只能用于學(xué)習(xí),請(qǐng)勿作其它用途,如需轉(zhuǎn)載,請(qǐng)說(shuō)明該課程為引用來(lái)源。

http://cs231n.stanford.edu/

轉(zhuǎn)載于:https://www.cnblogs.com/mtcnn/p/9412601.html

總結(jié)

以上是生活随笔為你收集整理的Convolutional Neural Networks for Visual Recognition 8的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。