林鎮(zhèn)源,蔣小蓮,張文輝
桂林電子科技大學(xué),廣西,桂林,541000
語義分割是計算機視覺領(lǐng)域的重要熱門之一,語義分割可以廣泛應(yīng)用于自動駕駛[1]、醫(yī)療圖像診斷[2]、遙感圖像分析[3]等領(lǐng)域。語義分割是主要是根據(jù)圖像的內(nèi)在性規(guī)則,如像素點之間的明暗關(guān)系、像素灰度級等將圖像劃分為多個子圖像區(qū)塊的過程,以使得每個塊都有自己的類別,與其他區(qū)塊形成顯著對比。
語義分割中非常重要的一環(huán)就是人像分割,人像分割在行人檢測、智能搜救、醫(yī)學(xué)影像、智能駕駛等多個領(lǐng)域都有極其重要的作用,其分割方法分為傳統(tǒng)的人像分割方法[4]和基于深度學(xué)習(xí)的人像分割方法[5]。傳統(tǒng)的人像分割方法主要利用了視覺層的圖像低級語義信息,如圖像的顏色、形狀、紋理等信息作為分割依據(jù),但由于傳統(tǒng)的典型方法中,基于閾值的分割方法是按照圖像灰度值與閾值關(guān)系進行分割,對像素點進行分類,但如果人像與背景的灰度值差距不大,就會導(dǎo)致人像與背景無法區(qū)分;基于邊緣的分割方法是對不同的微分算子進行邊緣檢測,如Canny算子、Prewitt算子等,但噪聲對算子影響較大,所以基于邊緣的分割方法能應(yīng)用于低噪聲且構(gòu)圖簡單的圖像。
由于傳統(tǒng)的人像分割方法存在多種不足,因此研究人員提出了基于深度學(xué)習(xí)的人像語義分割技術(shù)。該人像分割技術(shù)主要利用了深度學(xué)習(xí)的相關(guān)理論,通過卷積神經(jīng)網(wǎng)絡(luò)從大量已標(biāo)注的人像數(shù)據(jù)中提取出圖像特征并且挖掘出每個像素的語義信息進行分類。Shen等人[6]設(shè)計了一種基于全卷積神經(jīng)網(wǎng)絡(luò)的人像分割算法,能夠有效地分離人物與背景,并且可以較好地處理人物頭發(fā)邊緣,取得了良好的分割效果。
本文基于深度學(xué)習(xí)的人像分割方法,使用百度開源的PaddleSeg框架進行人像分割,選擇開源數(shù)據(jù)集Supervisely,并選擇FCN的網(wǎng)絡(luò)進行模型訓(xùn)練,在經(jīng)過多次迭代后,最終達到較好的人像分割效果。
在選擇的Supervisely數(shù)據(jù)集中,包含了5711張人像,為了將數(shù)據(jù)集處理成PaddleSeg能直接運行的數(shù)據(jù),需要將人像的mask的灰度值進行預(yù)處理,雖然整個mask在肉眼看來均為全黑色,但轉(zhuǎn)為灰度圖卻有略微的差別,而為了能運用PaddleSeg框架,需要轉(zhuǎn)為其能夠直接識別的輸入圖像,灰度值為0為背景,灰度值為1是人像。因此,對于Supervisely的數(shù)據(jù)集,采用將灰度值小于等于10的轉(zhuǎn)為0,灰度值大于10的轉(zhuǎn)為255的策略,這樣經(jīng)過處理后,圖像就變?yōu)楹诎讏D,此時PaddleSeg并不能直接使用,而需要將灰度值為255的轉(zhuǎn)為灰度值為1,才能得到最終可以直接使用的數(shù)據(jù)集(圖1~4)。

圖1 人像原圖

圖2 人像mask灰度圖

圖3 PaddleSeg使用的mask

