1. 程式人生 > >基於小樣本量的水下影象識別

基於小樣本量的水下影象識別

摘要:由於海洋環境的不受限制,使得水下物體的識別成為一項具有挑戰性的任務。在大資料集的背景下,深度學習方法已成功地應用於空中物體的影象識別。然而,我們發現深度神經網路(DNNs)容易在小樣本資料集中發生過擬合現象。不幸的是,水下影象採集往往需要大量的人力和物力,這使得獲取足夠的樣本影象來訓練DNNs變得困難。此外,水下攝像機捕捉到的影象通常會因噪聲而惡化。

        這一篇文章中,我們將以活魚識別為例,提出一種小樣本環境下的水下影象識別框架。首先,利用一種改進的中值濾波器來抑制魚的影象噪聲。然後,使用世界上最大的影象識別資料庫ImageNet中的影象對卷積神經網路模型進行預訓練。最後,利用預處理後的魚影象對訓練後的神經網路進行微調,並對分類效能進行測試。實驗結果表明,該方法具有識別魚類的能力,為小樣本環境下的識別任務提供了一種有效的方法。‍

一、引言

        隨著海洋觀測的快速發展,水下物體識別在海軍沿海防禦任務以及漁業、水產養殖等海洋經濟中發揮著越來越重要的作用。然而,由於水下環境的複雜性,水下影象具有邊緣和細節退化、目標與背景對比度低、噪聲汙染等特點,使得影象識別成為一項非常具有挑戰性的任務。傳統的分類解決方案使用精心手工製作的低階特性。這些特性對於某些特定的資料和任務確實取得了很好的效能,但是有效的特性需要專門的知識,並且它們中的大多數在泛化能力上是有限的。

        深度學習是模式識別領域的一個新的研究熱點。它允許由多個處理層組成的模型學習具有多個抽象級別的資料表示。自21世紀初以來,卷積神經網路(ConvNets)在空中物體的影象識別中得到了成功的應用。遺憾的是,基於深度學習的水下影象識別研究還不夠深入。其中一個原因可能是深度學習在影象分類中的成功在於使用了大量的訓練資料,而水下目標影象的獲取總是需要大量的人力和成本,這使得獲取大量的樣本影象變得困難。

        本文的目的是在小樣本量的情況下找到一種水下影象識別的方法。更具體地說,利用水下攝像機在公海捕捉到的一組魚類影象,我們試圖找到一個有效而簡單的框架來解決水下活魚識別問題。

二、背景資訊

A.中值濾波

        實驗表明,脈衝噪聲和高斯噪聲通常會使攝像機捕捉到的影象質量下降。噪聲的存在給影象處理帶來困難,直接影響到影象的分割、特徵提取、影象識別等。

        中值濾波器能有效抑制脈衝噪聲。中值濾波的標準演算法一般採用滑動視窗獲取影象區域性畫素的灰度值,然後用滑動視窗獲取的中值替換原始影象中指定畫素的值。該演算法相對簡單,易於硬體實現。然而,標準中值濾波器的效能受過濾視窗大小的影響很大。例如,一個小的濾波視窗可以更好的保護原始影象的細節資訊,但是噪聲濾波的能力會受到限制;大的濾波視窗可以增強對噪聲的抑制,但會削弱原始影象的細節。上面是針對灰度影象而言,對彩色影象(多通道)同理可得。‍

B.用於影象識別的卷積神經網路

        卷積神經網路是一種有效的分類方法,在物體識別中得到了廣泛的應用。ConvNets的典型架構是由卷積層、池化層和全連線層等簡單模組組成的多層堆疊。從原始輸入開始,每個模組將一個級別的表示轉換為一個更高、更抽象的級別。對於識別任務,更高級別的表示會放大輸入的某些方面,這些方面對於識別和抑制無關的變化非常重要。

     ConvNets對影象的性質(即統計資料的平穩性和畫素依賴性的區域性性:stationarity of statistics and locality of pixel dependencies)做出了強有力的、大多數是正確的假設。因此,與具有類似尺寸層的標準前饋神經網路相比,ConvNets的連線和引數要少得多,因此更易於訓練,而理論上最好的效能可能只是稍微差一些。此外,卷積神經網路的容量可以通過改變其深度和寬度來控制。

         ConvNets的一個典型模型是AlexNet,如圖1所示。在2012年ImageNet大型視覺識別挑戰賽(ILSVRC)中,Alex和他的團隊獲得了15.3%的前五名測試錯誤率,而第二名的測試錯誤率為26.2%。結果表明,一個大而深卷積神經網路能夠利用純監督學習方法在大資料集上實現高精度。‍

