趙漢家,于蓮芝
(上海理工大學光電信息與計算機工程學院,上海 200093)
語義分割是四大基本計算機視覺任務(分類、定位、檢測、分割)之一,其目標是預測每個像素的語義標簽。過去幾年語義分割研究取得了很大進展,部分原因是收集了大量豐富的經過人工標注的高質量數據。然而,逐像素標注需要花費大量時間和高昂的成本,例如在Cityscapes 數據集中的一幅圖像,標記所有像素需要一個多小時[1]。截至目前,語義分割數據集只有數萬張經過人工標注的圖片,比其他計算機視覺領域的數據集小幾個數量級[2]。所以對于語義分割而言,缺少的不是數據,而是標注。
近年來,人們在有限的標注數據集上不斷創新網絡架構,包括采用注意力機制等,取得了一定成效[3]。本文從克服標注數據集不充足的角度出發,采用半監督學習方法提升模型精度。在充分利用人工標注數據的基礎上,挖掘未標記數據的潛能,使模型具有更好的可伸縮性以及更優秀的泛化能力。
本文使用的訓練框架如圖1 所示。首先,在人工標注的數據集上訓練模型,挑選精度最高的模型作為標注生成模型,通過標注生成模型為大量未標注數據生成偽標簽;其次,通過設置不同置信度閾值過濾偽標簽數據帶來的噪聲,并對所有偽標簽數據進行標簽平滑,生成軟標簽,減少偽標簽中錯誤的標注數據對網絡訓練的影響;最后,將人工標注數據與軟標簽數據以一定比例進行混合訓練,提高模型的魯棒性,增強模型對新數據的泛化能力。該訓練框架最大的優點是具有可推廣性,不管采用什么樣的網絡框架,都可使用本文的訓練框架繼續獲得一定的提升。

Fig.1 Structure of training framework圖1 訓練框架結構
理論上偽標簽數據會成倍地擴大訓練集規模,從而增加訓練的計算成本。分割模型訓練需要輸入高分辨率的圖像,對顯存要求很高。本文采用逐步增加訓練圖像分辨率的方法,使得在訓練過程中占用更少的顯存,從而提高每一批次的訓練樣本數量,降低計算成本、提高訓練效率,而不會影響最終的模型性能。
本文的貢獻總結如下:①提出一種可在正確處理噪聲的前提下,以較高質量生成像素級偽標簽的方法;②提出一種可通過逐步增加圖像分辨率來加快訓練速度,同時又不會損失訓練精度的方法;③本文進行了大量實驗,對以上兩種方法進行了廣泛評估,以證明其在場景分割數據集上的有效性。
這一章節主要介紹與本文背景相關的語義分割和半監督學習方法最新進展。
語義分割是一種逐像素分類的圖像分割算法,該方法會對圖像中的每個像素進行分類,圖2 為一個具體案例。

