官术网_书友最值得收藏!

2.1 CNN的核心——“卷積”

本案例主要介紹卷積神經網絡(Convolutional Neural Networks,CNN)。在此之前,需要先對“二維卷積”(以下簡稱“卷積”)進行深入了解,它是研究卷積神經網絡的前提和基礎。

從系統工程的角度看,卷積是為研究系統對輸入信號的響應而提出的,卷積有很多種,本節著重介紹二維滑動卷積。

滑動卷積涉及三個矩陣:第一個矩陣通常尺寸較大且固定不動,本書稱之為“輸入矩陣”(或“待處理矩陣”);第二個矩陣尺寸較小,在輸入矩陣上從左到右、從上到下進行滑動,本書稱之為“卷積核”;卷積核在輸入矩陣上面滑動的過程中,將對應的兩個小矩陣的相應元素相乘并求和,結果依次作為第三個矩陣元素,本書稱該矩陣為“特征矩陣”。上述三個矩陣及卷積運算符如圖2-1所示。

下面,詳細地看一下滑動卷積的運算過程。將圖2-1中所示的兩個矩陣進行卷積運算。

步驟1:將陰影部分的4個元素與卷積核對應位置的元素相乘后,再相加,作為特征矩陣的第1個元素,如圖2-2所示。

圖2-1 輸入矩陣、卷積核、特征矩陣及卷積運算符

圖2-2 滑動卷積運算步驟1

計算過程如下。

(1×1) +(3×0) +(2×0) +(9×1) =10

步驟2:在步驟1的基礎上,向右滑動1個單位,將陰影部分的4個元素與卷積核對應位置的元素相乘后,再相加,作為特征矩陣的第2個元素,如圖2-3所示。

圖2-3 滑動卷積運算步驟2

步驟3:在步驟2的基礎上,向右滑動1個單位,將陰影部分的4個元素與卷積核對應位置的元素相乘后,再相加,作為特征矩陣的第3個元素,如圖2-4所示。

圖2-4 滑動卷積運算步驟3

步驟4:一旦完成第一行的運算之后,上述運算過程就從下一行開始從左到右繼續進行,如圖2-5所示。

圖2-5 滑動卷積運算步驟4

步驟5:重復相同的步驟,直到全部完成(見圖2-6)。

圖2-6 滑動卷積運算的結果

在上述卷積運算的過程中,每次都是滑動1個像素。當然,也可以每次滑動兩個像素乃至多個像素。每次滑動的像素個數,本書稱之為步長(Stride)。

請讀者仔細觀察圖2-1所示的輸入矩陣與特征矩陣的元素的個數,不難發現,特征矩陣元素的個數少于輸入矩陣的元素個數(請讀者思考其中的原因)。如果需要得到與輸入矩陣元素個數相等的特征矩陣該如何處理呢?方法很簡單,需要對輸入矩陣的邊緣添加0元素,這個過程稱之為零填充(Zero Padding)。通過零填充,實現滑動卷積的過程如圖2-7所示。

在二維滑動卷積運算過程中,卷積核在滑動過程中始終都在輸入矩陣內部,所得到的特征矩陣的元素個數會比輸入矩陣元素個數少,在程序中稱這種滑動卷積方式為valid;如果采用零填充的方式,使特征矩陣元素的個數與輸入矩陣元素個數相同,在程序中稱這種滑動卷積方式為same。

如圖2-8所示,特征矩陣的(3,1)元素的值最大。那么,為什么該元素的值最大呢?通過觀察輸入矩陣和卷積核元素的特征可知:第(3,1)元素所對應的子矩陣與卷積核在形態上類似,二者都是對角矩陣,而且相同位置上的數值都較大。由此可見,子矩陣與卷積核在形態上類似時,卷積運算就會生成一個較大的值。

圖2-7 通過零填充實現滑動卷積的過程示意圖

圖2-8 特征矩陣中第(3,1)元素的計算過程

如圖2-9所示,輸入矩陣中第(3,1)元素的值為20,在輸入矩陣中的值是最大的,但通過卷積運算后結果為2,原因是子矩陣與卷積核的形態差異很大。

圖2-9 特征矩陣中第(2,1)元素的計算過程

如果要使特征矩陣中第(2,1)元素的值變大,可以將卷積核更換為和對應的子矩陣與卷積核在形態上類似的,如圖2-10所示。

圖2-10 更換卷積核后特征矩陣中第(2,1)元素的計算過程

通過上面的分析可知,對二維數字圖像進行卷積運算,可以判斷圖像的像素與卷積核的相似程度,相似程度越高,得到的響應值越大,因此可以通過滑動卷積運算來提取圖像的特征。

主站蜘蛛池模板: 财经| 虹口区| 乌拉特后旗| 高密市| 越西县| 台南县| 黄骅市| 无锡市| 临安市| 仁化县| 随州市| 麟游县| 和政县| 尚义县| 英超| 巩留县| 宁强县| 宜兰市| 台北县| 宜昌市| 临颍县| 松原市| 保亭| 格尔木市| 镇坪县| 辽宁省| 阜平县| 新龙县| 鹤峰县| 孟村| 贺州市| 定南县| 玛多县| 潮州市| 南平市| 永德县| 宿州市| 信宜市| 阿瓦提县| 鹤岗市| 潢川县|