圖1  AlexNet的總體架構。net包含8個權重層,前5個是卷積層,剩下的3個是全連線層。最後一個全連線層的輸出被輸入到Softmax分類器中,該分類器生成1000個類標籤的分佈。

三、提出框架

A.改進的中值濾波器

        與處理影象所有畫素的標準中值濾波器不同,我們改進的中值濾波器只處理被脈衝噪聲汙染的畫素。演算法分為兩個主要步驟:

(1)第一步:檢測被脈衝噪聲汙染的影象畫素。根據先驗知識,噪聲畫素的值與周圍的無噪聲畫素值相差很大。

(a)脈衝噪聲主要是將畫素值更改為0或255,所以我們只關心那些值為0或255的畫素,其他的都屬於無噪聲畫素。

(b)用5×5標準中值濾波器來處理整個原始影象,得到一個粗糙的影象。分別從原始影象中減去處理後的影象的畫素值,取結果的平均值作為閾值,確定我們感興趣的畫素是否為噪聲畫素。具體來說,如果減法結果的畫素值大於閾值,則該畫素將被劃分為噪聲畫素,反之亦然。

(2)第二步:處理噪聲畫素。被脈衝噪聲干擾的畫素將被5×5標準中值濾波器處理。

        為了定量描述去噪效果,將採用一種經典的方法。用標準公式計算了RGB影象的峰值信噪比(PSNR,該值越大,去噪效果越好):

x:二維空間座標,屬於影象域X⊂Z2

c∈{ R,G,B }:下標,顏色通道

y:原始影象

yˆ :去噪影象‍

B.小樣本量下的深度學習策略

        深度神經網路通常有數百萬個連線和權重。雖然ConvNets利用本地連線和共享權,但仍需要訓練大量的權值。當ConvNets應用於大型資料集時,他們將獲得驚人的結果。然而,我們發現ConvNets在小樣本量的情況下容易發生過擬合,即訓練集精度高,測試集結果差。對於水下影象識別任務,一個實際的問題是如何獲得足夠的樣本影象來訓練ConvNets。基於深度信念網路(deep belief network, DBN)的訓練過程,我們提出了一種在小樣本情況下的水下影象識別方法。更具體地說,通過一小組魚的影象,我們解決了水下活魚的識別問題。

       小樣本量情況下的水下影象識別過程主要分為三個階段:

(1)第一階段:使用大型影象資料集ImageNet對ConvNets進行預訓練。ConvNets不僅是一個分類器,還是一個特徵提取器。卷積神經網路的隱藏層學習以一種易於預測目標輸出的方式來表示網路的輸入。卷積神經網路的訓練階段完成後,預訓練的卷積神經網路將對影象的顏色、紋理和邊緣等資訊比較敏感。由於自然影象彼此之間有一定的共性,所以對一個卷積神經網路進行預訓練是合理的。

      ImageNet為我們提供了這麼大的影象資料集,它有超過1500萬張標記為高解析度的影象,屬於大約22000個類別。每個概念的影象都是有質量控制和人為註釋的。

(2)第二階段:使用我們的小樣本影象對預訓練的ConvNet進行微調。通過隨機梯度下降法可以進一步訓練多層結構,利用影象標籤中非常有限的資訊對訓練前的權重進行微調。

(3)第三階段:測試經過訓練的ConvNets的效能。卷積神經網路可以用於影象識別,精度滿足應用要求。‍

四、影象識別實驗

