圖像的處理原理:CNN(卷積神經網絡)的實現過程

0 評論 27898 瀏覽 21 收藏 14 分鐘

了解一定的技術原理,對產品經理而言是有益處的。本文講述的圖像處理的基本思路,希望大家能夠對當前圖像處理技術有一定了解。

現在有個概念叫泛產品經理,這個概念本身是好的,核心說的是產品思維,但是在工作上我認為還是有一定誤導性。產品經理在工作中要突出自己的核心價值與職業壁壘,如果無法構建良好的職業壁壘,就會面臨中年危機帶來的挑戰。

人工智能相對的技術內容是塑造職業壁壘的有力武器,并非要求產品經理能夠自己寫代碼開發產品,而且在了解技術原理后,能夠將業務快速高效的轉化為可實施的產品問題,對于人工智能相關的產品更加重要。所有了解一定的技術原理,對產品經理而言是有益處的。本文講述的圖像處理的基本思路,希望大家能夠對當前圖像處理技術有一定了解。

卷積神經網絡(Convolutional Neural Network, CNN)是一種前饋神經網絡,是當今圖像處理的主流技術。說起CNN卷積網絡,不得不說2012 年Alex Krizhevsky 憑借它們贏得了那一年的 ImageNet 大賽(由斯坦福大學李飛飛發起的世界級人工智能大賽),AlexNet將圖像分類誤差記錄從 26% 降低到 15%,之后很多公司開始將深度學習作為的核心技術發展。Facebook、谷歌、亞馬遜等知名公司都利用卷積網絡進行圖像識別,商品推送等工作。

CNN卷積神經網絡是一個大家族,對圖像而言主要有以下4個關鍵技術應用。

  1. 物體定位:預測包含主要物體的圖像區域,以便識別區域中的物體。
  2. 物體識別:針對分割好的目標進行分類。
  3. 目標分割:將圖像目標分割出來,針對圖像上的像素進行歸屬,例中如人類、建筑物等。
  4. 關鍵點檢測:從圖像中檢測目標物體上某關鍵點的位置,例如人類面部關鍵點信息。

CNN網絡訓練數據集是公開的,支持全球的開發者進行下載訓練模型數據集:

(1)MNIST:最受歡迎的深度學習數據集之一。手寫數字數據集,包含一組60,000個示例的訓練集和一個包含10,000個示例的測試集。http://deeplearning.net/tutorial/gettingstarted.html

(2)ImageNet:李飛飛創立的全球視覺識別挑戰賽數據集(ILSVRC)。http://image-net.org/index

(3)PASCAL:標準化的優秀的數據集,數據集可以用于圖像分類、目標檢測、圖像分割。http://host.robots.ox.ac.uk/pascal/VOC/

(4)MS-COCO:COCO是一個大型的、豐富的物體檢測,分割和字幕數據集。http://cocodataset.org/

為什么要用CNN來處理圖像呢?

原因很簡單,因為能在短時間內提取圖像特征。

一般來講,普通神經網絡將輸入層和隱含層進行全連接(Full Connected),從而保證系統能夠提取張圖像的特征。從算力的角度來分析,較小的圖像從整幅圖像中計算特征是可行的。比如提取一張28×28的小照片的特征,當前CPU還夠用。

但是,如果提取大的圖像(如 96×96 的圖像),要使用這種普通神經網絡全全連接方法來學習整幅圖像上的特征,將變得非常耗時。需要設計個輸入單元,如果要學習 100 個特征,那么就有個參數需要進行運算。

相比之下,96×96 的圖像計算過程比28×28圖像的處理過程慢100倍。大家都明白當前的相片動不動就是高清大圖,普通神經網絡按照全連接的方式無法預計何時才能處理完。

下面的內容是本節的重點部分,我們具體來講述一下CNN網絡的實現過程。

1. 圖像的輸入

我們首先要搞清楚一張照片是如何輸入到神經網絡中的。眾所周知,計算機適合處理的是矩陣運算,所以必須要把圖片轉換成矩陣后計算機才能認識。所有的彩色圖像都由紅綠藍(RGB)疊加而成,成為圖像的三個通道,一張圖片在計算機中存儲也是通過這三個矩陣完成的。

圖像處理——卷積神經網絡運算過程詳解

圖4-23圖的色彩通道

