趙漢家,于蓮芝
(上海理工大學(xué)光電信息與計算機工程學(xué)院,上海 200093)
語義分割是四大基本計算機視覺任務(wù)(分類、定位、檢測、分割)之一,其目標是預(yù)測每個像素的語義標簽。過去幾年語義分割研究取得了很大進展,部分原因是收集了大量豐富的經(jīng)過人工標注的高質(zhì)量數(shù)據(jù)。然而,逐像素標注需要花費大量時間和高昂的成本,例如在Cityscapes 數(shù)據(jù)集中的一幅圖像,標記所有像素需要一個多小時[1]。截至目前,語義分割數(shù)據(jù)集只有數(shù)萬張經(jīng)過人工標注的圖片,比其他計算機視覺領(lǐng)域的數(shù)據(jù)集小幾個數(shù)量級[2]。所以對于語義分割而言,缺少的不是數(shù)據(jù),而是標注。
近年來,人們在有限的標注數(shù)據(jù)集上不斷創(chuàng)新網(wǎng)絡(luò)架構(gòu),包括采用注意力機制等,取得了一定成效[3]。本文從克服標注數(shù)據(jù)集不充足的角度出發(fā),采用半監(jiān)督學(xué)習(xí)方法提升模型精度。在充分利用人工標注數(shù)據(jù)的基礎(chǔ)上,挖掘未標記數(shù)據(jù)的潛能,使模型具有更好的可伸縮性以及更優(yōu)秀的泛化能力。
本文使用的訓(xùn)練框架如圖1 所示。首先,在人工標注的數(shù)據(jù)集上訓(xùn)練模型,挑選精度最高的模型作為標注生成模型,通過標注生成模型為大量未標注數(shù)據(jù)生成偽標簽;其次,通過設(shè)置不同置信度閾值過濾偽標簽數(shù)據(jù)帶來的噪聲,并對所有偽標簽數(shù)據(jù)進行標簽平滑,生成軟標簽,減少偽標簽中錯誤的標注數(shù)據(jù)對網(wǎng)絡(luò)訓(xùn)練的影響;最后,將人工標注數(shù)據(jù)與軟標簽數(shù)據(jù)以一定比例進行混合訓(xùn)練,提高模型的魯棒性,增強模型對新數(shù)據(jù)的泛化能力。該訓(xùn)練框架最大的優(yōu)點是具有可推廣性,不管采用什么樣的網(wǎng)絡(luò)框架,都可使用本文的訓(xùn)練框架繼續(xù)獲得一定的提升。
Fig.1 Structure of training framework圖1 訓(xùn)練框架結(jié)構(gòu)
理論上偽標簽數(shù)據(jù)會成倍地擴大訓(xùn)練集規(guī)模,從而增加訓(xùn)練的計算成本。分割模型訓(xùn)練需要輸入高分辨率的圖像,對顯存要求很高。本文采用逐步增加訓(xùn)練圖像分辨率的方法,使得在訓(xùn)練過程中占用更少的顯存,從而提高每一批次的訓(xùn)練樣本數(shù)量,降低計算成本、提高訓(xùn)練效率,而不會影響最終的模型性能。
本文的貢獻總結(jié)如下:①提出一種可在正確處理噪聲的前提下,以較高質(zhì)量生成像素級偽標簽的方法;②提出一種可通過逐步增加圖像分辨率來加快訓(xùn)練速度,同時又不會損失訓(xùn)練精度的方法;③本文進行了大量實驗,對以上兩種方法進行了廣泛評估,以證明其在場景分割數(shù)據(jù)集上的有效性。
這一章節(jié)主要介紹與本文背景相關(guān)的語義分割和半監(jiān)督學(xué)習(xí)方法最新進展。
語義分割是一種逐像素分類的圖像分割算法,該方法會對圖像中的每個像素進行分類,圖2 為一個具體案例。
Fig.2 Input image and output image after semantic segmentation圖2 輸入圖像與經(jīng)過語義分割后的輸出圖像
自從2014 年完全卷積網(wǎng)絡(luò)(Fully Convolutional Networks for Semantic Segmentation)實現(xiàn)了像素級語義分割算法端到端的訓(xùn)練后[4],語義分割在網(wǎng)絡(luò)架構(gòu)方面取得了重大進展,例如使用空洞卷積層(Dilated Convolutions)[5]擴大卷積核感受野的DeepLab 系列[6-8]以及嘗試不同規(guī)模的池化操作捕獲上下信息的PSPNet 網(wǎng)絡(luò)[9]等,可發(fā)現(xiàn)最近的主要工作都集中于設(shè)計更有效的網(wǎng)絡(luò)結(jié)構(gòu)以及更好地理解上下文語義上。
本文的側(cè)重點不同于以上研究,通過探索充分利用未標注數(shù)據(jù)的方法提升模型泛化效果。本文方法不受限于網(wǎng)絡(luò)架構(gòu)的發(fā)展,具有很強的可推廣性,無論網(wǎng)絡(luò)如何改進、結(jié)構(gòu)如何優(yōu)化,都可通過本文方法提升模型性能及泛化效果。
近年來,半監(jiān)督學(xué)習(xí)方法在圖像分類領(lǐng)域得到了廣泛應(yīng)用。通過使用大量未標記數(shù)據(jù),在ImageNet 大賽上取得了很好的效果[10]。針對半監(jiān)督語義分割的研究也有很多,如使用對抗學(xué)習(xí)[11]、自我訓(xùn)練[12]等方法提升半監(jiān)督學(xué)習(xí)的學(xué)習(xí)效果等。但這些方法沒有從根本上解決數(shù)據(jù)缺少精確標記的問題,很難在基準數(shù)據(jù)集上實現(xiàn)較好的分割效果。
本文方法不同于傳統(tǒng)的半監(jiān)督學(xué)習(xí)方法,通過訓(xùn)練一個標注模型生成標簽,目的是充分利用未標記數(shù)據(jù)獲得更好的模型性能。該方法更加通用、簡單,在不使用對抗學(xué)習(xí)方法或特殊設(shè)計的損失函數(shù)的前提下,可獲得較好性能。
上一章介紹了本文使用標簽生成方法的大概流程。針對生成的大量偽標簽,本文提出一種標簽平滑方法生成軟標簽,用來解決類別不均衡以及噪聲標簽導(dǎo)致的標注混淆問題。接下來,由于訓(xùn)練集數(shù)量大幅增加,本文又提出加速訓(xùn)練的方法。在擴大的數(shù)據(jù)集上能將模型訓(xùn)練速度提高2 倍左右,并且模型性能不會明顯下降,泛化能力得到加強。
相較于全監(jiān)督學(xué)習(xí),半監(jiān)督學(xué)習(xí)有諸多先天不足,比如其標注不會像人工標注那么精確。人們對如何將半監(jiān)督學(xué)習(xí)應(yīng)用于語義分割領(lǐng)域進行了大量研究,發(fā)現(xiàn)半監(jiān)督學(xué)習(xí)依然很難擊敗全監(jiān)督學(xué)習(xí)。但半監(jiān)督學(xué)習(xí)的優(yōu)點在于擁有大量數(shù)據(jù),因此本文提出一種標簽生成方法,為大量沒有標簽的數(shù)據(jù)生成偽標簽,通過使用少量人工標注的數(shù)據(jù)和大量沒有經(jīng)過人工標注的數(shù)據(jù)來提高語義分割模型的精確度和魯棒性,可極大地減少人們的標記工作。
2.1.1 標簽生成模型訓(xùn)練
通過對數(shù)據(jù)集的觀察,可發(fā)現(xiàn)許多目標在整幅圖像中的占比只有百分之一甚至千分之一,圖像中正樣本與負樣本的比例約為1∶100,在部分圖像中該比例會擴大到1 000,因而會影響模型對小目標的收斂效果。此外,還存在簡單易學(xué)習(xí)的樣本和困難學(xué)習(xí)樣本。對于容易學(xué)習(xí)的樣本,模型可以很輕松地預(yù)測正確,只要將大量容易學(xué)習(xí)的樣本正確進行分類,Loss 即可減少很多,導(dǎo)致模型不怎么顧及困難學(xué)習(xí)樣本。
故考慮使用Focal Loss[13]解決這一問題:
其中,num_neg 代表負樣本數(shù)量,num_pos 代表正樣本數(shù)量??梢钥闯?,如果正樣本數(shù)量過多,參數(shù)α整體會減小,反之參數(shù)α?xí)龃蟆Mㄟ^調(diào)節(jié)參數(shù)可為不同樣本賦予不同權(quán)重,從而消除類別不平衡問題。參數(shù)γ通常設(shè)置為2,假設(shè)預(yù)測一個正樣本的置信度為0.95,這是一個容易學(xué)習(xí)的樣本,Loss 直接減少為原來的(1-pi)γ倍,為1/400,從而使模型更專注于困難學(xué)習(xí)樣本。
此外,還加入一些專門為語義分割設(shè)計的一些訓(xùn)練技巧,使標簽生成模型盡可能精確,具體細節(jié)將在實驗部分詳細說明。
2.1.2 偽標簽生成
使用標簽生成模型在大量未標記圖像上生成偽標簽,通過置信度篩選出可信標簽。如果直接采用單一高置信度卡閾值篩選標簽,會忽略低置信度的標簽,但對于數(shù)量少的類別(行人、自行車等)將很吃虧,其置信度往往只有0.7 左右,會被單一閾值直接全部過濾掉,而且該閾值很難確定。通過設(shè)置不同的置信度閾值過濾數(shù)據(jù),只要一幅圖像大多數(shù)像素點都有確定的標簽,即可拿來訓(xùn)練。
理論上來說,標簽生成模型效果越好,生成的偽標簽則會越精確。如圖3 所示,第一張是原圖,第二張是偽標簽可視化圖像,第三張是粗糙標注的可視化圖像,可看出生成的偽標簽質(zhì)量已接近人工標注水平,而且比粗糙標注的標簽精細很多。
Fig.3 Pseudo label visualization圖3 偽標簽可視化
偽標簽的加入帶來一系列問題,其中最主要的問題有兩個:
(1)盡管偽標簽質(zhì)量已經(jīng)很高,但還是會產(chǎn)生少量噪聲樣本,從而導(dǎo)致標注混淆。因為語義分割是一個逐像素預(yù)測的問題,每一個預(yù)測錯誤的像素點都是一個噪聲樣本,最終會影響模型訓(xùn)練效果。
(2)類別不均衡問題不容忽視。類別的偏差會隨著偽標簽的加入逐步放大。例如,在原始的Cityscapes 訓(xùn)練集中,“道路”類別的像素數(shù)量是“摩托車”類別的300 倍,但偽標簽加入后會使該比例擴大到數(shù)千倍,通過Focal Loss 平衡不同樣本間的數(shù)量差異已不能滿足要求。如何處理類別不平衡問題對于該部分的語義分割訓(xùn)練是至關(guān)重要的。
針對問題(1),除需要在制作偽標簽時選擇高置信度的標簽外,還采用平滑標簽的方法,控制偽標簽的平滑程度,緩解偽標簽中錯誤數(shù)據(jù)對網(wǎng)絡(luò)訓(xùn)練的影響。
其中,K為樣本總類別數(shù),β用于控制標簽平滑程度。通過式(5)可將硬標簽轉(zhuǎn)化為軟標簽。
針對問題(2),降低每個訓(xùn)練批次中偽標簽所占比例,對于少量樣本類別,隨機選取該類別像素占比在0.5 以上的圖像進行數(shù)據(jù)擴充,以減少樣本不均衡的影響。
經(jīng)過以上處理,可較好地解決偽標簽帶來的噪聲問題以及類別不均衡問題,用真實標注數(shù)據(jù)集和軟標簽數(shù)據(jù)集訓(xùn)練最后的模型。
本文方法的優(yōu)點在于訓(xùn)練標簽生成模型使用的模型框架與最終訓(xùn)練使用的模型框架不必完全相同,也即是說,通過生成模型生成的偽標簽數(shù)據(jù)可應(yīng)用于不同訓(xùn)練框架中,具有通用性。
當(dāng)準備好數(shù)據(jù)集并處理完標簽噪聲后,即可正式開始訓(xùn)練。由于圖像尺寸很大(例如768*768),語義分割訓(xùn)練需要龐大的計算資源。受限于GPU 的顯存空間,只能使用很小的批次進行訓(xùn)練(具體數(shù)量取決于網(wǎng)絡(luò)結(jié)構(gòu))。即使使用多GPU 并行訓(xùn)練也需要幾天時間才能完成訓(xùn)練任務(wù)?,F(xiàn)將數(shù)據(jù)集擴充到2~5 倍左右,訓(xùn)練所需時間會更長。
顯然,訓(xùn)練速度變緩的主要原因是圖像分辨率過大,每一批次只能放入較少圖像。如果通過降低圖像分辨率來增加每一批次的訓(xùn)練圖像數(shù)量,一定會影響最后的模型精度。因為語義分割是在密集的像素上進行預(yù)測,分辨率下降定會導(dǎo)致全局上下文信息的丟失,用減少訓(xùn)練時間換取模型精度的下降是不值得的。因此,本文設(shè)計了一個可逐步增加圖像分辨率的訓(xùn)練方法,在較小的分辨率圖像到較大的分辨率圖像之間進行迭代訓(xùn)練,讓網(wǎng)絡(luò)從分辨率較低的圖像開始學(xué)習(xí),逐步精細,最后達到全分辨率。通過調(diào)整訓(xùn)練圖像的分辨率,可有效縮短訓(xùn)練時間。
如圖4 所示,訓(xùn)練由粗糙的圖像逐步過渡到精細的圖像,在保證精確度的前提下加速訓(xùn)練。在訓(xùn)練初期使用最小尺寸為256*256 的圖像,在后面的訓(xùn)練中逐步增加圖像尺寸,每隔20 個訓(xùn)練周期增加一次圖像分辨率(在這20 個周期內(nèi)圖像分辨率不會變化),逐步增加到384、512、640、768,最后是800。
Fig.4 Relationship between image resolution and number of iterations圖4 圖像分辨率與迭代次數(shù)關(guān)系
最終的實驗結(jié)果表明,在分割精度保持不變的情況下,可將訓(xùn)練速度加快2 倍。該加速訓(xùn)練的方法也可推廣到其他訓(xùn)練框架上,適合任何大規(guī)模數(shù)據(jù)集的語義分割訓(xùn)練。
本文實驗使用Cityscapes 數(shù)據(jù)集,Cityscapes 擁有5 000張經(jīng)過人工標注的城市環(huán)境中的駕駛場景圖像,其中訓(xùn)練集圖像2 975 張,驗證集圖像500 張,測試集圖像1 525 張。數(shù)據(jù)集具有19 個類別密集像素標注的語義標簽及背景層。除5 000 張高質(zhì)量像素級標注的圖像外,還包含20 000 張粗略標注的圖像。Cityscapes 數(shù)據(jù)集共有fine 和coarse 兩套評測標準,前者只使用5 000 張精細標注的圖像,后者在5 000 張精細標注的圖像基礎(chǔ)上增加20 000 張粗糙標注的圖像。本文將使用20 000 張圖像的粗略標注數(shù)據(jù)作對比實驗。
利 用DeepLabV3+[8]作為網(wǎng)絡(luò)架構(gòu),分別采用ResNet_V2_101[14]、ResNeXt_50[15]作為網(wǎng)絡(luò)主干,使用SGD優(yōu)化器進行實驗。采用學(xué)習(xí)率逐漸衰減的學(xué)習(xí)策略,更新方式采用“poly”學(xué)習(xí)規(guī)則[3]:
其中,power=0.9,初始學(xué)習(xí)率為0.007,衰退率為0.999 7。批歸一化處理的批處理大小為16,加速訓(xùn)練后在最小的圖像尺寸下可達到64。
本文也進行了數(shù)據(jù)增強,在訓(xùn)練時進行水平翻轉(zhuǎn)、對比度拉伸、高斯模糊及色彩抖動等,同時采用Focal Loss 損失函數(shù)。
對于所有的實驗,統(tǒng)一采用MIoU(Mean Intersection over Union)的度量方式。傳統(tǒng)意義上的IoU 為:
在語義分割問題中,這兩個集合為真實值(ground truth)和預(yù)測值(predicted segmentation),在每個類上計算IoU 之后再取平均。計算公式如下:
根據(jù)奧卡姆剃刀法則,如果簡單和復(fù)雜方法能達到一樣的效果,則簡單方法更可靠。簡化測試實驗的目的是檢驗新加入的方法是否有效。
第一組實驗只使用2 975 張具有精確標注的圖像作為訓(xùn)練集。該實驗的目的有兩個:一是建立模型效果的基準線,二是訓(xùn)練標注模型。建立基準線是為了給后面的實驗提供參照物,相當(dāng)于一個基礎(chǔ)模型,可以此為基準判斷模型的改進是否有效。訓(xùn)練標注模型是為了之后為粗糙標注數(shù)據(jù)生成精細標注。基礎(chǔ)模型網(wǎng)絡(luò)框架采用Deep-LabV3+,并使用Focal Loss 損失函數(shù)。為增強實驗的可靠性,網(wǎng)絡(luò)主干分別采用ResNet101、ResNeXt50 作對比實驗,挑選精度高的主干訓(xùn)練標注模型。為保證實驗不具有偶然性,所有實驗都以相同的參數(shù)配置運行3 次,然后對結(jié)果取平均值。第一組實驗結(jié)果如表1 所示,可看出用ResNeXt50 作為主干網(wǎng)絡(luò)的模型精確度更高,故后面實驗都選用ResNeXt50 作為主干網(wǎng)絡(luò)。
Table 1 Comparison of accuracy of different backbone networks表1 不同主干網(wǎng)絡(luò)精度對比
第二組實驗使用的訓(xùn)練集在第一組采用的2 975 張精確標注的圖像基礎(chǔ)上,還包括20 000 張粗略標記的圖像。為更好地探索偽標簽的作用,本文設(shè)計了如下實驗步驟:忽略20 000 張粗糙標注圖像的標簽,將其視為沒有標簽的數(shù)據(jù),通過模型生成偽標簽,并經(jīng)過篩選及標簽平滑處理得到軟標簽。為更好地發(fā)掘偽標簽在模型訓(xùn)練中的作用,本文采用逐漸提高偽標簽數(shù)據(jù)在訓(xùn)練集中所占比例的方法。
先從軟標簽數(shù)據(jù)中取出3 000 張圖片,保證與真實標注數(shù)據(jù)的數(shù)量對等,即軟標簽數(shù)據(jù)與真實標簽數(shù)據(jù)之比為1∶1,然后放在一起進行訓(xùn)練。為更好地驗證該方法的有效性,從粗糙標記的數(shù)據(jù)中也取出同等數(shù)量的圖像與真實標注數(shù)據(jù)放在一起訓(xùn)練作對比實驗。最后實驗結(jié)果發(fā)現(xiàn),相比于基礎(chǔ)模型,加入粗糙標注數(shù)據(jù)訓(xùn)練后的模型精確度略有提升,而加入軟標簽數(shù)據(jù)訓(xùn)練的模型精確度有較明顯的提升(0.7%左右),具體實驗結(jié)果如表2 所示。
Table 2 Comparison of experimental results between rough label data and soft label data表2 粗糙標注數(shù)據(jù)與軟標簽數(shù)據(jù)實驗結(jié)果對比
以上實驗結(jié)果可表明本文方法在語義分割訓(xùn)練中是有效的。為更好地探索該方法的潛力,將軟標簽數(shù)據(jù)與真實標簽數(shù)據(jù)的比例逐步擴大到2∶1、3∶1、4∶1,對應(yīng)的軟標簽數(shù)量分別為6 000、9 000、12 000。在每種情況下,依然與同等比例粗糙標注數(shù)據(jù)的訓(xùn)練結(jié)果作對比,實驗結(jié)果如表3 所示。不同比例精度趨勢圖如圖5 所示。
Table 3 Comparison of training results of soft label data with different proportions表3 不同比例軟標簽數(shù)據(jù)訓(xùn)練結(jié)果對比
Fig.5 Accuracy trend graph of different proportions圖5 不同比例精度趨勢圖
可看出隨著加入訓(xùn)練的軟標簽數(shù)量的增加,模型的精確度逐步提升,在4∶1 時達到最高精度80.9%,相比基礎(chǔ)模型以及采用粗糙標注數(shù)據(jù)參與訓(xùn)練的模型都有了較為明顯的提升。
當(dāng)訓(xùn)練數(shù)據(jù)達到15 000 左右時,該計算量十分巨大,故考慮進行加速訓(xùn)練。由3.4 節(jié)可以看到,當(dāng)軟標簽數(shù)據(jù)與真實標注數(shù)據(jù)之間的比例為4∶1 時可得到最佳分割結(jié)果,所以加速實驗采用該比例。按照2.3 節(jié)介紹的加速訓(xùn)練方法,可在精確度損失很小的前提下,訓(xùn)練速度達到加速前的1.9 倍左右。相比訓(xùn)練速度的大幅提升,精確度下降0.3%是可以接受的。
Table 4 Comparison of accelerated training results表4 加速訓(xùn)練結(jié)果對比
本文提出一個可在正確處理噪聲的前提下,以較高質(zhì)量生成像素級偽標簽的方法,并進行了大量實驗對該方法進行廣泛評估,以表明其在語義分割上的有效性。提出一種可通過逐步增加圖像分辨率來加快訓(xùn)練速度,同時又不會明顯降低模型精度的方法。
本文方法的優(yōu)勢是具有可推廣性,具體表現(xiàn)在:可使用任何網(wǎng)絡(luò)框架訓(xùn)練生成模型;生成的偽標簽數(shù)據(jù)可應(yīng)用于任何網(wǎng)絡(luò)框架下;加速訓(xùn)練方法可應(yīng)用于任何大規(guī)模數(shù)據(jù)集的語義分割訓(xùn)練中。