圖4 通過numpy顯示出來的全黑圖
FCN網(wǎng)絡(luò)[6]是基于傳統(tǒng)的卷積神經(jīng)網(wǎng)絡(luò)(CNN)的改進,將傳統(tǒng)的CNN網(wǎng)絡(luò)最后的全連接層轉(zhuǎn)化為一個個的卷積層。
在傳統(tǒng)的CNN結(jié)構(gòu)中,前5層是卷積層,第6層和第7層分別是一個長度為4096的一維向量,第8層是長度為1000的一維向量,對應(yīng)1000個類別的概率,F(xiàn)CN將這3層表示為卷積層,卷積核的大小(通道數(shù)、寬、高)分別為(4096,1,1)、(4096,1,1)、(1000,1,1)。所有的層都是卷積層,故稱為全卷積網(wǎng)絡(luò)。
傳統(tǒng)CNN分割的方法:為了能夠?qū)σ粋€像素分類,使用該像素周圍的一個圖像塊作為CNN的輸入用于訓(xùn)練和預(yù)測。這種方法有幾個缺點:(1)存儲開銷很大,例如對每個像素使用的圖像塊的大小為15×15,則所需的存儲空間為原來圖像的225倍;(2)計算效率低下,相鄰的像素塊基本上是重復(fù)的,針對每個像素塊逐個計算卷積,這種計算有很大程度上的重復(fù);(3)像素塊的大小限制了感知區(qū)域的大小,通常像素塊的大小比整幅圖像的小很多,只能提取一些局部的特征,從而導(dǎo)致分類的性能受到限制。而FCN經(jīng)過多次卷積后,得到的圖像分辨率按照2的指數(shù)層次降低,再經(jīng)過指數(shù)層次上采樣,就能恢復(fù)到原圖大小。這樣就不需要消耗非常多的內(nèi)存,且計算效率大大提高(圖5)。

圖5 CNN網(wǎng)絡(luò)改進為FCN網(wǎng)絡(luò)
訓(xùn)練參數(shù)表如表1所示,選擇FCN網(wǎng)絡(luò)作為模型的訓(xùn)練網(wǎng)絡(luò),將Supervisely開源的5711張人像圖片按照9:1的方式劃分為訓(xùn)練集和驗證集,將初始的學(xué)習(xí)率設(shè)置為0.05,并采用逐次減半的方式設(shè)置學(xué)習(xí)率,即當(dāng)loss值并沒有在設(shè)置的1000次迭代中并沒有下降時,將學(xué)習(xí)率降低一半,用于保證盡可能遍歷所有的最優(yōu)loss,而不會陷入局部最優(yōu)。

表1 訓(xùn)練參數(shù)表
在本模型中,選擇的評價指標(biāo)有損失函數(shù)(交叉熵Loss)、均交并比(Miou)、精確度(Acc)、模型一致性(Kappa)和圖像分割系數(shù)(Dice)。
交叉熵Loss定義為:

其中,M表示分類的類別數(shù),yc是一個onehot向量,元素只有0和1兩種取值,如果波類別和祥本的類別相同就取1,否則取0。Pc表示為預(yù)測樣本屬于c的概率。
均交并比(MIoU)[7]定義為:在語義分割的問題上,一個集合為真實值,另一個集合為預(yù)測值,求解每個類的IoU,再取平均,即

其中,k為類別數(shù),i表示真實值,j表示預(yù)測值,pij表示i將預(yù)測為j,pji表示將j預(yù)測為i[8]。理想情況下,MIoU為1,即預(yù)測和真實值完全一致。
精確度(Acc)定義為:模型的正確分類像素占總樣本數(shù)像素的比例。

其中pii為正確的分類像素,分母為所有分類的像素和。
模型一致性(Kappa)對于分類問題,一致性就是模型預(yù)測結(jié)果和實際分類結(jié)果是否一致。Kappa是基于混淆矩陣的應(yīng)用。
基于混淆矩陣的kappa系數(shù)計算公式如下:

圖像分割系數(shù)(Dice)是應(yīng)用于像素級別的指標(biāo),取值范圍為[0,1],當(dāng)Dice越接近1時,模型效果越好。

其中,X為預(yù)測像素集合,Y為真實值像素集合。
如表2和圖6所示,在設(shè)置的20000次迭代中,模型的驗證結(jié)果為在19200次迭代時產(chǎn)生最優(yōu)的MIoU值,因此選擇19200次迭代結(jié)果作為最優(yōu)模型。

表2 訓(xùn)練過程各個驗證指標(biāo)值記錄表

圖6 MIoU值變化曲線
訓(xùn)練完成后將原始圖像數(shù)據(jù)輸入神經(jīng)網(wǎng)絡(luò)直接映射輸出像素級圖像分割結(jié)果,不同類別圖像信息按像素值相互區(qū)分。網(wǎng)絡(luò)分割輸入、輸出mask圖像和最終結(jié)果如圖7、圖8和圖9所示。

圖7 輸入圖像

圖8 輸出mask

圖9 最終結(jié)果
本文為深度學(xué)習(xí)中的人像分割提供了改進方法,提高了分割的精度和效率。這種人像語義分割的方法,其具體步驟簡單來說是先對數(shù)據(jù)集Supervisely進行訓(xùn)練,然后送入語義分割網(wǎng)絡(luò)進行人像語義分割,最后將分割得到的mask圖像貼合到原圖像中,從而將人像與背景分割出來。