天天看點

醫學圖像處理醫學圖像處理-卷積神經網絡卷積神經網絡_圖像處理——卷積神經網絡運算過程詳解...

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

CNN卷積神經網絡是一個大家族,對圖像而言主要有以下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),進而保證系統能夠提取張圖像的特征。從算力的角度來分析,較小的圖像從整幅圖像中計算特征是可行的。比如提取一張28x28的小照片的特征,目前CPU還夠用。但是,如果提取大的圖像(如 96x96 的圖像),要使用這種普通神經網絡全全連接配接方法來學習整幅圖像上的特征,将變得非常耗時。需要設計個輸入單元,如果要學習 100 個特征,那麼就有個參數需要進行運算。相比之下,96x96 的圖像計算過程比28x28圖像的處理過程慢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,與卷積運算相比,池化層運算一般有以下幾種: * 最大池化(Max Pooling):取4個點數值的最大值。這是最常用的池化算法。 * 均值池化(Mean Pooling):取4個點數值的均值。 * 高斯池化(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展示了卷積神經網絡的不同發展分支。

醫學圖像處理醫學圖像處理-卷積神經網絡卷積神經網絡_圖像處理——卷積神經網絡運算過程詳解...

文章來自社群簽約作者:白白說話(公衆号)《手把手建構人工智能産品》作者。