A.魚類識別資料

        本文使用的魚類識別資料來自Fish4Knowledge。圖2顯示了從一個實時視訊資料集中獲得的影象(一共2120張影象),在10個代表性魚類品種下面分別是名稱和數量。資料不平衡,最常見的物種是最少的物種(只有90幅影象)的5倍多,直接使用深度學習方法很難獲得高的識別準確率。‍

圖2 十種代表性魚類。每幅圖片代表10個魚群中的一個魚種,它們的名字和數量都標在下面。顯示的影象是理想的,因為資料集中的許多其他影象質量較差。

B.影象去噪

       影象去噪可以使後續的魚識別任務更加容易。為了克服標準中值濾波器的缺點,採用改進的中值濾波器抑制影象噪聲。圖3分別展示了用標準中值濾波器和改進的方法分別處理有噪聲的魚影象的結果。‍

圖3 分別採用標準中值濾波和改進中值濾波對噪聲影象進行處理。(a)原始影象。(b)3×3標準中值濾波的結果。(c)5×5標準中值濾波的結果。(d)改進的中值濾波結果。 

       從圖3可以看出,該方法在保留原始影象細節的同時,能有效抑制噪聲。

       為了進行定量比較,我們根據公式(1)計算了三種不同方法處理的影象的PSNR, PSNR的改善可以從表I中看出(通過比較最後一列中的數值和其他兩列中的任何一列中的數值);可以觀察到,這種改善是顯著的,通常大於2dB。‍

TABLE I  PSNR OF STANDARD FILTER AND IMPROVED FILTER

C.卷積神經網路的體系結構

       利用自然訊號特性的ConvNets背後有四個關鍵思想:本地連線、共享權重、池化和多層使用。我們使用的ConvNets的總體架構如圖4所示,與AlexNet幾乎相同。每個卷積層的權值都是從0均值高斯分佈初始化的,標準差為0.01。‍

圖4  使用的ConvNets架構,顯示了不同層的定義。前五層為卷積層,其餘三層為全連通層,最後一層輸出的數量在不同的訓練階段會發生變化。

D.卷積神經網路的訓練與測試

       網路的訓練分為兩個階段。

第一階段:模型在從ImageNet獲得的資料集上進行預訓練,在1000個類別中每個類別大約有1000個影象。經過預處理後,ConvNets的權值進行了適當的初始化,其中大部分資訊來自影象建模。

第二階段:我們使用Caffe框架實現了體系結構。影象預處理的魚都調整到227×227,魚影象分為三個子集:500張圖片(10類影象,每類50張)作為訓練集,200張圖片(10類影象,每類20張)作為驗證集,剩下的1420張測試集。

        最後一層的輸出數量從1000變化到10,並被髮送到Softmax分類器,這將生成10個類標籤的分佈。採用batch=40的隨機梯度下降法,通過對分類誤差的反向傳播,對訓練好的神經網路進行微調。學習率設定為0.001,同時權重衰減為0.005,動量項為0.9。前七層的學習率相同,但最後一層的學習率是前七層的10倍。當訓練迭代的整數倍為1000時,學習率降低了2倍。

       經過5000次迭代,驗證準確率達到85.50%,測試準確率達到85.08%。圖5為訓練損失與訓練迭代圖,圖6為驗證精度與訓練迭代圖,證明了我們提出的框架對於小樣本情況下的影象識別是有效的。‍

圖5  Training loss vs. training iterations of the second training stage.Training loss declines sharply and tends to be 0 after about 500 iterations.

圖6  Validation accuracy vs. training iterations of the second training stage.Validation accuracy rises quickly at the first 200 iterations and tends to bestable after about 1000 iterations.

五、總結

       本文提出了一種改進的中值濾波器和一種有效的基於卷積神經網路的水下魚類識別框架,可方便地推廣到其他的識別應用中。這些特徵是從訓練資料中學習到的,所以不需要專門的魚知識。在此框架下,我們希望能夠推進水下影象識別研究的深度學習研究,特別是在樣本影象較少的情況下。它可以有利於海洋防禦,以及商業應用,如漁業和水產養殖。 

更多AI資源請關注公眾號:大鬍子的AI

歡迎各位AI愛好者加入群聊交流學習:882345565(內有大量免費資源哦!)