1.4 Padding-深度学习第四课《卷积神经网络》-Stanford吴恩达教授
| 1.3 更多邊緣檢測(cè)內(nèi)容 | 回到目錄 | 1.5 卷積步長(zhǎng) |
Padding
為了構(gòu)建深度神經(jīng)網(wǎng)絡(luò),你需要學(xué)會(huì)使用的一個(gè)基本的卷積操作就是padding,讓我們來(lái)看看它是如何工作的。
我們?cè)谥耙曨l中看到,如果你用一個(gè)3×3的過(guò)濾器卷積一個(gè)6×6的圖像,你最后會(huì)得到一個(gè)4×4的輸出,也就是一個(gè)4×4矩陣。那是因?yàn)槟愕?×3過(guò)濾器在6×6矩陣中,只可能有4×4種可能的位置。這背后的數(shù)學(xué)解釋是,如果我們有一個(gè) n?nn*nn?n 的圖像,用 f?ff*ff?f 的過(guò)濾器做卷積,那么輸出的維度就是 (n?f+1)?(n?f+1)(n-f+1)*(n-f+1)(n?f+1)?(n?f+1) 。在這個(gè)例子里是 6?3+1=46-3+1=46?3+1=4 ,因此得到了一個(gè)4×4的輸出。
這樣的話會(huì)有兩個(gè)缺點(diǎn),第一個(gè)缺點(diǎn)是每次做卷積操作,你的圖像就會(huì)縮小,從6×6縮小到4×4,你可能做了幾次之后,你的圖像就會(huì)變得很小了,可能會(huì)縮小到只有1×1的大小。你可不想讓你的圖像在每次識(shí)別邊緣或其他特征時(shí)都縮小,這就是第一個(gè)缺點(diǎn)。
第二個(gè)缺點(diǎn)時(shí),如果你注意角落邊緣的像素,這個(gè)像素點(diǎn)(綠色陰影標(biāo)記)只被一個(gè)輸出所觸碰或者使用,因?yàn)樗挥谶@個(gè)3×3的區(qū)域的一角。但如果是在中間的像素點(diǎn),比如這個(gè)(紅色方框標(biāo)記),就會(huì)有許多3×3的區(qū)域與之重疊。所以那些在角落或者邊緣區(qū)域的像素點(diǎn)在輸出中采用較少,意味著你丟掉了圖像邊緣位置的許多信息。
為了解決這兩個(gè)問(wèn)題,一是輸出縮小。當(dāng)我們建立深度神經(jīng)網(wǎng)絡(luò)時(shí),你就會(huì)知道你為什么不希望每進(jìn)行一步操作圖像都會(huì)縮小。比如當(dāng)你有100層深層的網(wǎng)絡(luò),如果圖像每經(jīng)過(guò)一層都縮小的話,經(jīng)過(guò)100層網(wǎng)絡(luò)后,你就會(huì)得到一個(gè)很小的圖像,所以這是個(gè)問(wèn)題。另一個(gè)問(wèn)題是圖像邊緣的大部分信息都丟失了。
為了解決這些問(wèn)題,你可以在卷積操作之前填充這幅圖像。在這個(gè)案例中,你可以沿著圖像邊緣再填充一層像素。如果你這樣操作了,那么6×6的圖像就被你填充成了一個(gè)8×8的圖像。如果你用3×3的圖像對(duì)這個(gè)8×8的圖像卷積,你得到的輸出就不是4×4的,而是6×6的圖像,你就得到了一個(gè)尺寸和原始圖像6×6的圖像。習(xí)慣上,你可以用0去填充,如果是填充的數(shù)量,在這個(gè)案例中, p=1p=1p=1 ,因?yàn)槲覀冊(cè)谥車(chē)继畛淞艘粋€(gè)像素點(diǎn),輸出也就變成了 (n+2p?f+1)?(n+2p?f+1)(n+2p-f+1)*(n+2p-f+1)(n+2p?f+1)?(n+2p?f+1) ,所以就變成了 (6+2?1?3+1)?(6+2?1?3+1)=6?6(6+2*1-3+1)*(6+2*1-3+1)=6*6(6+2?1?3+1)?(6+2?1?3+1)=6?6 ,和輸入的圖像一樣大。這個(gè)涂綠的像素點(diǎn)(左邊矩陣)影響了輸出中的這些格子(右邊矩陣)。這樣一來(lái),丟失信息或者更準(zhǔn)確來(lái)說(shuō)角落或圖像邊緣的信息發(fā)揮的作用較小的這一缺點(diǎn)就被削弱了。
剛才我已經(jīng)展示過(guò)用一個(gè)像素點(diǎn)來(lái)填充邊緣,如果你想的話,也可以填充兩個(gè)像素點(diǎn),也就是說(shuō)在這里填充一層。實(shí)際上你還可以填充更多像素。我這里畫(huà)的這種情況,填充后 p=2p=2p=2 。
至于選擇填充多少像素,通常有兩個(gè)選擇,分別叫做Valid卷積和Same卷積。
Valid卷積意味著不填充,這樣的話,如果你有一個(gè) n?nn*nn?n 的圖像,用一個(gè) f?ff*ff?f 的過(guò)濾器卷積,它將會(huì)給你一個(gè) (n?f+1)?(n?f+1)(n-f+1)*(n-f+1)(n?f+1)?(n?f+1) 維的輸出。這類(lèi)似于我們?cè)谇懊娴囊曨l中展示的例子,有一個(gè)6×6的圖像,通過(guò)一個(gè)3×3的過(guò)濾器,得到一個(gè)4×4的輸出。
另一個(gè)經(jīng)常被用到的填充方法叫做Same卷積,那意味你填充后,你的輸出大小和輸入大小是一樣的。根據(jù)這個(gè)公式 n?f+1n-f+1n?f+1 ,當(dāng)你填充 ppp 個(gè)像素點(diǎn), nnn 就變成了 n+2pn+2pn+2p ,最后公式變?yōu)?n+2p?f+1n+2p-f+1n+2p?f+1 。因此如果你有一個(gè) n?nn*nn?n 的圖像,用 ppp 個(gè)像素填充邊緣,輸出的大小就是這樣的 (n+2p?f+1)?(n+2p?f+1)(n+2p-f+1)*(n+2p-f+1)(n+2p?f+1)?(n+2p?f+1) 。如果你想讓 n+2p?f+1=nn+2p-f+1=nn+2p?f+1=n 的話,使得輸出和輸入大小相等,如果你用這個(gè)等式求解 ppp ,那么 p=(f?1)/2p=(f-1)/2p=(f?1)/2 。所以當(dāng) fff 是一個(gè)奇數(shù)的時(shí)候,只要選擇相應(yīng)的填充尺寸,你就能確保得到和輸入相同尺寸的輸出。這也是為什么前面的例子,當(dāng)過(guò)濾器是3×3時(shí),和上一張幻燈片的例子一樣,使得輸出尺寸等于輸入尺寸,所需要的填充是(3-1)/2,也就是1個(gè)像素。另一個(gè)例子,當(dāng)你的過(guò)濾器是5×5,如果 f=5f=5f=5 ,然后代入那個(gè)式子,你就會(huì)發(fā)現(xiàn)需要2層填充使得輸出和輸入一樣大,這是過(guò)濾器5×5的情況。
習(xí)慣上,計(jì)算機(jī)視覺(jué)中, fff 通常是奇數(shù),甚至可能都是這樣。你很少看到一個(gè)偶數(shù)的過(guò)濾器在計(jì)算機(jī)視覺(jué)里使用,我認(rèn)為有兩個(gè)原因。
其中一個(gè)可能是,如果 fff 是一個(gè)偶數(shù),那么你只能使用一些不對(duì)稱(chēng)填充。只有 fff 是奇數(shù)的情況下,Same卷積才會(huì)有自然的填充,我們可以以同樣的數(shù)量填充四周,而不是左邊填充多一點(diǎn),右邊填充少一點(diǎn),這樣不對(duì)稱(chēng)的填充。
第二個(gè)原因是當(dāng)你有一個(gè)奇數(shù)維過(guò)濾器,比如3×3或者5×5的,它就有一個(gè)中心點(diǎn)。有時(shí)在計(jì)算機(jī)視覺(jué)里,如果有一個(gè)中心像素點(diǎn)會(huì)更方便,便于指出過(guò)濾器的位置。
也許這些都不是為什么通常 fff 是奇數(shù)的充分原因,但如果你看了卷積的文獻(xiàn),你經(jīng)常會(huì)看到3×3的過(guò)濾器,你也可能會(huì)看到一些5×5,7×7的過(guò)濾器。后面我們也會(huì)談到1×1的過(guò)濾器,以及什么時(shí)候它是有意義的。但是習(xí)慣上,我推薦你只使用奇數(shù)的過(guò)濾器。我想如果你使用偶數(shù)f也可能會(huì)得到不錯(cuò)的表現(xiàn),如果遵循計(jì)算機(jī)視覺(jué)的慣例,我通常使用奇數(shù)值的 fff 。
你已經(jīng)看到如何使用padding卷積,為了指定卷積操作中的padding,你可以指定 ppp 的值。也可以使用Valid卷積,也就是 p=0p=0p=0 。也可使用Same卷積填充像素,使你的輸出和輸入大小相同。以上就是padding,在接下來(lái)的視頻中我們討論如何在卷積中設(shè)置步長(zhǎng)。
課程板書(shū)
| 1.3 更多邊緣檢測(cè)內(nèi)容 | 回到目錄 | 1.5 卷積步長(zhǎng) |
總結(jié)
以上是生活随笔為你收集整理的1.4 Padding-深度学习第四课《卷积神经网络》-Stanford吴恩达教授的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 1.3 更多边缘检测内容-深度学习第四课
- 下一篇: 1.5 卷积步长-深度学习第四课《卷积神