Fig.2 Input image and output image after semantic segmentation圖2 輸入圖像與經過語義分割后的輸出圖像
自從2014 年完全卷積網絡(Fully Convolutional Networks for Semantic Segmentation)實現了像素級語義分割算法端到端的訓練后[4],語義分割在網絡架構方面取得了重大進展,例如使用空洞卷積層(Dilated Convolutions)[5]擴大卷積核感受野的DeepLab 系列[6-8]以及嘗試不同規模的池化操作捕獲上下信息的PSPNet 網絡[9]等,可發現最近的主要工作都集中于設計更有效的網絡結構以及更好地理解上下文語義上。
本文的側重點不同于以上研究,通過探索充分利用未標注數據的方法提升模型泛化效果。本文方法不受限于網絡架構的發展,具有很強的可推廣性,無論網絡如何改進、結構如何優化,都可通過本文方法提升模型性能及泛化效果。
近年來,半監督學習方法在圖像分類領域得到了廣泛應用。通過使用大量未標記數據,在ImageNet 大賽上取得了很好的效果[10]。針對半監督語義分割的研究也有很多,如使用對抗學習[11]、自我訓練[12]等方法提升半監督學習的學習效果等。但這些方法沒有從根本上解決數據缺少精確標記的問題,很難在基準數據集上實現較好的分割效果。
本文方法不同于傳統的半監督學習方法,通過訓練一個標注模型生成標簽,目的是充分利用未標記數據獲得更好的模型性能。該方法更加通用、簡單,在不使用對抗學習方法或特殊設計的損失函數的前提下,可獲得較好性能。
上一章介紹了本文使用標簽生成方法的大概流程。針對生成的大量偽標簽,本文提出一種標簽平滑方法生成軟標簽,用來解決類別不均衡以及噪聲標簽導致的標注混淆問題。接下來,由于訓練集數量大幅增加,本文又提出加速訓練的方法。在擴大的數據集上能將模型訓練速度提高2 倍左右,并且模型性能不會明顯下降,泛化能力得到加強。
相較于全監督學習,半監督學習有諸多先天不足,比如其標注不會像人工標注那么精確。人們對如何將半監督學習應用于語義分割領域進行了大量研究,發現半監督學習依然很難擊敗全監督學習。但半監督學習的優點在于擁有大量數據,因此本文提出一種標簽生成方法,為大量沒有標簽的數據生成偽標簽,通過使用少量人工標注的數據和大量沒有經過人工標注的數據來提高語義分割模型的精確度和魯棒性,可極大地減少人們的標記工作。
2.1.1 標簽生成模型訓練
通過對數據集的觀察,可發現許多目標在整幅圖像中的占比只有百分之一甚至千分之一,圖像中正樣本與負樣本的比例約為1∶100,在部分圖像中該比例會擴大到1 000,因而會影響模型對小目標的收斂效果。此外,還存在簡單易學習的樣本和困難學習樣本。對于容易學習的樣本,模型可以很輕松地預測正確,只要將大量容易學習的樣本正確進行分類,Loss 即可減少很多,導致模型不怎么顧及困難學習樣本。
故考慮使用Focal Loss[13]解決這一問題:

其中,num_neg 代表負樣本數量,num_pos 代表正樣本數量。可以看出,如果正樣本數量過多,參數α整體會減小,反之參數α會增大。通過調節參數可為不同樣本賦予不同權重,從而消除類別不平衡問題。參數γ通常設置為2,假設預測一個正樣本的置信度為0.95,這是一個容易學習的樣本,Loss 直接減少為原來的(1-pi)γ倍,為1/400,從而使模型更專注于困難學習樣本。
此外,還加入一些專門為語義分割設計的一些訓練技巧,使標簽生成模型盡可能精確,具體細節將在實驗部分詳細說明。
2.1.2 偽標簽生成
使用標簽生成模型在大量未標記圖像上生成偽標簽,通過置信度篩選出可信標簽。如果直接采用單一高置信度卡閾值篩選標簽,會忽略低置信度的標簽,但對于數量少的類別(行人、自行車等)將很吃虧,其置信度往往只有0.7 左右,會被單一閾值直接全部過濾掉,而且該閾值很難確定。通過設置不同的置信度閾值過濾數據,只要一幅圖像大多數像素點都有確定的標簽,即可拿來訓練。
理論上來說,標簽生成模型效果越好,生成的偽標簽則會越精確。如圖3 所示,第一張是原圖,第二張是偽標簽可視化圖像,第三張是粗糙標注的可視化圖像,可看出生成的偽標簽質量已接近人工標注水平,而且比粗糙標注的標簽精細很多。

Fig.3 Pseudo label visualization圖3 偽標簽可視化
偽標簽的加入帶來一系列問題,其中最主要的問題有兩個:
(1)盡管偽標簽質量已經很高,但還是會產生少量噪聲樣本,從而導致標注混淆。因為語義分割是一個逐像素預測的問題,每一個預測錯誤的像素點都是一個噪聲樣本,最終會影響模型訓練效果。
(2)類別不均衡問題不容忽視。類別的偏差會隨著偽標簽的加入逐步放大。例如,在原始的Cityscapes 訓練集中,“道路”類別的像素數量是“摩托車”類別的300 倍,但偽標簽加入后會使該比例擴大到數千倍,通過Focal Loss 平衡不同樣本間的數量差異已不能滿足要求。如何處理類別不平衡問題對于該部分的語義分割訓練是至關重要的。
針對問題(1),除需要在制作偽標簽時選擇高置信度的標簽外,還采用平滑標簽的方法,控制偽標簽的平滑程度,緩解偽標簽中錯誤數據對網絡訓練的影響。

