基於卷積神經網路

的遙感圖像養殖區自動劃分

摘要:卷積神經網路是目前計算機視覺領域廣泛應用的模型。我們在傳統卷積神經網路的基礎上,替換了全連接層,藉助高解析度圖像,對海水養殖區進行識別和標記,最終實現了模型對海水養殖區很好的識別,訓練速度也較為理想。該研究減少了了人工識別養殖區的時間,節約人力物力,並且對海洋養殖區的分布布局具有重要意義。

關鍵字:高解析度遙感圖像;特徵提取;全卷積神經網路;圖像語義分割

隨著科技發展,高解析度圖像解析度越來越高,圖像中所包含的信息更加豐富,如何準確高效處理利用這些信息愈來愈被人們關注。當今世紀,深度學習

的迅速發展,成為人們處理這些信息的有力手段。

CNN網路是受自然視覺的啟發機制而產生,由於其網路結構,使其在計算機視覺方面處理效果相當出色。卷積神經網路藉助卷積核提取圖片特徵來進行訓練,本文藉助基於VGG19的全卷積神經網路,利用MATLAB將高分圖像進行切割,得到多幅訓練圖片。訓練完成後,全卷積神經網路會對測試圖片中像素進行分類,實現圖片的語義分割,這樣,就能對一張圖片的不同類別進行分類,從而達到目的。

1 原理與方法

1.1 VGG19+FCN網路結構

Vgg19模型也是一種CNN。VGG19網路層數非常深,卷積核大小為3x3,由卷積層、池化層、全連接層組成。VGG19模型結構圖如下:

該卷積網路由5層卷積層,3層全連接層,softmax輸出層組成,所有的隱藏層的激活函數都採用relu激活函數。卷積核使用的是3x3的小卷積核,不僅可以減少參數,而且方便提取更多的圖片特徵,增加了網路的擬合表達能力。與AlexNet網路相比,VGG模型沒有採用AlexNet較大的卷積核尺寸(7x7),而是通過降低卷積核的大小,堆疊卷積子層來達到同樣的性能。除此之外,VGG模型的通道數多,層數更深,後面對每層進行翻倍,最多達到了512個通道,有利於更多的特徵被提取出來,VGG網路在每個全卷積層後加入了池化層,減小了特徵向量提取後的寬和高,控制了計算量的增長規模。

FCN網路,如圖二所示,對圖像實現像素級別的分類,從而實現了語義級別的圖像分割。與傳統卷積神經網路在網路最後使用全連接層實現固定長度特徵向量不同,FCN網路將最後的全連接層替換為卷積層,添加反卷積層對卷積層輸出的heatmap(如圖三所示)進行上採樣,從而可以把抽象的特徵圖恢復出每個像素所屬的類別,恢復到原來的圖片大小,這就使得FCN網路可以接受任意大小的圖片輸入。

圖二

圖三

1.2 VGG網路特徵提取

對於輸入進卷積層的圖片由我們設定好大小的卷積核在整幅圖片上進行按照指定的步數進行滑動,在VGG模型中,我們將卷積核設定為3x3,如圖四所示,

圖四

將filter中的各個權重與其所對應的圖片區域中的像素點乘,計算完之後,按照步長進行移動,進行下一輪的計算,當移動完整幅圖片後,一個特徵圖也就提取出來了,

在filter移動過程中,我們通常會對圖片進行padding操作,結果特徵圖的輸出大小

有如下公式:

W2=(W1-F+2P)/S+1

H2=(H1-F+2P)/S+1

在上面兩個公式中,W2是卷積後Feature Map的寬度;W1是卷積前圖像的寬度;F是filter的寬度;P是Zero Padding數量,Zero Padding是指在原始圖像周圍補幾圈0,如果P的值是1,那麼就補1圈0;S是步幅;H2是卷積後Feature Map的高度;H1是卷積前圖像的寬度。VGG在卷積層後,緊跟著的是池化層,池化層主要作用是下採樣,通過去掉Feature Map上的不重要的樣本,減少參數數量。VGG模型採用的方法是Max Pooling,實際上是在Feature Map上不同區域去最大值,作為採樣後的樣本。如圖五所示:

圖五

我們將提取到的特徵沒有經過通過全連接層,而是在卷積層後加入三個卷積層來代替原來三個全連接層。針對VGG裡面第一個全連接層,由於與之相連的池化層輸出是[2x2x512],所以我們只需將卷積核尺寸設置為2,步長設置為1,這樣輸出數據就會變成[1x1x4096],針對第二個全連接層,我們將卷積核尺寸設置1,步長設置為1,第三個全連接層類似,這樣,我們最後得到輸出[1x1x4096]的輸出。

1.3 反卷積(Deconvolution)

在經過卷積層,最後的輸出是heatmap(熱圖),熱圖是我們得到的最高維的特徵圖,接下來要做的是把熱圖進行反卷積,把圖象放大到原圖大小,最後的輸出是一個分類好的圖片。反卷積過程有時又被稱為Fractional Strided Convolution,直譯就是移動步長為小數的卷積。對於卷積過程如圖六所示,卷積核在輸入圖像上移動。反卷積過程相當於在輸入特徵單元中插入s-1個0,s為步長,如圖七所示

圖六 圖七

雖然這樣,我們已經能夠實現圖片的語義分割,但是精確度不高,在實驗中,根據文獻[1]我們採用了Skip Architecture 。對於Heat Map,假如我們直接對其作三次次反卷積操作,我們得到的只是VGG19第五層卷積核中的特徵,所以我們要繼續向前迭代,由第四層卷積核對上一層得到的圖進行反卷積,繼續向前迭代,最後由第三層卷積核對圖進行反卷積補充細節,最後完成了整幅圖像的還原過程。

2. 基於VGG19 FCN養殖區分類實驗

2.1 實驗平台信息

1. 操作系統 Cenos +CUDA+Tensorflow-gpu

2. 實驗設備:8個12G NVIDIA K80 GPU +2個Intel(R)Xeon CPU E5-2690 v4CPU

2.2數據集介紹

數據集準備主要由如下步驟:

1. 在高分圖像中裁取合適範圍的養殖區圖像

2. 繪製該養殖區範圍圖像的矢量圖

3. 根據養殖區圖像矢量圖製作真值圖

4. 用MATLAB裁切養殖區遙感圖像為32*32像素大小的圖片,分別作為訓練集和驗證集;

5. 將真值圖裁取為與訓練集和驗證集相同大小圖片,作為樣本照片

養殖區遙感圖像

養殖區遙感圖像矢量圖

養殖區遙感圖像

養殖區遙感圖像真值圖

養殖區:1

海水:0

2.3 訓練模型(FCN全卷積網路)

2.3運行結果

迭代1000次輸出結果 迭代20000次輸出結果

精度:0.5338876 精度:0.97220755

迭代過程中損失變化曲線

3.結論

本文利用由VGG19模型為基礎的FCN網路,針對高解析度養殖區圖像,運用神經網路提取圖片特徵進行像素級別分類,高指標的完成了養殖區的分類任務,對於有些比較模糊的養殖區圖像,該模型也可以識別出,通過這種方法,大大減少了人工投入。但是由於樣本真值圖養殖區標記數據的準確性不足,導致模型訓練識別時一些誤差出現,並且對於不同大小的輸入圖片,識別結果會出現明顯誤差。以後工作可以尋找更加優化的網路結構來提高分類精度並且降低程序的運行時間。

推薦閱讀:

相关文章