如圖4-23所示,一張64*64個像素大小的圖片(例如白色可以表示成RGB(255,255,255),可以用3個64*64大小的矩陣來代表這個圖。上面指畫三個5 * 4的矩陣來代表64*64的全尺寸矩陣。RGB這三個矩陣稱為為圖像的3個通道,也作為神經網絡的輸入數據。

2. 卷積神經網絡的組成

與其他神經網絡相同,CNN網絡同樣也包含輸入層、隱藏層、輸出層幾大部分,卷積神經網絡的主要運算過程如圖4-24所示。

圖像處理——卷積神經網絡運算過程詳解

圖4-24卷積神經網絡處理過程

卷積層(Convolutional layer):卷積層由多個卷積單元組成,每個卷積單元的參數都是通過反向傳播算法優化得到的。卷積運算主要為了提取圖像的特征,隨著卷積層的增加,多層網絡可以提取更為復雜的圖像特征。

線性整流(Rectified Linear Units layer, ReLU layer):主要指的是激活函數運算(Activation function)使用線性整流的ReLu函數(Rectified Linear Units, ReLU)。

池化層(Pooling layer):在卷積之后圖像的維度特征依然很多,將特征矩陣分割成幾個單個區塊,取其最大值或平均值,起到了降維的作用。

全連接層(Fully-Connected layer):把所有局部特征以及各通道的特征矩陣結合變為向量代表,計算最后每一類的得分。

3. 計算過程

CNN網絡的計算過程如圖XXX,每個組成模塊代表了不同的計算內容。

(1)數據規則化

彩色圖像的輸入通常先要分解為R(紅)G(綠)B(藍)三個通道,其中每個值介于0~255之間。

(2)卷積運算(Convolution)

前面講到,由于普通的神經網絡對于輸入與隱層采用全連接的方式進行特征提取,在處理圖像時,稍微大一些的圖將會導致計算量巨大而變得十分緩慢。卷積運算正是為了解決這一問題,每個隱含單元只能連接輸入單元的一部分,我們可以理解為是一種特征的提取方法。

首先我們來明確幾個基礎概念:深度(depth)、步長(stride)、補零(zero-padding)、卷積核(convolution kernel)。

深度(depth):深度指的是圖的深度與它控制輸出單元的深度,也表示為連接同一塊區域的神經元個數。

步幅(stride):用來描述卷積核移動的步長。

補零(zero-padding):通過對圖片邊緣補零來填充圖片邊緣,從而控制輸出單元的空間大小。

卷積核(convolution kernel):在輸出圖像中每一個像素是輸入圖像中一個小區域中像素的加權平均的權值函數。卷積核可以有多個,卷積核參數可以通過誤差反向傳播來進行訓練。

如圖4-25為步長=1的卷積計算過程,卷積核依次向右移動進行卷積運算得到相應結果。

圖像處理——卷積神經網絡運算過程詳解

圖4-25 卷積運算過程

為圖像計算可以對邊緣進行補零,可見這個過程改變了圖像的運算大小,如圖4-26所示。

圖像處理——卷積神經網絡運算過程詳解

卷積運算的過程其實非常簡單,過程如圖4-27描述,可以概括為公式(4.3.6)。其中B代表卷積后的結果,K是卷積核,A為圖像的輸入矩陣。

圖像處理——卷積神經網絡運算過程詳解

圖像處理——卷積神經網絡運算過程詳解

圖4-27 卷積運算過程

如圖4-27所示,可見卷積核K為2*2的卷積核,詳細運算過程如下。

全部圖像卷積運算可以通過公式(4.3.6)進行。

(3)激活

CNN卷積神經網絡在卷積后需要經過激活過程,當前通常使用的激活函數是Relu函數。Relu函數的主要特點在之前的章節已經講過。從函數的圖像上來看,單側抑制,相對寬闊的興奮邊界,具有稀疏激活性的特點。

(4)池化(Pooling)

池化的目的是提取特征,減少向下一個階段傳遞的數據量。池化操作相對于對每個深度切片是獨立,池化規模一般為像素的 2*2,與卷積運算相比,池化層運算一般有以下幾種:

  1. 最大池化(Max Pooling):取4個點數值的最大值。這是最常用的池化算法。
  2. 均值池化(Mean Pooling):取4個點數值的均值。
  3. 高斯池化(Gauss Pooling):按照高斯模糊的方法。

如圖4-28,描述了最大池化的計算方法。

圖像處理——卷積神經網絡運算過程詳解

圖4-28 池化運算過程

(5)全連接(Fully-connected layer)

全連接層一般出現最后幾步,在卷積神經網絡中起到“分類器”的作用。如果說卷積層、池化層和激活函數層等操作是將原始數據映射到隱層特征空間的話,全連接層則起到將學到的“分布式特征表示”映射到樣本標記空間的作用。全連接過程是對矩陣的展開過程,也可以理解為輸出矩陣與一個1*1的卷積核進行卷積運算,最后展開為一個1*n的向量。

在卷積神經網絡中,全連接層一般使用Softmax函數來進行分類。Softmax函數適用于數據分類,用于保證每個分類概率總和為1。

卷積神經網絡(CNN)的計算過程雖然講解繁瑣,但對于了解深刻理解神經網絡算法非常有益。卷積神經網絡經過近30年的發展擁有多條網絡發展分支,并且持續高速發展之中。其中有網絡層數加深的VGG16與VGG19等,有卷積模塊增強的NIN網絡等,從分類任務向目標檢測任務過度的新型網絡R-CNN等,圖4-29展示了卷積神經網絡的不同發展分支。

圖像處理——卷積神經網絡運算過程詳解

#專欄作家#

白白,人人都是產品經理專欄作家。公眾號:白白說話(xiaob-talk)。醫藥行業資深產品專家,負責人工智能行業類產品綜合架構與技術開發。在行業云產品架構,藥物設計AI輔助、醫療知識圖譜等領域有深入研究。

本文原創發布于人人都是產品經理。未經許可,禁止轉載。

題圖來自Unsplash,基于 CC0 協議

更多精彩內容,請關注人人都是產品經理微信公眾號或下載App
評論
評論請登錄
  1. 目前還沒評論,等你發揮!