其中,K為樣本總類別數,β用于控制標簽平滑程度。通過式(5)可將硬標簽轉化為軟標簽。
針對問題(2),降低每個訓練批次中偽標簽所占比例,對于少量樣本類別,隨機選取該類別像素占比在0.5 以上的圖像進行數據擴充,以減少樣本不均衡的影響。
經過以上處理,可較好地解決偽標簽帶來的噪聲問題以及類別不均衡問題,用真實標注數據集和軟標簽數據集訓練最后的模型。
本文方法的優點在于訓練標簽生成模型使用的模型框架與最終訓練使用的模型框架不必完全相同,也即是說,通過生成模型生成的偽標簽數據可應用于不同訓練框架中,具有通用性。
當準備好數據集并處理完標簽噪聲后,即可正式開始訓練。由于圖像尺寸很大(例如768*768),語義分割訓練需要龐大的計算資源。受限于GPU 的顯存空間,只能使用很小的批次進行訓練(具體數量取決于網絡結構)。即使使用多GPU 并行訓練也需要幾天時間才能完成訓練任務。現將數據集擴充到2~5 倍左右,訓練所需時間會更長。
顯然,訓練速度變緩的主要原因是圖像分辨率過大,每一批次只能放入較少圖像。如果通過降低圖像分辨率來增加每一批次的訓練圖像數量,一定會影響最后的模型精度。因為語義分割是在密集的像素上進行預測,分辨率下降定會導致全局上下文信息的丟失,用減少訓練時間換取模型精度的下降是不值得的。因此,本文設計了一個可逐步增加圖像分辨率的訓練方法,在較小的分辨率圖像到較大的分辨率圖像之間進行迭代訓練,讓網絡從分辨率較低的圖像開始學習,逐步精細,最后達到全分辨率。通過調整訓練圖像的分辨率,可有效縮短訓練時間。
如圖4 所示,訓練由粗糙的圖像逐步過渡到精細的圖像,在保證精確度的前提下加速訓練。在訓練初期使用最小尺寸為256*256 的圖像,在后面的訓練中逐步增加圖像尺寸,每隔20 個訓練周期增加一次圖像分辨率(在這20 個周期內圖像分辨率不會變化),逐步增加到384、512、640、768,最后是800。

Fig.4 Relationship between image resolution and number of iterations圖4 圖像分辨率與迭代次數關系
最終的實驗結果表明,在分割精度保持不變的情況下,可將訓練速度加快2 倍。該加速訓練的方法也可推廣到其他訓練框架上,適合任何大規模數據集的語義分割訓練。
本文實驗使用Cityscapes 數據集,Cityscapes 擁有5 000張經過人工標注的城市環境中的駕駛場景圖像,其中訓練集圖像2 975 張,驗證集圖像500 張,測試集圖像1 525 張。數據集具有19 個類別密集像素標注的語義標簽及背景層。除5 000 張高質量像素級標注的圖像外,還包含20 000 張粗略標注的圖像。Cityscapes 數據集共有fine 和coarse 兩套評測標準,前者只使用5 000 張精細標注的圖像,后者在5 000 張精細標注的圖像基礎上增加20 000 張粗糙標注的圖像。本文將使用20 000 張圖像的粗略標注數據作對比實驗。
利 用DeepLabV3+[8]作為網絡架構,分別采用ResNet_V2_101[14]、ResNeXt_50[15]作為網絡主干,使用SGD優化器進行實驗。采用學習率逐漸衰減的學習策略,更新方式采用“poly”學習規則[3]:

其中,power=0.9,初始學習率為0.007,衰退率為0.999 7。批歸一化處理的批處理大小為16,加速訓練后在最小的圖像尺寸下可達到64。
本文也進行了數據增強,在訓練時進行水平翻轉、對比度拉伸、高斯模糊及色彩抖動等,同時采用Focal Loss 損失函數。
對于所有的實驗,統一采用MIoU(Mean Intersection over Union)的度量方式。傳統意義上的IoU 為:

在語義分割問題中,這兩個集合為真實值(ground truth)和預測值(predicted segmentation),在每個類上計算IoU 之后再取平均。計算公式如下:

