楊 朔,陳麗芳,石 瑀,毛一鳴
(江南大學(xué)數(shù)字媒體學(xué)院,江蘇無(wú)錫214122)
(*通信作者電子郵箱404314023@qq.com)
近年來(lái),人口增長(zhǎng)和工業(yè)的快速發(fā)展造成水體富營(yíng)養(yǎng)化加劇,導(dǎo)致藻類(lèi)大量繁殖并聚集成為水華,大量爆發(fā)的藻類(lèi)破壞了水體的生態(tài)結(jié)構(gòu)并威脅到人類(lèi)的生存環(huán)境。研究表明,淡水藻類(lèi)的大部分門(mén)類(lèi)都能形成有害水華,尤其藍(lán)藻的范圍最廣,對(duì)生態(tài)環(huán)境的危害最大。
現(xiàn)有的治藻方法包括:1)利用二氧化氯(ClO2)、臭氧(O3)、高錳酸鉀(KMnO4)等氧化劑,通過(guò)將藍(lán)藻氧化達(dá)到快速殺藻目的的化學(xué)法;2)利用微生物防治、水生植物抑制的生物法,以及人工打撈等物理法等。受限于治理速度和成本的要求,人工打撈仍是最有效、應(yīng)用最廣的方法。
人工打撈需要精準(zhǔn)地定位藍(lán)藻的爆發(fā)位置和爆發(fā)程度,一般通過(guò)視頻監(jiān)控平臺(tái)實(shí)現(xiàn)。即監(jiān)控人員通過(guò)視頻監(jiān)控平臺(tái)尋找藍(lán)藻爆發(fā)的地點(diǎn),再根據(jù)爆發(fā)程度決定是否需要打撈。這一流程存在幾個(gè)問(wèn)題:一是信息的滯后性,面對(duì)眾多的監(jiān)控地點(diǎn),監(jiān)控人員很難在第一時(shí)間發(fā)現(xiàn)藍(lán)藻爆發(fā),從而耽誤了打撈時(shí)機(jī);二是很難進(jìn)行定量分析,不同人對(duì)藍(lán)藻爆發(fā)程度的理解不同,對(duì)需要打撈的狀態(tài)的理解也不同,會(huì)造成決策的差異,并且打撈前后的變化也受到主觀因素的影響,缺乏定量分析,很難描述打撈的效果,所以需要能夠定性的描述,比如藍(lán)藻覆蓋率達(dá)到70%時(shí)需要打撈,打撈完成后覆蓋率降低至20%,那么我們就可以定量地分析這次打撈的成果。
現(xiàn)有關(guān)于藍(lán)藻圖像的研究多為遙感圖像。林怡等[1]利用遙感影像數(shù)據(jù),分析藍(lán)藻和其他典型地物影像光譜曲線及其特征,構(gòu)建了歸一化藍(lán)藻指數(shù)(Normalized Difference Index of Cyanobacteria Bloom,NDI_CB),有效地從渾濁水體中提取藍(lán)藻信息。陳云等[2]以2007年遙感圖像為基礎(chǔ),以歸一化差異植被指數(shù)(Normalized Difference Vegetation Index,NDVI)為測(cè)試變量,運(yùn)用分類(lèi)回歸樹(shù)(Classification And Regression Tree,CART)算法確定分割閾值,通過(guò)構(gòu)建決策樹(shù)的方法識(shí)別出藍(lán)藻水華信息,取得了較好的效果。李亞春等[3]以太湖2003—2013年的遙感圖像為基礎(chǔ),手工劃分出藍(lán)藻區(qū)域,并根據(jù)劃分結(jié)果討論了藍(lán)藻爆發(fā)情況與溫度的關(guān)系,據(jù)此計(jì)算出藍(lán)藻爆發(fā)階段的時(shí)間節(jié)點(diǎn),為防控提供了依據(jù)。
利用遙感圖像劃分藍(lán)藻有幾個(gè)好處:一是遙感包含多方面的信息,RGB值、光的吸收波段以及熱成像結(jié)果等信息可以很好地將藍(lán)藻與水體區(qū)分開(kāi)來(lái);二是遙感的覆蓋面積廣,往往可以覆蓋整個(gè)湖面,劃分結(jié)果比較具有統(tǒng)計(jì)意義,便于分析藍(lán)藻生長(zhǎng)的規(guī)律;所以很多學(xué)者借助遙感信息分析了藍(lán)藻生長(zhǎng)與溫度、適度、風(fēng)向以及諸多其他因素的關(guān)系。但這些研究更適合探索藍(lán)藻生長(zhǎng)的規(guī)律,而不適合輔助人工打撈等物理法除藻。因?yàn)槿斯ご驌菩枰珳?zhǔn)的定位藍(lán)藻爆發(fā)的位置,才能最大限度地減少人力和時(shí)間的浪費(fèi),而遙感信息更注重全局的表達(dá),缺乏局部的細(xì)節(jié)定位;并且遙感信息的周期比較長(zhǎng),來(lái)源有限,顯然無(wú)法滿(mǎn)足打撈的時(shí)效性。
直接處理視頻監(jiān)控平臺(tái)的藍(lán)藻圖像可以解決這些問(wèn)題,即從監(jiān)控視頻中實(shí)時(shí)獲取藍(lán)藻圖像,將圖像中的藍(lán)藻分割出來(lái),然后計(jì)算藍(lán)藻(像素點(diǎn))的覆蓋率或覆蓋面積,為實(shí)時(shí)預(yù)警或決策提供定量指標(biāo)。那么需要將藍(lán)藻從圖像中分割出來(lái),由于藍(lán)藻具有鮮明的顏色信息,本文首先嘗試了基于RGB通道的閾值分割算法,分割結(jié)果不理想;然后又復(fù)現(xiàn)了FCNNet[4]和Deeplab[5]等基于深度神經(jīng)網(wǎng)絡(luò)(Deep Neural Network,DNN)的圖像分割算法,分割準(zhǔn)確率仍不夠高。并且由于受到算法本身的限制,F(xiàn)CNNet的分割結(jié)果缺乏輪廓細(xì)節(jié)(使用了高倍雙線性插值),不適合分割藍(lán)藻這種輪廓曲折且多變的目標(biāo);Deeplab通過(guò)引入條件隨機(jī)場(chǎng)(Conditional Random Field,CRF)提高了準(zhǔn)確率并修飾了輪廓細(xì)節(jié),但出現(xiàn)了大面積藍(lán)藻錯(cuò)分的情況。對(duì)抗式生成網(wǎng)絡(luò)(Generative Adversarial Net,GAN)[6]已經(jīng)被證明可以有效地提升網(wǎng)絡(luò)性能,故本文借助GAN的思想,設(shè)計(jì)了深度生成式對(duì)抗網(wǎng)絡(luò)(Deep GAN,DGAN)模型用于生成藍(lán)藻圖像的精準(zhǔn)分割結(jié)果。在3075張藍(lán)藻圖像數(shù)據(jù)集上的實(shí)驗(yàn)表明,DGAN在準(zhǔn)確率、召回率以及F1分?jǐn)?shù)(F1score,F(xiàn)1)等指標(biāo)上比傳統(tǒng)圖像分割算法(閾值分割算法)有很大的提升,比FCNNet、Deeplab等基于DNN的分割算法的提升也均超過(guò)了4個(gè)百分點(diǎn),并且分割結(jié)果更具輪廓細(xì)節(jié),更少孔洞,也更少出現(xiàn)大面積錯(cuò)識(shí)漏識(shí)的情況。
傳統(tǒng)的圖像分割算法大致分為兩個(gè)步驟:首先根據(jù)目標(biāo)的特點(diǎn)設(shè)計(jì)特征,然后根據(jù)特征對(duì)像素點(diǎn)進(jìn)行分類(lèi)或聚類(lèi)。這就要求目標(biāo)有比較明顯的特征信息,包括顏色特征、輪廓特征或者紋理特征等。比如閾值分割算法會(huì)根據(jù)目標(biāo)的顏色特征找到RGB通道的合理閾值區(qū)間,然后根據(jù)這個(gè)區(qū)間進(jìn)行逐像素點(diǎn)的分類(lèi)。但藍(lán)藻缺乏明顯的特征信息,使得設(shè)計(jì)有效特征變得非常困難。
首先,藍(lán)藻缺乏明顯的顏色特征。藍(lán)藻在不同的生長(zhǎng)階段具有不同的顏色,生長(zhǎng)期的藍(lán)藻呈青綠色,但成熟期的藍(lán)藻會(huì)偏黃色;并且藍(lán)藻的顏色與濃度有關(guān),一般來(lái)說(shuō),濃度大時(shí)顏色偏深,濃度小時(shí)顏色偏淺。其次,藍(lán)藻缺乏明顯的輪廓特征:藍(lán)藻不具有特定的輪廓,無(wú)法像人體或汽車(chē)那樣靠輪廓分割。最后,水中混雜著大量的水草,岸邊會(huì)出現(xiàn)樹(shù)的倒影,這些都給分割增加了難度。
藍(lán)藻存在的上述問(wèn)題使得很難設(shè)計(jì)出有效的特征,傳統(tǒng)分割算法的結(jié)果不好。神經(jīng)網(wǎng)絡(luò)由于可以自主學(xué)習(xí)特征,是藍(lán)藻分割問(wèn)題更好的解決方案。目前主流的深度神經(jīng)網(wǎng)絡(luò)分割算法是FCNNet和Deeplab算法。
1.2.1 網(wǎng)絡(luò)結(jié)構(gòu)
深度神經(jīng)網(wǎng)絡(luò)的興起得益于卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,CNN)在圖像分類(lèi)上的高準(zhǔn)確率。卷積神經(jīng)網(wǎng)絡(luò)主要是由多層特征提取階段和分類(lèi)器組成的單一尺度結(jié)構(gòu),即輸入經(jīng)過(guò)逐層提取特征學(xué)習(xí)到更高層的特征后輸入到分類(lèi)器中進(jìn)行分類(lèi)[7]。特征提取階段主要包括卷積層和下采樣層,之后會(huì)連接一到兩層的全連接層。以Lecun等[8]提出的Lenet-5網(wǎng)絡(luò)為例,如圖1所示,其輸入像素大小為32×32的圖像樣本,經(jīng)過(guò)卷積核個(gè)數(shù)分別為6和16的兩層卷積層以及兩層下采樣層后,提取到16個(gè)像素大小為5×5的特征,然后通過(guò)全連階層輸出分類(lèi)結(jié)果。
CNN具有非常重要的兩個(gè)性質(zhì),即局部感受野和權(quán)值共享。局部感受野指特征提取過(guò)程中的某一神經(jīng)元只與局部關(guān)聯(lián),這一局部范圍稱(chēng)為感受野;權(quán)值共享是由于圖像高維特征帶來(lái)的大量參數(shù)的產(chǎn)物,用于減少學(xué)習(xí)參數(shù),其在CNN模型中最直接的應(yīng)用是卷積層和下采樣層。
圖1 Lenet的網(wǎng)絡(luò)結(jié)構(gòu)Fig.1 Lenet network structure
1.2.2 卷積層
卷積層是卷積神經(jīng)網(wǎng)絡(luò)的核心組成部分,其主要目的是學(xué)習(xí)和提取有效特征,其具有局部連接和權(quán)值共享特征,這也是CNN可以處理大像素尺寸圖像樣本的原因;此外,其提取特征的方式還具有平移和旋轉(zhuǎn)不變性。Lenet中的C1和C3層為卷積層,其計(jì)算形式可表示為:
i作表示卷積核;是偏置項(xiàng)。運(yùn)算方式如圖2所示。
圖2 卷積層操作Fig.2 Convolution layer operation
1.2.3 下采樣層
下采樣層又稱(chēng)池化層(Pool),Lenet中的S2和S4層為下采樣層,其主要目的是通過(guò)降低分辨率來(lái)減少訓(xùn)練參數(shù),并且獲得更抽象的特征以提高網(wǎng)絡(luò)的魯棒性。其操作方式有多種,最常見(jiàn)的有均值池化和最大值池化,這里以均值池化為例表示其計(jì)算形式:
1.2.4 全連接層
如果把卷積層和下采樣層當(dāng)作特征提取階段,那么全連接層在CNN中起到分類(lèi)器的作用。即將前面學(xué)習(xí)得到的“分布式特征表示”映射到樣本標(biāo)記空間。全連接層會(huì)與前一層的所有神經(jīng)元連接,最后一層全連接層的神經(jīng)元個(gè)數(shù)等于類(lèi)別數(shù),即會(huì)輸出一個(gè)長(zhǎng)度為類(lèi)別數(shù)的向量,每個(gè)值表示將目標(biāo)圖像分類(lèi)為該類(lèi)別的得分,最高值即為該圖像的分類(lèi)結(jié)果。
圖3 池化層操作Fig.3 Pool layer operation
之后經(jīng)過(guò)學(xué)者的不斷研究與發(fā)展,許多更深的、準(zhǔn)確率更高的網(wǎng)絡(luò)被設(shè)計(jì)出來(lái),包括 VGGNet[9]和 GoogLeNet[10]等都取得了非常好的分類(lèi)效果。許多網(wǎng)絡(luò)通過(guò)加入特定功能的層的方式解決了CNN存在的幾個(gè)問(wèn)題,比如Srivastava等[11]加入dropout層通過(guò)隨機(jī)使某些神經(jīng)元失效的方式防止過(guò)擬合,VGGNet[9]使用更小的卷積核以減少訓(xùn)練參數(shù)和提高訓(xùn)練速度,Ioffe等[12]在每層數(shù)據(jù)輸出后加入局部歸一化層(Batch Normalization,BN)使得分類(lèi)曲面可以更好地落到數(shù)據(jù)中心從而防止陷入局部最優(yōu),He等[13]通過(guò)加入殘差以解決梯度消失問(wèn)題等,但這些研究仍局限在圖像分類(lèi)領(lǐng)域。
語(yǔ)義分割指對(duì)圖像進(jìn)行語(yǔ)義級(jí)別的分割,即不僅要分割出前景和背景,還要明確分割出的是什么目標(biāo),其本質(zhì)上是對(duì)像素點(diǎn)的分類(lèi)。最初CNN只能用于圖像分類(lèi),其進(jìn)行圖像分割時(shí)采用逐像素點(diǎn)分類(lèi)的方式,即以每個(gè)像素點(diǎn)為中心,以固定長(zhǎng)度(像素點(diǎn)數(shù)量)截取圖像輸入CNN進(jìn)行分類(lèi),圖像的分類(lèi)結(jié)果即為該像素點(diǎn)的分類(lèi)結(jié)果,待所有的像素點(diǎn)分類(lèi)完成后,也就獲得了分割結(jié)果。這個(gè)做法產(chǎn)生了非常嚴(yán)重的冗余問(wèn)題,相鄰像素點(diǎn)分類(lèi)時(shí)截取的圖像存在大量的重疊,重疊區(qū)域進(jìn)行了多次特征提取,導(dǎo)致分割速度非常慢。如圖4所示,對(duì)像素點(diǎn)1和2分類(lèi)存在大量的重疊區(qū)域。
Shelhamer等[4]設(shè)計(jì)了一個(gè)新的網(wǎng)絡(luò)解決了冗余問(wèn)題,完成了端到端的圖像語(yǔ)義分割,這個(gè)網(wǎng)絡(luò)稱(chēng)為全卷積神經(jīng)網(wǎng)絡(luò)(Fully Convolutional neural Network,F(xiàn)CN)。由于在后續(xù)的發(fā)展中,F(xiàn)CN逐漸發(fā)展成一種網(wǎng)絡(luò)結(jié)構(gòu)的統(tǒng)稱(chēng),即形似文獻(xiàn)[4]中的網(wǎng)絡(luò)結(jié)構(gòu)的神經(jīng)網(wǎng)絡(luò)都可以被稱(chēng)為是FCN。本文為了加以區(qū)分,將文獻(xiàn)[4]中使用的網(wǎng)絡(luò)結(jié)構(gòu)稱(chēng)為FCNNet,并作為本文的對(duì)比算法。
圖5描述了FCNNet作圖像分割的過(guò)程。網(wǎng)絡(luò)分為兩個(gè)階段:第一階段與傳統(tǒng)CNN一致,經(jīng)過(guò)不斷的卷積和下采樣操作獲得了小尺寸的特征,其不同于CNN的地方在于其獲得特征后不輸入全連接層,而是用1×1的卷積核模擬了全連接層的實(shí)現(xiàn),這樣網(wǎng)絡(luò)可以輸入不同尺寸的圖像,經(jīng)過(guò)模擬的全連接層后,獲得了n×n×c的分類(lèi)結(jié)果(傳統(tǒng)CNN的輸出結(jié)果是1×1×c,n表示像素點(diǎn)尺寸,受輸入圖像的大小影響,c表示類(lèi)別數(shù)),n×n中每個(gè)像素點(diǎn)的分類(lèi)結(jié)果即為該像素點(diǎn)對(duì)應(yīng)的感受野圖像的分類(lèi)結(jié)果,這樣一次就完成了對(duì)所有像素點(diǎn)的分類(lèi),解決了CNN作語(yǔ)義分割時(shí)的冗余問(wèn)題。由于第一階段進(jìn)行了大量的卷積和下采樣操作,其分割結(jié)果的像素尺寸遠(yuǎn)小于輸入圖像,稱(chēng)之為熱圖。第二階段通過(guò)上采樣操作(本文中使用的upsampled為雙線性差值),使熱圖恢復(fù)到與原圖相同的像素尺寸,也就獲得了分割結(jié)果。
FCNNet實(shí)現(xiàn)了利用神經(jīng)網(wǎng)絡(luò)對(duì)圖像語(yǔ)義分割,然而它存在幾個(gè)問(wèn)題:一是由于其模型的設(shè)計(jì)基于VGG16網(wǎng)絡(luò),而VGG16是用于作圖像分類(lèi)的,VGG16為了減少最后全連接層的參數(shù),使用多層卷積、池化操作將特征圖的尺寸減小到很小的尺寸,這也就丟失掉了很多信息。但FCNNet需要將這些特征上采樣回原圖大小的分割結(jié)果,這是非常困難的,故FCNNet為了能獲得較大尺寸的特征圖,在特征提取操作前會(huì)對(duì)特征進(jìn)行100個(gè)像素點(diǎn)填充,這無(wú)疑加大了計(jì)算量。二是FCNNet最后使用了高倍上采樣(雙線性插值,F(xiàn)CNNet提供了三種版本:單層8倍、單層16倍和單層32倍上采樣),導(dǎo)致其分割結(jié)果不精細(xì),缺乏輪廓細(xì)節(jié)。并且每個(gè)像素點(diǎn)的分類(lèi)過(guò)程獨(dú)立于周?chē)袼攸c(diǎn),在進(jìn)行高倍上采樣后容易產(chǎn)生孔洞。這些設(shè)計(jì)在分割人體、車(chē)輛等具有明顯輪廓的目標(biāo)時(shí)影響不大,但藍(lán)藻沒(méi)有固定的輪廓,且輪廓不平滑,直接使用高倍雙線性插值必然導(dǎo)致分割結(jié)果不精細(xì),從而影響了準(zhǔn)確率。另外,藍(lán)藻中存在許多局部區(qū)域的濃度明顯低于周?chē)?,這容易使FCNNet將該區(qū)域錯(cuò)分為非藍(lán)藻,從而在高倍上采樣后產(chǎn)生大量孔洞。
圖4 CNN作語(yǔ)義分割Fig.4 CNN for semantic segmentation
圖5 FCNNet結(jié)構(gòu)Fig.5 FCNNet structure
Deeplab[5]的目的是提高 FCNNet的分割準(zhǔn)確率,其在FCNNet后加入了條件隨機(jī)場(chǎng)用于修正分割結(jié)果,提升了分割精度,并且獲得了更加細(xì)致的輪廓(CRF引入了空間位置關(guān)系,可以對(duì)分割邊緣進(jìn)行修正)。另外還設(shè)計(jì)了孔洞卷積使特征提取過(guò)程中不至于獲得尺寸太小的特征,不需要像FCNNet那樣作大尺寸的像素填充,同時(shí)有效地保證了感受野。Deeplab曾在2016年在PASCAL VOC Challenge中獲得了最高的圖像分割準(zhǔn)確率,是現(xiàn)有的最好分割算法之一,具體操作可參考文獻(xiàn)[12]。但CRF對(duì)像素點(diǎn)分類(lèi)時(shí)過(guò)度借助周?chē)袼攸c(diǎn)的分類(lèi)結(jié)果,導(dǎo)致其無(wú)法正確分割出小面積的目標(biāo),并且其容易出現(xiàn)大面積的分割錯(cuò)誤(任意像素點(diǎn)分類(lèi)錯(cuò)誤都會(huì)影響到周?chē)袼攸c(diǎn)的最終分類(lèi)結(jié)果,當(dāng)藍(lán)藻內(nèi)的孔洞過(guò)多時(shí),會(huì)導(dǎo)致Deeplab將整片區(qū)域都錯(cuò)分為非藍(lán)藻)。
生成式對(duì)抗網(wǎng)絡(luò)由 Goodfellow等[6]在2014年提出,解決了非監(jiān)督學(xué)習(xí)中的一個(gè)著名問(wèn)題:給定一批樣本,通過(guò)訓(xùn)練使得網(wǎng)絡(luò)能夠生成與這批樣本類(lèi)似的新樣本。
GAN的思想來(lái)源于博弈論,其提出了一種思想,即設(shè)計(jì)兩個(gè)不同的網(wǎng)絡(luò),其中一個(gè)網(wǎng)絡(luò)作為生成網(wǎng)絡(luò)(Generator,G),用于學(xué)習(xí)真實(shí)的數(shù)據(jù)分布,從而可以生成具有特定意義的目標(biāo)圖像;另一個(gè)網(wǎng)絡(luò)作為判別網(wǎng)絡(luò)(Discriminator,D)用于判定輸入的圖像是生成網(wǎng)絡(luò)生成的圖像(用Fake表示)還是實(shí)際采集的圖像(用Label表示)。這樣兩個(gè)網(wǎng)絡(luò)就產(chǎn)生了對(duì)抗式的訓(xùn)練。判別網(wǎng)絡(luò)是一個(gè)二分類(lèi)網(wǎng)絡(luò):如果輸入圖像是真實(shí)圖像(Label),其輸出為1;如果是生成網(wǎng)絡(luò)生成的目標(biāo)圖像(Fake),其輸出為0。在訓(xùn)練中,生成網(wǎng)絡(luò)不斷地調(diào)整參數(shù)使其生成的Fake盡可能地與真實(shí)分割結(jié)果相似,從而導(dǎo)致判別網(wǎng)絡(luò)無(wú)法正確地區(qū)分Fake和Label,而判別網(wǎng)絡(luò)的任務(wù)就很明確,盡可能地區(qū)分出Fake和Label。這樣,在經(jīng)過(guò)長(zhǎng)時(shí)間的訓(xùn)練后,GAN最終達(dá)到了納什均衡的狀態(tài),生成網(wǎng)絡(luò)生成的結(jié)果可以達(dá)到以假亂真的效果,我們就認(rèn)為網(wǎng)絡(luò)完成了訓(xùn)練。生成網(wǎng)絡(luò)生成的目標(biāo)圖像(比如分割結(jié)果、填色結(jié)果等)就可以作為正確的結(jié)果使用。
由于本文構(gòu)建的G和D均為深度神經(jīng)網(wǎng)絡(luò),故本文將構(gòu)建的對(duì)抗網(wǎng)絡(luò)結(jié)構(gòu)稱(chēng)為深度生成式對(duì)抗網(wǎng)絡(luò)。
DGAN由生成網(wǎng)絡(luò)(G)和判別網(wǎng)絡(luò)(D)構(gòu)成,G和D在對(duì)抗式訓(xùn)練中得到增強(qiáng)。數(shù)據(jù)集中每張藍(lán)藻圖像(Image)都有一張手工標(biāo)注的分割結(jié)果(Label),這兩張圖像組成的樣本對(duì)稱(chēng)為正樣本對(duì)。對(duì)應(yīng)每張Image輸入生成網(wǎng)絡(luò)(G)會(huì)生成一張分割結(jié)果(Fake),Image與Fake組成的樣本對(duì)稱(chēng)為負(fù)樣本對(duì)。正負(fù)樣本對(duì)輸入D完成判別,則DGAN的構(gòu)成可以描述為圖6的形式。
G訓(xùn)練的目的是捕捉樣本分布,使通過(guò)Image生成的Fake盡可能與Label相似,從而使D無(wú)法正確地區(qū)分正負(fù)樣本。D訓(xùn)練的目的即正確地區(qū)分出正負(fù)樣本。由此G和D便形成了對(duì)抗式的訓(xùn)練,可以構(gòu)建如式(3)的損失函數(shù):
D的訓(xùn)練過(guò)程是最大化準(zhǔn)確率,即最小化損失函數(shù)的過(guò)程,其對(duì)正樣本的輸出D(Image,Label)趨向1,對(duì)負(fù)樣本的輸出D(Image,F(xiàn)ake)趨向0,這樣D的整體損失就會(huì)趨向0,而G訓(xùn)練的目的是最小化D的準(zhǔn)確率,即使D(Image,F(xiàn)ake)趨向1。
圖6 藍(lán)藻分割的DGAN結(jié)構(gòu)Fig.6 DGAN structure for blue-green algae segmentation
為鼓勵(lì)G生成的分割結(jié)果盡可能地與真實(shí)分割結(jié)果相同,本文在損失函數(shù)中加入L1形式的正則項(xiàng):
則最終的損失函數(shù)如式(5):
G和D會(huì)進(jìn)行對(duì)抗式的訓(xùn)練,首先固定G訓(xùn)練D,然后固定D訓(xùn)練G,再繼續(xù)循環(huán)訓(xùn)練,G的D的能力都得到增強(qiáng),最終G生成的分割結(jié)果能夠以假亂真,此時(shí)訓(xùn)練就結(jié)束了,當(dāng)有新的圖像輸入時(shí),G生成的Fake就可以作為正確的藍(lán)藻分割結(jié)果使用。
生成網(wǎng)絡(luò)的目的是捕捉樣本分布的規(guī)律,生成具有特定意義的目標(biāo)圖像。在藍(lán)藻問(wèn)題中即輸入包含藍(lán)藻的圖像,生成藍(lán)藻區(qū)域和非藍(lán)藻區(qū)域具有明確劃分的圖像。本文仿照U-Net網(wǎng)絡(luò)[14]設(shè)計(jì)了一個(gè)全卷積神經(jīng)網(wǎng)絡(luò)用于生成分割結(jié)果,網(wǎng)絡(luò)的構(gòu)造如圖7所示。
網(wǎng)絡(luò)主要分為兩部分:
第一部分為Conv1~Conv6,作用是生成較小尺寸的特征圖像,每層卷積核的尺寸均為4×4,步長(zhǎng)為2,不同的是卷積核的個(gè)數(shù)逐漸增多,由64個(gè)逐漸增加到256個(gè)。為了防止梯度消失對(duì)訓(xùn)練結(jié)果造成的影響,本文選用了Relu作為激活函數(shù),同時(shí)在每個(gè)激活函數(shù)后面加入局部歸一化層來(lái)提高訓(xùn)練速度和避免局部最優(yōu)。為了防止最終獲得的特征像素尺寸太小,本文在每個(gè)卷積層前會(huì)對(duì)輸入圖像添加2個(gè)像素點(diǎn)的填充,這樣在經(jīng)過(guò)6個(gè)卷積層操作后,網(wǎng)絡(luò)獲得了256個(gè)大小為原圖1/64的特征。
第二部分為Deconv6~Deconv1,通過(guò)反卷積操作使前一階段獲得的特征逐漸恢復(fù)到原圖大小,作為生成分割結(jié)果。同樣在Deconv(反卷積)操作間加入Relu和BN,注意最后一層Deconv的神經(jīng)元個(gè)數(shù)等于類(lèi)別數(shù)(藍(lán)藻分割問(wèn)題為2,藍(lán)藻區(qū)域或非藍(lán)藻區(qū)域),取最大值即為像素點(diǎn)的分類(lèi)結(jié)果。
本文按照FCN的思想設(shè)計(jì)了生成網(wǎng)絡(luò),但在網(wǎng)絡(luò)的細(xì)節(jié)方面與FCNNet并不完全一致,而是借鑒了U-Net網(wǎng)絡(luò)[14]的部分思路。主要區(qū)別是將FCNNet的單層高倍上采樣設(shè)計(jì)為多層低倍上采樣(如FCNNet-32s中進(jìn)行了單層32倍上采樣,本文將其分解成5層2倍上采樣,即網(wǎng)絡(luò)的第二部分),并更改了上采樣的方式,用U-Net中可學(xué)習(xí)的反卷積層替代了FCNNet中簡(jiǎn)單的雙線性插值,這樣做是為了得到了更細(xì)致、更具輪廓細(xì)節(jié)的分割結(jié)果,并減少孔洞的出現(xiàn)。
Deeplab通過(guò)在FCNNet后銜接CRF的方式提高了分割準(zhǔn)確率,但也因此帶來(lái)了無(wú)法分割小目標(biāo)、容易大面積分割錯(cuò)誤和增加分割時(shí)間的問(wèn)題,不適合用于藍(lán)藻分割。本文舍棄了這種方式,借助GAN思想設(shè)計(jì)DGAN提高分割準(zhǔn)確率。
圖7 生成網(wǎng)絡(luò)的網(wǎng)絡(luò)結(jié)構(gòu)Fig.7 Network structure of generator
由于本文采用了4×4的卷積核,且卷積操作的滑動(dòng)步長(zhǎng)為2個(gè)像素點(diǎn),故本文首先將攝像機(jī)抓取的藍(lán)藻圖像(1920×1080和1280×720分辨率)處理為512×512的像素尺寸,再將其輸入生成網(wǎng)絡(luò)。同樣的,生成的分割結(jié)果的像素尺寸也是512×512,需用雙線性插值的方式將其還原為原圖尺寸。
相對(duì)生成網(wǎng)絡(luò),判別網(wǎng)絡(luò)較為簡(jiǎn)單,判別網(wǎng)絡(luò)的目的是區(qū)分正負(fù)樣本對(duì)。在藍(lán)藻問(wèn)題中即判斷輸入的樣本對(duì)屬于生成網(wǎng)絡(luò)的生成結(jié)果或真實(shí)分割結(jié)果,是一個(gè)二分類(lèi)問(wèn)題。網(wǎng)絡(luò)的構(gòu)造如圖8所示。
判別網(wǎng)絡(luò)的本質(zhì)是個(gè)分類(lèi)器,其與生成網(wǎng)絡(luò)的第一部分相似,通過(guò)不斷的卷積操作來(lái)獲得更小尺寸的特征,最后加一個(gè)Sigmod函數(shù)將輸出數(shù)據(jù)歸一化到0和1,然后根據(jù)閾值輸 出0或1作為判別結(jié)果。
圖8 判別網(wǎng)絡(luò)的網(wǎng)絡(luò)結(jié)構(gòu)Fig.8 Network structure of discriminator
3.1.1 數(shù)據(jù)集
為了提高分割結(jié)果的準(zhǔn)確率,借助視頻平臺(tái)抓取了3075張藍(lán)藻圖像制作了數(shù)據(jù)集。數(shù)據(jù)集分為3部分,包括訓(xùn)練集、驗(yàn)證集和測(cè)試集。訓(xùn)練集用于訓(xùn)練網(wǎng)絡(luò)模型,是最主要的組成部分,占數(shù)據(jù)集的80%,共2 460張;驗(yàn)證集用于訓(xùn)練階段測(cè)試網(wǎng)絡(luò)當(dāng)前的準(zhǔn)確率,以監(jiān)督網(wǎng)絡(luò)的訓(xùn)練過(guò)程并決定是否要終止訓(xùn)練,占10%,共307張。測(cè)試集用于對(duì)訓(xùn)練結(jié)果進(jìn)行評(píng)估,占10%,共308張。數(shù)據(jù)集中的每一張圖像都對(duì)應(yīng)有一張手工標(biāo)注的Label,圖像中的白色區(qū)域?qū)?yīng)藍(lán)藻部分,黑色區(qū)域?qū)?yīng)非藍(lán)藻部分。
圖9 藍(lán)藻圖像與手工標(biāo)注的分割結(jié)果Fig.9 Segmentation results of blue-green alga image and manual annotation
3.1.2 評(píng)價(jià)指標(biāo)
圖像語(yǔ)義分割即對(duì)圖像進(jìn)行像素級(jí)的分類(lèi)。本文選取的評(píng)價(jià)指標(biāo)借鑒自文件檢索,即以每個(gè)像素點(diǎn)為基本單位,計(jì)算像素點(diǎn)分類(lèi)結(jié)果的準(zhǔn)確率、召回率和F1分?jǐn)?shù)(F1),這也是大多數(shù)圖像分割算法引用的指標(biāo)。按前文表述,每張藍(lán)藻圖像對(duì)應(yīng)一張真值分割結(jié)果(Label),以及一張G生成的分割結(jié)果(Fake),若以數(shù)字1表示該像素點(diǎn)為藍(lán)藻,數(shù)字0表示為非藍(lán)藻,則任意像素點(diǎn)必屬于圖10中四種情況之一。
圖10 像素點(diǎn)所屬類(lèi)別示意圖Fig.10 Schematic diagram of category of pixels
精確率(Precision,P)如式(6)所示,表示分割結(jié)果中被正確分類(lèi)為藍(lán)藻的像素點(diǎn)數(shù)占所有被分類(lèi)為藍(lán)藻的像素點(diǎn)數(shù)的比例:
召回率(Recall,R)如式(7)所示,表示分割結(jié)果中被正確分類(lèi)為藍(lán)藻的像素點(diǎn)數(shù)占總藍(lán)藻像素點(diǎn)數(shù)的比例,即有多少藍(lán)藻像素點(diǎn)被找到并正確分類(lèi):
由于精確率和召回率是互相影響的,理想情況下肯定是希望兩者都高,但是一般情況下精確率高、召回率就低,精確率低、召回率就高。為更好地比較網(wǎng)絡(luò)性能,引入F1:
其中:F1是精確率和召回率的調(diào)和均值,兼顧了精確率和召回率的查全和查準(zhǔn)的作用,相當(dāng)于精確率和召回率的綜合評(píng)價(jià)指標(biāo)。
本文基于谷歌公司的TensorFlow深度學(xué)習(xí)框架實(shí)現(xiàn)了第2章構(gòu)造的DGAN。
L1(G)表明了生成樣本Fake與真實(shí)樣本Label的區(qū)別程度,L1(G)越低表示Fake與Label越相似。深度生成式對(duì)抗網(wǎng)絡(luò)的訓(xùn)練也就是最小化L1(G)的過(guò)程,訓(xùn)練過(guò)程遵循以下策略(注意G和D共同構(gòu)成DGAN,固定G(D)指BP訓(xùn)練時(shí)G(D)僅進(jìn)行前向傳播,不進(jìn)行后向傳播,也就是不會(huì)更新參數(shù)):
1)固定G,用Label訓(xùn)練D,訓(xùn)練n個(gè)epoch(訓(xùn)練樣本集的每個(gè)樣本訓(xùn)練一次);
2)用G生成Fake,用Fake訓(xùn)練D,訓(xùn)練n個(gè)epoch;
3)固定D,用D的輸出作為圖像的Label,用D的損失訓(xùn)練 G,訓(xùn)練n個(gè)epoch;
4)重復(fù)1)~3),直到G可以生成以假亂真的目標(biāo)圖像。
本文選取 Adam(Adaptive Moment Estimation)[15]的梯度下降方式來(lái)尋求最優(yōu)解,參照文中結(jié)論和神經(jīng)網(wǎng)絡(luò)的取值方法,初始學(xué)習(xí)率(Learning Rate,LR)取值0.0002,動(dòng)量項(xiàng)取值0.5。在初始賦值方面(即待訓(xùn)練的參數(shù)賦初始值),卷積層和反卷積層的賦值滿(mǎn)足均值為0、標(biāo)準(zhǔn)差為0.01的正態(tài)分布。
由攝像頭采集到的藍(lán)藻圖像的像素尺寸為1 920×1 080和1080×720,但DGAN中卷積層的卷積核的長(zhǎng)寬一致,且步長(zhǎng)為2,即要求輸入特征的像素尺寸可以被2整除,故藍(lán)藻圖像在輸入網(wǎng)絡(luò)前會(huì)被預(yù)處理為像素尺寸為512×512的圖像,再經(jīng)過(guò)減均值等操作獲得滿(mǎn)足網(wǎng)絡(luò)輸入要求的圖像樣本。受到圖形處理器(Graphics Processing Unit,GPU)顯存的限制,每次輸入一張藍(lán)藻圖像,即batch設(shè)為1,在經(jīng)過(guò)200個(gè)epoch的訓(xùn)練后,網(wǎng)絡(luò)的L1(G)如圖11所示。圖11中縱坐標(biāo)為L(zhǎng)1(G)的計(jì)算結(jié)果,值越低表示生成的Fake與Label越相似。
由式(4)可知,L1(G)描述了分割結(jié)果與真實(shí)結(jié)果的差距。由于藍(lán)藻分割是二分類(lèi)問(wèn)題(1表示藍(lán)藻,0表示非藍(lán)藻),則當(dāng)所有的像素點(diǎn)分類(lèi)錯(cuò)誤時(shí)L1(G)=1,因此L1(G)可以被理解為像素點(diǎn)的分類(lèi)錯(cuò)誤率。由圖11可知,L1(G)在經(jīng)過(guò)訓(xùn)練后逐漸穩(wěn)定并小于0.1,說(shuō)明整體錯(cuò)誤率已經(jīng)小于10%,生成的分割結(jié)果與真實(shí)分割結(jié)果已經(jīng)非常相似,故本文認(rèn)為此次的訓(xùn)練結(jié)果是有效的。
基于迭代的閾值分割算法是非常經(jīng)典的傳統(tǒng)圖像分割算法;FCNNet作為深度神經(jīng)網(wǎng)絡(luò)完成圖像語(yǔ)義分割的開(kāi)山之作,具有里程碑式的意義(現(xiàn)有的絕大多數(shù)神經(jīng)網(wǎng)絡(luò)分割算法都是基于FCN的結(jié)構(gòu),Deeplab是,本文設(shè)計(jì)的DGAN中的生成網(wǎng)絡(luò)G也是,所以作為對(duì)比算法);Deeplab在2016年獲得過(guò)PASCAL VOC Challenge在語(yǔ)義分割領(lǐng)域的最好成績(jī),是現(xiàn)有最好的語(yǔ)義分割算法之一(Deeplab可以被理解為FCNNet的加強(qiáng)版)。本文設(shè)計(jì)的DGAN可以被理解為結(jié)合了GAN思想的FCN,故本文選取這3種算法作為對(duì)比算法。
本文將上述3種對(duì)比算法應(yīng)用到藍(lán)藻分割領(lǐng)域,本文設(shè)計(jì)的DGAN與對(duì)比算法在測(cè)試集上的結(jié)果比較如表1所示。
圖11 訓(xùn)練過(guò)程中的L1(G)Fig.11 L1(G)in the course of training
表1 不同算法的評(píng)價(jià)指標(biāo)比較Tab.1 Evaluation index comparison of different algorithms
從表1中可以看出,在精確率、召回率和F1上,本文設(shè)計(jì)的DGAN均大幅領(lǐng)先于基于迭代的閾值分割算法。相比FCNNet和Deeplab,DGAN的精確率分別提升了6.3個(gè)百分點(diǎn)和3.89個(gè)百分點(diǎn),召回率分別提升了9.49個(gè)百分點(diǎn)和4.78個(gè)百分點(diǎn),F(xiàn)1分別提升了0.0793和0.0433。提升效果非常明顯,取得了更好的分割結(jié)果。
由于藍(lán)藻監(jiān)控需要實(shí)時(shí)性,即需要盡可能快地分割出藍(lán)藻,故分割速度也是一個(gè)重要指標(biāo)。本文實(shí)驗(yàn)所用機(jī)器配置為英特爾 i7CPU,64 GB內(nèi)存以及 Nvidia GTX TITAN X顯卡(12 GB顯存),基于TensorFlow平臺(tái)復(fù)現(xiàn)了以上算法,并使用GPU加速(cuda版本8.0),各算法分割速度的比較如表2所示(分割速度受計(jì)算機(jī)性能影響,若使用性能較低的顯卡或只使用CPU會(huì)使分割速度變慢,但各算法所需時(shí)間的比例不變)。
表2 不同算法分割速度比較Tab.2 Segmentation speed comparison of different algorithms
由表2可知,由于FCNNet的網(wǎng)絡(luò)結(jié)構(gòu)最簡(jiǎn)單(沒(méi)有反卷積層),故其處理速度最快,Deeplab在FCNNet的基礎(chǔ)上加入了CRF進(jìn)行二次判斷,導(dǎo)致其分割速度慢了很多。DGAN的分割速度略慢于FCNNet,遠(yuǎn)快于Deeplab,但本文的分割結(jié)果在各項(xiàng)指標(biāo)上均優(yōu)于FCNNet,提升了超過(guò)6個(gè)百分點(diǎn)。綜合來(lái)看,本文算法更具有實(shí)際優(yōu)勢(shì)。
本文設(shè)計(jì)的DGAN除了在精確率、召回率和F1等指標(biāo)上有所提升外,還避免了FCNNet和Deeplab由于自身網(wǎng)絡(luò)結(jié)構(gòu)造成的缺乏輪廓細(xì)節(jié)、存在大量孔洞和容易大面積錯(cuò)識(shí)、漏識(shí)的問(wèn)題。本文選取了部分測(cè)試集上的分割結(jié)果,從分割細(xì)節(jié)上與3.3節(jié)描述的三種對(duì)比算法進(jìn)行比較與分析。
比較圖12中不同算法的分割結(jié)果:基于迭代的閾值分割算法在3幅圖中均得到了最差的分割結(jié)果,其只是簡(jiǎn)單地根據(jù)圖像的顏色信息作分割,不適合藍(lán)藻這種顏色隨濃度和時(shí)間變化的目標(biāo)(濃度越大,顏色越深;生長(zhǎng)期的藍(lán)藻呈綠色,成熟后開(kāi)始偏黃;閾值分割算法為了適應(yīng)這些問(wèn)題,迭代得到的閾值范圍很大,導(dǎo)致其無(wú)法獲得準(zhǔn)確的分割結(jié)果)。
圖12 不同算法分割結(jié)果的比較Fig.12 Segmentation result comparison of different algorithms
相比閾值分割算法,基于深度神經(jīng)網(wǎng)絡(luò)的FCNNet和Deeplab明顯取得了更好的分割結(jié)果,但也存在各自的問(wèn)題:從圖12中的第一張圖中可以看出FCNNet的分割結(jié)果缺乏輪廓細(xì)節(jié),Deeplab存在局部區(qū)域的錯(cuò)分問(wèn)題;第二張圖中FCNNet的分割結(jié)果存在大量的孔洞,而Deeplab的孔洞明顯較少,取得了較好的分割結(jié)果;第三張圖中FCNNet的分割結(jié)果較好,但Deeplab出現(xiàn)了大面積的錯(cuò)分,并且在3張圖中Deeplab均未有效分割出時(shí)間戳和地址戳。
本文借助GAN思想設(shè)計(jì)的DGAN很好地解決了上述幾個(gè)問(wèn)題:在提升精確率、召回率和F1指標(biāo)的基礎(chǔ)上,有效地避免了FCNNet缺乏輪廓細(xì)節(jié),以及存在大量孔洞的問(wèn)題,同時(shí)避免了Deeplab由于借助周?chē)袼攸c(diǎn)而導(dǎo)致無(wú)法對(duì)小面積目標(biāo)正確分割的問(wèn)題。從圖12可以看出,DGAN的分割結(jié)果具有更清晰的輪廓細(xì)節(jié),同時(shí)很好地分割出了時(shí)間戳和地址戳這些影響因素,沒(méi)有出現(xiàn)大面積的分割錯(cuò)誤,得到了更準(zhǔn)確、更穩(wěn)定的分割結(jié)果,尤其適合于分割藍(lán)藻這樣的沒(méi)有固定輪廓并且濃度分布不均勻(導(dǎo)致內(nèi)部顏色差異比較大)的目標(biāo)。
本文基于生成式對(duì)抗網(wǎng)絡(luò)的思想設(shè)計(jì)了一個(gè)新的網(wǎng)絡(luò)結(jié)構(gòu)完成了基于RGB圖像的藍(lán)藻語(yǔ)義分割,稱(chēng)為深度生成式對(duì)抗網(wǎng)絡(luò)(DGAN)。相比閾值分割算法與FCNNet、Deeplab等其他基于深度神經(jīng)網(wǎng)絡(luò)的圖像分割算法,DGAN獲得了更加精準(zhǔn)的分割結(jié)果,在準(zhǔn)確率、召回率及F1等指標(biāo)上均有一定程度的提升,分割結(jié)果具有更清晰的輪廓感和細(xì)節(jié)表現(xiàn),更少孔洞,更不容易出現(xiàn)大面積分割錯(cuò)誤等優(yōu)點(diǎn)。
礙于藍(lán)藻災(zāi)情監(jiān)控問(wèn)題對(duì)分割速度的要求,也為了更加公平地與FCNNet(16層)和Deeplab(16層FCNNet+CRF)作比較,本文構(gòu)建的DGAN的深度也大致相同,其中生成網(wǎng)絡(luò)(G)12層,判別網(wǎng)絡(luò)(D)5層(一定范圍內(nèi),深度神經(jīng)網(wǎng)絡(luò)的準(zhǔn)確率與層數(shù)呈正相關(guān),分割速度與層數(shù)呈負(fù)相關(guān))。殘差網(wǎng)絡(luò)將網(wǎng)絡(luò)深度擴(kuò)展到152層,并取得了更高的準(zhǔn)確率,以殘差網(wǎng)絡(luò)為基礎(chǔ)的全卷積神經(jīng)網(wǎng)絡(luò)也取得了比FCNNet更高的分割準(zhǔn)確率。在后續(xù)的研究中,將使用更深的基礎(chǔ)網(wǎng)絡(luò)如GooLenet[10](22 層)和 ResNet[13](152 層)等構(gòu)建 DGAN,以探究網(wǎng)絡(luò)深度對(duì)DGAN的影響程度。