卷積神經(jīng)網(wǎng)絡(luò)是最具代表性的深度學(xué)習(xí)算法之一,目前已經(jīng)被大范圍的應(yīng)用與計(jì)算機(jī)視覺等領(lǐng)域,并且取得了眾多突破性的進(jìn)展,在學(xué)習(xí)卷積神經(jīng)網(wǎng)絡(luò)之前,我們需要學(xué)習(xí)圖像卷積運(yùn)算。
圖像卷積運(yùn)算的作用
圖像卷積運(yùn)算是一種圖像處理算法。通過它可以實(shí)現(xiàn)很多不同的效果。例如,模糊圖像中的細(xì)節(jié)。
提取圖像中的邊緣和輪廓。
甚至把其變成浮雕效果。
那如何實(shí)現(xiàn)圖像的卷積運(yùn)算呢?
圖像卷積運(yùn)算的計(jì)算方法
數(shù)字圖像在計(jì)算機(jī)中保存為一個(gè)矩陣,矩陣中每一個(gè)像素點(diǎn)的值就是圖像中對(duì)應(yīng)像素點(diǎn)的灰度值,對(duì)數(shù)字圖像做卷積運(yùn)算,
就是對(duì)圖像中的每一個(gè)像素點(diǎn),用它周圍像素點(diǎn)的灰度值加權(quán)求和,從而調(diào)整這個(gè)點(diǎn)的灰度值。
首先,定義一個(gè)卷積核,卷積核也被稱為卷積模板或卷積窗口。
卷積核是一個(gè) n x n 的矩陣,卷積核的尺寸決定了卷積運(yùn)算的范圍。它應(yīng)該是一個(gè)奇數(shù),這樣才有一個(gè)中心點(diǎn)。卷積核中的數(shù)字就是這個(gè)點(diǎn)和它周圍點(diǎn)的權(quán)值。
例如,在上圖這個(gè) 3 x 3 的卷積核中,中心點(diǎn)的權(quán)值是 1 ,周圍點(diǎn)的權(quán)值都是 0。
說明圖像中這個(gè)中心點(diǎn)的灰度值不受周圍像素點(diǎn)的影響。卷積運(yùn)算之后的灰度值仍然是它本身。
下圖為一個(gè) 5 x 5 的卷積核,
說明圖像中每個(gè)點(diǎn)的像素值受到它周圍兩圈像素值的影響。
卷積核中所有的權(quán)值都是 1/25 , 表明所有點(diǎn)的貢獻(xiàn)都一樣。
圖像的卷積運(yùn)算需要多層嵌套實(shí)現(xiàn),運(yùn)算速度比較慢。因此,一般采用比較小的卷積核。例如,3x3、5x5 或者 7x7 的。
進(jìn)行圖像卷積運(yùn)算時(shí),首先要卷積核與圖像中的像素點(diǎn)一一對(duì)應(yīng),然后加權(quán)求和。
接著把得到的結(jié)果作為中心像素點(diǎn)的新的灰度值。
然后將卷積核從左向右,從上到下滑動(dòng)。
就可以依次計(jì)算出每個(gè)像素點(diǎn)的取值,完成對(duì)整個(gè)圖像的卷積運(yùn)算。
可以發(fā)現(xiàn),使用 3 x 3 的卷積核,卷積運(yùn)算得到的新圖像會(huì)比原圖像稍微小一些。例如,這里的 12 x 12 的原圖像,使用 3 x 3 的卷積核,卷積之后的輸出圖像是 10 x 10 的。
這是因?yàn)閷?duì)于圖像邊界上的點(diǎn),它們外面已經(jīng)沒有像素了,因此無(wú)法進(jìn)行卷積運(yùn)算。
使用 5 x 5 的卷積核時(shí),最外面兩層像素都無(wú)法進(jìn)行卷積運(yùn)算,得到的新圖像會(huì)更小。
如果希望卷積運(yùn)算得到的圖像與原圖的大小一致,可以在卷積運(yùn)算之前,在圖像周圍填充一圈數(shù)字,如下圖所示。
這樣就可以計(jì)算圖像邊界處的卷積了。填充的數(shù)字不僅僅可以是0,還可以是 255 或者其他值。
例如,還可以將圖像邊界處的像素值直接向外延展,
如果使用 5 x 5 的卷積核,那么就需要向外填充兩層。
卷積核在從左向右、從上到下滑動(dòng)的過程中,一次移動(dòng)的像素?cái)?shù)稱為卷積運(yùn)算的步長(zhǎng)。在前面的例子中,水平和垂直方向滑動(dòng)的步長(zhǎng)都是1,當(dāng)步長(zhǎng)為 2 時(shí),每次移動(dòng)的卷積核會(huì)跳過 2 個(gè)像素點(diǎn)。
顯然,這時(shí)的輸出圖像會(huì)變的更小。
最極端的情況下,如果步長(zhǎng)等于卷積核的邊長(zhǎng) n ,那么就相當(dāng)于對(duì)圖像縮小了 n 倍。
例如,對(duì)于 12 x 12 的圖像來(lái)說,使用 3 x 3 的卷積核,步長(zhǎng)為 3 時(shí),只能夠計(jì)算下圖中框出的這些像素的卷積。
因此,輸出的圖片是 4 x 4 的。
要注意的是,在信號(hào)處理領(lǐng)域中,卷積有著嚴(yán)格的數(shù)學(xué)定義,并且有著更加廣泛的意義。 在這門課中,我們只要了解圖像卷積運(yùn)算的方法即可。
總結(jié):卷積運(yùn)算用(當(dāng)前通道)圖片中某個(gè)像素點(diǎn)周圍的像素的灰度值加權(quán)求和來(lái)調(diào)整這個(gè)點(diǎn)的灰度值,卷積核的尺寸決定了周圍像素的范圍,卷積核中的數(shù)值表明了它們的權(quán)值,采用不同的卷積核能夠產(chǎn)生不同的效果。
圖像卷積
輸出原圖
在下圖中,卷積核采用 3 x 3 的卷積核,這個(gè)卷積核只有中心點(diǎn)的權(quán)值為 1 ,其余點(diǎn)都是 0,表明圖像中每個(gè)像素點(diǎn)的取值不會(huì)受到周圍像素點(diǎn)的影響,卷積運(yùn)算輸出的結(jié)果就是原圖。
均值模糊
下圖這個(gè)卷積核,
將當(dāng)前像素和它上下左右相鄰的四個(gè)像素點(diǎn)一起求平均值,稱為 4 鄰域平均法。它使得圖像變的模糊,一般來(lái)說,卷積核中所有元素之和應(yīng)該等于 1 ,因?yàn)檫@樣經(jīng)過卷積運(yùn)算之后,圖像的亮度保持不變。
下圖這個(gè)卷積核,
將當(dāng)前像素和它相鄰的八個(gè)像素點(diǎn)一起求平均值,稱為 8 鄰域平均法。它使得圖像變的更模糊。
如果想要更強(qiáng)的模糊效果,可以加大卷積核的尺寸。下圖為使用 5 x 5 的卷積核,均值模糊后的結(jié)果。
通過卷積運(yùn)算,對(duì)圖像進(jìn)行模糊后,可以將圖像中的高頻噪聲給過濾掉。因此,對(duì)圖像的卷積運(yùn)算也稱為平滑或者濾波。卷積核也稱為濾波器。
下圖為對(duì)一張圖片進(jìn)行不同卷積核均值模糊后的結(jié)果。可以看到卷積核的尺寸越大,圖像就越模糊。
由于均值模糊是對(duì)窗口中所有像素點(diǎn)求平均值,在圖像的邊緣或者紋理豐富的地方也會(huì)變得模糊。為了盡可能的保留圖像中的邊緣信息,可以給不同位置的像素點(diǎn)賦以不同的權(quán)值。距離中心點(diǎn)越近的像素,權(quán)值越大,而遠(yuǎn)離中心點(diǎn)的像素,權(quán)值也逐漸減少。
高斯模糊
高斯分布就是正態(tài)分布,下圖為一維高斯函數(shù)。
下圖為二維高斯函數(shù)。
取二維高斯函數(shù)的值作為卷積核,
(詳細(xì)操作過程可看該文章:https://blog.csdn.net/u013066730/article/details/123112159)
這是 3 x 3 的高斯卷積核,
下圖為 5 x 5 的高斯卷積核,
可以看到,距離中心越近,權(quán)值越大。
對(duì)于下圖,是分別進(jìn)行均值模糊和高斯模糊之后的結(jié)果。
可以看到,高斯模糊在平滑物體表面的同時(shí),能夠更好的保持圖像的邊緣和輪廓。
邊緣檢測(cè)
圖像邊緣是圖像中顏色、灰度或者亮度發(fā)生極具變化的區(qū)域邊界,是圖像最基本的、也是最重要的特征之一。
邊緣檢測(cè)實(shí)質(zhì)上是計(jì)算當(dāng)前點(diǎn)和周圍點(diǎn)灰度的差別。
例如,有這樣一張圖片,
這是其中每個(gè)像素點(diǎn)的灰度值,
可以使用這樣的卷積核來(lái)找到它的數(shù)值邊緣。這個(gè)卷積核的作用就是用中心點(diǎn)右邊的像素值減去其左邊的像素值。
下圖為卷積之后的結(jié)果。
可以看到,如果左右兩邊的灰度值一樣,那么差值等于 0 ,也就是黑色。而在圖案的邊緣,灰度值差距比較大 ,就會(huì)得到一個(gè)高亮度的區(qū)域,差值越大,亮度越高。
因此,通過這個(gè)卷積核就可以找到垂直的邊緣。
在這個(gè)卷積核中,所有的權(quán)值之和等于 0 ,運(yùn)算之后的圖像整體很暗,只有邊緣的地方是有亮度的。
如果要檢測(cè)水平的邊緣,可以使用下圖這個(gè)卷積核。
將以上兩種卷積組合起來(lái),就可以得到完整的邊緣。這種卷積核被稱為 Prewitt 算子。
除此之外,還有其他一些邊緣檢測(cè)算子。
它能夠比較好的檢測(cè)到 45° 角方向的邊緣。
它在 Prewitt 算子的基礎(chǔ)之上,增加了權(quán)重的概念,認(rèn)為上下左右直線方向的距離大于斜線方向的距離。因此,它們(左右直線方向)的權(quán)值更大。
拉普拉斯算子,它通過對(duì)鄰域中心像素的四方向或者八方向求梯度,再將梯度相加起來(lái),從而判斷中心像素灰度與鄰域內(nèi)其他像素灰度的關(guān)系。
它將高斯和拉普拉斯算子相結(jié)合,綜合考慮了對(duì)噪聲的抑制和邊緣檢測(cè),它的抗干擾能力強(qiáng)。邊界定位精度高。邊緣連續(xù)性也更好。而且能夠有效提取對(duì)比度弱的邊界。在圖像處理領(lǐng)域中,得到了廣泛的應(yīng)用。
下圖為對(duì) Lena 圖像使用不同的邊緣檢測(cè)算子得到的結(jié)果。
在圖像的邊緣中,存在著有關(guān)圖像的大量豐富的信息。
人類在看到物體時(shí),視覺系統(tǒng)首先把圖像邊緣和背景分離出來(lái),然后才辨認(rèn)物體中的細(xì)節(jié)。在計(jì)算機(jī)視覺系統(tǒng)中,圖像分析和理解的第一步常常就是邊緣檢測(cè)。通過邊緣檢測(cè)可以大幅度的減少數(shù)據(jù)量,在保留重要結(jié)構(gòu)屬性的同時(shí),剔除掉不重要的弱相關(guān)的信息。
例如,下圖所示,在使用淘寶的拍立淘功能時(shí),
在搜索時(shí),我們主要關(guān)心的是款式,而對(duì)于腰帶、紐扣的細(xì)節(jié)可能并不是那么敏感。而衣服的款式信息更多的蘊(yùn)含在衣服的外形、輪廓中。也就是說,我們希望保留衣服的邊緣信息。而把顏色、商標(biāo)之類的細(xì)節(jié)當(dāng)作噪聲過濾掉,顯然,可以通過邊緣提取和細(xì)節(jié)模糊的卷積核完成上述操作。
下圖為使用 sobel 算子得到的女裝邊緣,
通過它可以快速的區(qū)分服裝的類型。
舉例:
在每一組圖中,左上角加紅色邊框的是輸入圖片,其他是搜索得到的結(jié)果。
提取特征
圖像的卷積運(yùn)算可以看做是一種提取圖像特征的方式,使用不同的卷積核就可以抽取出不同的圖像特征。
例如,我們希望在輸入圖片中尋找到這樣的一個(gè)線條特征,
只要為它量身定做一個(gè)這樣的卷積核就可以了。
假設(shè)這是輸入圖像,使用卷積核掃描整個(gè)圖像
在不匹配的區(qū)域內(nèi),卷積運(yùn)算的輸出值很小,當(dāng)卷積窗口到達(dá)下圖所示區(qū)域時(shí),
會(huì)得到很大輸出,就識(shí)別出了指定的線條特征。
在下面的這些圖中,
雖然紅色框中的線條稍有不同,但是使用這個(gè)卷積核仍然可以得到一個(gè)比較大的結(jié)果,而在圖中的其他部分,卷積的計(jì)算結(jié)果都會(huì)非常小。甚至接近于 0 ,因此,仍然能夠在一定程度上識(shí)別出指定的特征。文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-733769.html
如果還需要識(shí)別出蘋果的其他特征,那么就需要再設(shè)計(jì)其他的卷積核。
如果一幅圖中同時(shí)滿足了多個(gè)蘋果的特征,我們就能夠識(shí)別出簡(jiǎn)筆畫中的蘋果了。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-733769.html
到了這里,關(guān)于卷積神經(jīng)網(wǎng)絡(luò) —— 圖像卷積的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!