對(duì)圖像處理和卷積神經(jīng)網(wǎng)絡(luò)架構(gòu)的案例分析和概念理解
近日,Dishashree Gupta 在 AnalyTIcsvidhya 上發(fā)表了一篇題為《Architecture of ConvoluTIonal Neural Networks (CNNs) demysTIfied》的文章,對(duì)用于圖像識(shí)別和分類的卷積神經(jīng)網(wǎng)絡(luò)架構(gòu)作了深度揭秘;作者在文中還作了通盤演示,期望對(duì) CNN 的工作機(jī)制有一個(gè)深入的剖析。
引言
先坦白地說(shuō),有一段時(shí)間我無(wú)法真正理解深度學(xué)習(xí)。我查看相關(guān)研究論文和文章,感覺(jué)深度學(xué)習(xí)異常復(fù)雜。我嘗試去理解神經(jīng)網(wǎng)絡(luò)及其變體,但依然感到困難。
接著有一天,我決定一步一步,從基礎(chǔ)開(kāi)始。我把技術(shù)操作的步驟分解開(kāi)來(lái),并手動(dòng)執(zhí)行這些步驟(和計(jì)算),直到我理解它們?nèi)绾喂ぷ鳌_@相當(dāng)費(fèi)時(shí),且令人緊張,但是結(jié)果非凡。
現(xiàn)在,我不僅對(duì)深度學(xué)習(xí)有了全面的理解,還在此基礎(chǔ)上有了好想法,因?yàn)槲业幕A(chǔ)很扎實(shí)。隨意地應(yīng)用神經(jīng)網(wǎng)絡(luò)是一回事,理解它是什么以及背后的發(fā)生機(jī)制是另外一回事。
今天,我將與你共享我的心得,展示我如何上手卷積神經(jīng)網(wǎng)絡(luò)并最終弄明白了它。我將做一個(gè)通盤的展示,從而使你對(duì) CNN 的工作機(jī)制有一個(gè)深入的了解。
在本文中,我將會(huì)討論 CNN 背后的架構(gòu),其設(shè)計(jì)初衷在于解決圖像識(shí)別和分類問(wèn)題。同時(shí)我也會(huì)假設(shè)你對(duì)神經(jīng)網(wǎng)絡(luò)已經(jīng)有了初步了解。
1. 機(jī)器如何看圖?人類大腦是一非常強(qiáng)大的機(jī)器,每秒內(nèi)能看(捕捉)多張圖,并在意識(shí)不到的情況下就完成了對(duì)這些圖的處理。但機(jī)器并非如此。機(jī)器處理圖像的第一步是理解,理解如何表達(dá)一張圖像,進(jìn)而讀取圖片。
簡(jiǎn)單來(lái)說(shuō),每個(gè)圖像都是一系列特定排序的圖點(diǎn)(像素)。如果你改變像素的順序或顏色,圖像也隨之改變。舉個(gè)例子,存儲(chǔ)并讀取一張上面寫著數(shù)字 4 的圖像。
基本上,機(jī)器會(huì)把圖像打碎成像素矩陣,存儲(chǔ)每個(gè)表示位置像素的顏色碼。在下圖的表示中,數(shù)值 1 是白色,256 是最深的綠色(為了簡(jiǎn)化,我們示例限制到了一種顏色)。
一旦你以這種格式存儲(chǔ)完圖像信息,下一步就是讓神經(jīng)網(wǎng)絡(luò)理解這種排序與模式。
2. 如何幫助神經(jīng)網(wǎng)絡(luò)識(shí)別圖像?表征像素的數(shù)值是以特定的方式排序的。
假設(shè)我們嘗試使用全連接網(wǎng)絡(luò)識(shí)別圖像,該如何做?
全連接網(wǎng)絡(luò)可以通過(guò)平化它,把圖像當(dāng)作一個(gè)數(shù)組,并把像素值當(dāng)作預(yù)測(cè)圖像中數(shù)值的特征。明確地說(shuō),讓網(wǎng)絡(luò)理解理解下面圖中發(fā)生了什么,非常的艱難。
即使人類也很難理解上圖中表達(dá)的含義是數(shù)字 4。我們完全丟失了像素的空間排列。
我們能做什么呢?可以嘗試從原圖像中提取特征,從而保留空間排列。
案例 1
這里我們使用一個(gè)權(quán)重乘以初始像素值。
現(xiàn)在裸眼識(shí)別出這是「4」就變得更簡(jiǎn)單了。但把它交給全連接網(wǎng)絡(luò)之前,還需要平整化(flatten) 它,要讓我們能夠保留圖像的空間排列。
案例 2
現(xiàn)在我們可以看到,把圖像平整化完全破壞了它的排列。我們需要想出一種方式在沒(méi)有平整化的情況下把圖片饋送給網(wǎng)絡(luò),并且還要保留空間排列特征,也就是需要饋送像素值的 2D/3D 排列。
我們可以嘗試一次采用圖像的兩個(gè)像素值,而非一個(gè)。這能給網(wǎng)絡(luò)很好的洞見(jiàn),觀察鄰近像素的特征。既然一次采用兩個(gè)像素,那也就需要一次采用兩個(gè)權(quán)重值了。
希望你能注意到圖像從之前的 4 列數(shù)值變成了 3 列。因?yàn)槲覀儸F(xiàn)在一次移用兩個(gè)像素(在每次移動(dòng)中像素被共享),圖像變的更小了。雖然圖像變小了,我們?nèi)阅茉诤艽蟪潭壬侠斫膺@是「4」。而且,要意識(shí)到的一個(gè)重點(diǎn)是,我們采用的是兩個(gè)連貫的水平像素,因此只會(huì)考慮水平的排列。
這是我們從圖像中提取特征的一種方式。我們可以看到左邊和中間部分,但右邊部分看起來(lái)不那么清楚。主要是因?yàn)閮蓚€(gè)問(wèn)題:
1. 圖片角落左邊和右邊是權(quán)重相乘一次得到的。
2. 左邊仍舊保留,因?yàn)闄?quán)重值高;右邊因?yàn)槁缘偷臋?quán)重,有些丟失。
現(xiàn)在我們有兩個(gè)問(wèn)題,需要兩個(gè)解決方案。
案例 3