根據奧卡姆剃刀法則,如果簡單和復雜方法能達到一樣的效果,則簡單方法更可靠。簡化測試實驗的目的是檢驗新加入的方法是否有效。
第一組實驗只使用2 975 張具有精確標注的圖像作為訓練集。該實驗的目的有兩個:一是建立模型效果的基準線,二是訓練標注模型。建立基準線是為了給后面的實驗提供參照物,相當于一個基礎模型,可以此為基準判斷模型的改進是否有效。訓練標注模型是為了之后為粗糙標注數據生成精細標注。基礎模型網絡框架采用Deep-LabV3+,并使用Focal Loss 損失函數。為增強實驗的可靠性,網絡主干分別采用ResNet101、ResNeXt50 作對比實驗,挑選精度高的主干訓練標注模型。為保證實驗不具有偶然性,所有實驗都以相同的參數配置運行3 次,然后對結果取平均值。第一組實驗結果如表1 所示,可看出用ResNeXt50 作為主干網絡的模型精確度更高,故后面實驗都選用ResNeXt50 作為主干網絡。

Table 1 Comparison of accuracy of different backbone networks表1 不同主干網絡精度對比
第二組實驗使用的訓練集在第一組采用的2 975 張精確標注的圖像基礎上,還包括20 000 張粗略標記的圖像。為更好地探索偽標簽的作用,本文設計了如下實驗步驟:忽略20 000 張粗糙標注圖像的標簽,將其視為沒有標簽的數據,通過模型生成偽標簽,并經過篩選及標簽平滑處理得到軟標簽。為更好地發掘偽標簽在模型訓練中的作用,本文采用逐漸提高偽標簽數據在訓練集中所占比例的方法。
先從軟標簽數據中取出3 000 張圖片,保證與真實標注數據的數量對等,即軟標簽數據與真實標簽數據之比為1∶1,然后放在一起進行訓練。為更好地驗證該方法的有效性,從粗糙標記的數據中也取出同等數量的圖像與真實標注數據放在一起訓練作對比實驗。最后實驗結果發現,相比于基礎模型,加入粗糙標注數據訓練后的模型精確度略有提升,而加入軟標簽數據訓練的模型精確度有較明顯的提升(0.7%左右),具體實驗結果如表2 所示。

Table 2 Comparison of experimental results between rough label data and soft label data表2 粗糙標注數據與軟標簽數據實驗結果對比
以上實驗結果可表明本文方法在語義分割訓練中是有效的。為更好地探索該方法的潛力,將軟標簽數據與真實標簽數據的比例逐步擴大到2∶1、3∶1、4∶1,對應的軟標簽數量分別為6 000、9 000、12 000。在每種情況下,依然與同等比例粗糙標注數據的訓練結果作對比,實驗結果如表3 所示。不同比例精度趨勢圖如圖5 所示。

Table 3 Comparison of training results of soft label data with different proportions表3 不同比例軟標簽數據訓練結果對比

Fig.5 Accuracy trend graph of different proportions圖5 不同比例精度趨勢圖
可看出隨著加入訓練的軟標簽數量的增加,模型的精確度逐步提升,在4∶1 時達到最高精度80.9%,相比基礎模型以及采用粗糙標注數據參與訓練的模型都有了較為明顯的提升。
當訓練數據達到15 000 左右時,該計算量十分巨大,故考慮進行加速訓練。由3.4 節可以看到,當軟標簽數據與真實標注數據之間的比例為4∶1 時可得到最佳分割結果,所以加速實驗采用該比例。按照2.3 節介紹的加速訓練方法,可在精確度損失很小的前提下,訓練速度達到加速前的1.9 倍左右。相比訓練速度的大幅提升,精確度下降0.3%是可以接受的。

Table 4 Comparison of accelerated training results表4 加速訓練結果對比
本文提出一個可在正確處理噪聲的前提下,以較高質量生成像素級偽標簽的方法,并進行了大量實驗對該方法進行廣泛評估,以表明其在語義分割上的有效性。提出一種可通過逐步增加圖像分辨率來加快訓練速度,同時又不會明顯降低模型精度的方法。
本文方法的優勢是具有可推廣性,具體表現在:可使用任何網絡框架訓練生成模型;生成的偽標簽數據可應用于任何網絡框架下;加速訓練方法可應用于任何大規模數據集的語義分割訓練中。