雷潔,饒文碧,2,楊焱超,熊盛武,2
(1.武漢理工大學 計算機與人工智能學院,武漢 430070;2.武漢理工大學 三亞科教創新園,海南 三亞 572000)
隨著深度卷積神經網絡的迅猛發展,高性能并行計算的成熟以及大數據的積累,基于深度學習的目標檢測技術[1-3]開始涌現并取得了突破性進展。但目前主流的基于監督學習的目標檢測方法[1-2,4]的檢測性能依賴于標注數據的規模,標注數據的規模越大,標注數據的類別越全面,經過學習的目標檢測模型的性能就越高。在多數應用場景中,收集高精度的標注數據是十分耗費財力物力的工作,而獲取大量未標注數據卻較為容易。如果僅利用少量的標注數據對模型進行訓練,不僅會造成嚴重的過擬合問題,同時也浪費了大量的未標注數據。因此,通過少量的標注數據指導,利用大量未標注數據改善檢測性能的半監督學習方法逐漸得到研究人員的關注。
大多數的半監督學習方法應用于圖像分類領域[5-7]和語義檢測領域[8-9],少數應用于目標檢測領域[10-12]。根據模型結構以及損失函數的不同,半監督學習方法可以分為生成式方法、一致性正則化方法、基于圖的方法、偽標簽方法[13-15]以及綜合方法[16-17]。綜合方法是5類半監督學習方法中表現最為優秀的方法,其結合了偽標簽、熵最小化、一致性正則化等方法并調整這些方法達到最好的表現[18]。部分研究人員將半監督學習方法與目標檢測相結合來挖掘未標注數據中的信息,提高了目標檢測模型的性能。
SOHN 等[10]于2020 年提出了STAC 方法,該方法將利用標注數據訓練過的Teacher 模型用于預測未標注數據的檢測結果,并將得到預測結果的未標注數據作為偽標簽數據和標注數據用于Student 模型訓練。該方法基于半監督學習的綜合方法FixMatch[16],將偽標簽和一致性正則化等半監督學習方法應用到目標檢測領域。但STAC 方法存在著Teacher 模型無法在線更新的問題,導致最終的目標檢測模型的性能受到局限。ZHOU 等[11]于2021 年提出了Instant-Teaching 方法,該方法在STAC 方法的基礎上實現了Teacher 模型在線更新,同時增加了數據增強處理操作和多Teacher 模型糾正機制提高偽標簽的準確率,緩解了偽標簽中錯誤標注給模型帶來的負面影響。XU 等[19]于2021 年提出的SoftTeacher方法在Instant-Teaching 方法的基礎上不僅簡化了訓練過程,同時對定位數據的不確定性進行評估,篩除不確定性值高的定位數據,進一步削弱了錯誤定位信息對模型的偏移。研究人員提出多種方法提高偽標簽的準確率,減少錯誤標注數據用于訓練,但目前基于偽標簽的目標檢測方法的檢測性能仍然不太理想。
文獻[19]認為置信度無法評估偽標簽中定位數據是否準確,因此提出定位不確定性計算方法計算偽標簽中定位數據的不確定性,作為篩選定位標簽的主要依據。但置信度作為篩選類別標簽的依據同樣并不充分,因此考慮計算分類信息的不確定性作為篩選類別標簽的第二依據。
深度學習中的不確定性可以分為模型不確定性和數據不確定性。模型不確定性是指模型對于自己沒有學習過的數據的預測是含有很大不確定性的,可以通過增加訓練數據來緩解,目前評估模型不確定性的方法主要有基于貝葉斯的方法[20-21]和基于蒙特卡洛的方法[22-23],基于蒙特卡洛的方法由于計算量較小且不用大范圍改動模型結構,因此比較受歡迎。數據不確定性是指數據中本來就存在的一種偏差或噪聲,一般困難正樣本比簡單正樣本的不確定性高,目前評估數據不確定性的方法較少,主要有基于Laplace 的方法[24]。ABDAR 等[25]通過統計9 篇論文,提出了MC-Dropout 方法,對于他們的工作極為有效。RIZVE 等[5]于2021 年提出了UPS 方法,該方法結合偽標簽學習以及圖像分類不確定性估計,提出一個偽標簽選擇框架,在CIFAR-10 和CIFAR-100數據集上表現優秀。
針對偽標簽數據中錯誤標簽難以篩除以及置信度低的正確標簽較難選擇的問題,本文提出一種分類不確定性計算(Classification Uncertainty Calculation,CUC)算法來計算偽標簽中類別預測結果的不確定性,同時對偽標簽圖像的分類損失函數進行修改,以更好地反饋目標檢測模型的擬合情況,在此基礎上對SoftTeacher 方法中的Teacher模型在線更新公式指數滑動平均(Exponential Moving Average,EMA)進行修改,通過模型更新策略——不同權重的指數移動均值(Exponential Moving Average Different,EMAD)增強Teacher 模型和Student 模型的獨立性,以進行Teacher-Student 雙模型的協同訓練。
SoftTeacher算法在偽標簽目標檢測領域表現較優,不僅簡化了訓練步驟,同時提出定位不確定性計算方法,提高了偽標簽目標檢測的檢測性能。同時,將CUC方法、修改后的損失函數以及模型更新策略EMAD 應用于SoftTeacher 算法驗證提出方法的有效性。
SoftTeacher-CUC(SoftTeacher with Classification Uncertainty Calculation)算法模型結構如圖1 所示。

圖1 SoftTeacher-CUC 算法模型結構Fig.1 Structure of SoftTeacher-CUC algorithm model
該模型主要由偽標簽生成分支和Student 模型訓練分支兩個分支構成。在偽標簽生成分支上,未標注數據經過Weak Aug 數據增強處理后輸入Teacher 模型得到預測結果,預測結果經過NMS(Non Maximum Suppression)初步選擇后,其中的定位數據通過Box Jittering 方法選擇得到可靠的定位數據,而分類數據通過置信度閾值選擇得到可靠的預測類別。在Student 模型訓練分支上,相同的未標注數據經過Strong Aug 處理和標注數據共同輸入Student 模型得到預測結果,未標注數據的預測結果和Teacher 生成并被選擇的預測結果一起計算損失值,標注數據按正常的目標檢測訓練過程計算損失值,最后用于Student 模型優化更新。Student 模型優化更新后通過EMA 方法更新Teacher 模型。
多數偽標簽目標檢測方法為了避免大量標注錯誤的偽標簽數據用于Student 模型訓練,選擇高置信度的偽標簽數據作為訓練數據。首先,由于Teacher模型沒有經過預訓練,因此生成的高置信度的偽標簽也包含很多錯誤標注數據;其次,稍低置信度的偽標簽數據中存在很多正確標注數據,如果能利用這些數據訓練模型,可以極大地提高模型的泛化能力,緩解過擬合情況。因此,引入除置信度以外的判斷依據來挖掘稍低置信度中的正確標注數據用于模型訓練。受到文獻[22]的啟發,本文提出了CUC 的分類不確定性計算方法,用于偽標簽生成分支中選擇可靠的分類數據。
目標檢測領域應用最廣泛的分類損失函數是交叉熵損失函數,交叉熵損失函數主要是通過置信度來計算真實分布和預測分布的差異。由于增加了分類不確定性這一評估預測分布的新依據,因此考慮將分類不確定性作為權重加入到分類損失函數中,使損失函數更具代表性、更加貼合預測分布和真實分布的差異。
偽標簽目標檢測方法的Teacher-Student 模型結構采用了一致性正則化的思想。文獻[18]針對一致性正則化方法提供了兩種方法可以提高偽標簽質量。第一種方法是仔細選擇數據增強方法,避免引入更多噪音;第二種方法是仔細選擇Teacher 模型,而不是簡單地復制Student 模型。因此,Teacher 模型和Student 模型相似性高,不利于一致性正則化方法起效,本文受指數移動平均歸一化(Exponential Moving Average Normalization,EMAN)方法[26]的啟發,提出基于EMAD 的Teacher 模型更新方法。
在偽標簽目標檢測領域中,根據全連接層和softmax 函數將特征圖轉化為每一類的類別概率(即置信度),通過選擇置信度最大的類別作為最終的預測類別,并選擇最終預測結果的置信度高于置信度閾值的數據作為訓練數據。
研究人員利用softmax 的置信度表示預測結果的不確定性,如果某一類別的置信度遠遠高于其他類別置信度就認為該預測結果的不確定性低。但文獻[22]的實驗表明,一些置信度高的預測結果仍然具有高不確定性。因此,受到文獻[22]的工作的啟發,本文提出了CUC 的分類不確定性計算方法。
2.1.1 CUC 方法思路
模型預測不確定性可以通過模型參數的分布得到,而高斯分布作為統計領域強大的工具常用于模擬模型參數的分布,因此可以通過計算模型參數的高斯分布來得到不確定性,但計算高斯分布需要龐大的計算量。GAL 等提出加入dropout 層的神經網絡可以近似高斯分布的變分推理,因此模型預測不確定性計算可以簡化為通過dropout 多次采樣和計算方差得到。
CUC 方法的思路是:首先在Teacher 模型分類模塊的全連接層前添加dropout 層,實現近似高斯分布的效果;其次通過將訓練數據反復輸入分類模塊得到預測結果實現采樣操作;最后通過計算方差實現模型預測不確定性的量化。CUC 方法的具體流程如圖2 所示。

圖2 CUC 方法流程Fig.2 Procedure of CUC method
首先將單張圖片生成的檢測框輸入帶有dropout 層的分類回歸模塊若干次,得到若干次的預測結果;其次計算若干次預測結果的方差,將預測結果的方差作為該目標分類結果的不確定性。通常認為重復預測的次數越高,計算得到的方差越具有代表性,但頻繁的重復預測會延長模型的訓練時間,因此本文參考UPS 方法,重復預測10 次。
通過上述方法計算得到的目標的不確定性可以代表模型對該類目標的學習程度。如果模型之前從未學習或學習了很少該類目標,則不確定性就會很高;相反如果模型之前學習過該類目標或者類似的目標,則不確定性就會較低。因此,不確定性可以在一定程度上反映模型對于輸入數據的學習程度,從而判斷預測結果是否可靠,幫助篩選出更可靠的偽標簽數據。
2.1.2 CUC 方法實現
在SoftTeacher 方法中,Teacher 模型由特征提取模塊ResNet-50、多尺度特征融合模塊FPN(Feature Pyramid Network)、候選框生成模 塊RPN(Region Proposal Network)和分類回歸模塊組成。由于分類操作主要是發生在分類回歸模塊,因此在分類回歸模塊中添加丟棄概率為0.3 的dropout 層,修改后的分類回歸模塊具體結構如圖3 所示。

圖3 分類回歸模塊結構Fig.3 Structure of classification regression module
CUC 方法的算法描述如下:
算法1分類不確定性計算
輸入RPN 模塊生成的檢測框數據
輸出每個檢測框的不確定性
1.將Teacher 模型的dropout 層設置為train 狀態。
2.將單張圖片的檢測框數據輸入分類回歸模塊10 次,得到10 次的分類預測結果。
3.將得到的10 次分類預測結果拼接成尺寸為10×N×C的張量,其中,N 表示檢測框的數量,C 表示類別數量。
4.計算方差得到尺寸為N×C 的方差張量。
5.選擇偽標簽中檢測框的預測類別對應的方差作為檢測框的不確定性,得到尺寸為N 的不確定性張量。
6.將Teacher 模型的dropout 層設置為val 狀態
SoftTeacher 方法中損失函數由標注圖像的損失函數和偽標簽圖像的損失函數組成,具體的公式如下:

其中:Ls表示標注圖像的損失函數;Lu表示偽標簽圖像的損失函數;α表示偽標簽損失函數的權重,一般根據標注圖像和偽標簽圖像的比例設置。
標注圖像的損失函數和偽標簽損失函數的具體公式如下:

其中:Nl和Nu分別表示標注圖像數量和偽標簽的圖像數量;Lcls和Lreg分別表示檢測結果的分類損失函數和定位損失函數;和分別表示第i張標注的圖像和第i張偽標簽圖像。SoftTeacher 方法中用到的分類損失函數和定位損失函數與Faster RCNN[1]模型相同,但對偽標簽的分類損失函數進行了一定的修改,對背景檢測框的損失附加權重,具體的公式如下:

其中:Gcls表示Teacher 模型生成并經過篩選的偽標簽分類結果;lcls表示損失函數即交叉熵公式;rj表示第j個背景檢測框的置信度,由Teacher 模型生成;和分別表示前景檢測框的數量和背景檢測框的數量。
通過偽標簽分類損失函數式(4)和式(5)可以看出,SoftTeacher 僅采用了模型的全連接層生成的置信度計算分類損失,并反饋給模型進行模型參數更新。由于在2.1 節中實現了分類不確定性的計算方法,可以得到新的衡量模型分類質量的指標,因此修改偽標簽圖像分類損失函數,將分類結果的不確定性作為權重加入到損失函數中。修改后的偽標簽分類損失函數的具體公式如下:

其中:uj表示第j個檢測框的不確定性值。
分類困難目標和模型學習不充分目標的不確定性高,不確定性數值作為權重后導致該類目標的預測結果在整個損失值中的占比下降,該類目標對模型更新造成的影響會減弱,緩解了錯誤標注目標對Student 模型訓練造成的負面影響。修改后的偽標簽分類損失函數包含了預測結果的兩個評估指標,可以反饋給模型更全面的信息,提高模型的優化程度。
在SoftTeacher 方法中,更新Teacher 模型采用的是深度半監督學習領域最常使用的EMA 方法。EMA 方法的具體公式如下:

其中:和分別表示Teacher 模型在t-1 時刻和t時刻的模型參 數;表示Student 模型在t時刻的模型參數;β表示Teacher 模型和Student 模型的占比權重,絕大多數偽標簽目標檢測方法將該超參數固定為0.9,而在SoftTeacher 方法中,β會隨著訓練的迭代次數減少。
通過上述公式可以觀察到:傳統的Teacher 模型更新方法表明Student 模型在式(7)中占比很低,表明Teacher 模型參數更新后的改變很小,導致整個訓練過程由于Teacher 模型更新提升緩慢而漫長。SoftTeacher 在訓練前期,Student 模型在更新中占比非常高,但考慮到Teacher 模型和Student 模型太過一致的問題,到訓練后期Student 模型在更新中占比下降。雖然這一方法在訓練中有利于檢測性能的提高,但訓練后期不再進行大幅更新,也限制了Teacher 模型的性能提高,從而限制Student 模型的性能提高。受到文獻[26]的啟發,本文提出基于EMAD 的Teacher 模型更新策略。
2.3.1 EMAD 方法思路
EMAD 方法主要是將Teacher 模型的參數根據模塊作用分為特征提取模塊參數、FPN 模塊參數、RPN 模塊參數、分類回歸模塊參數以及BN(Batch Normalization)層的不可學習參數5 個部分。不同部分的參數采用不同的更新方法。
由于模型的特征提取模塊、多尺度特征融合模塊和候選框生成模塊主要是對圖像特征進行處理,因此采用SoftTeacher 中的原EMA 方法對Teacher 模型中的上述3 個模塊進行更新。但分類回歸模塊的作用是對目標的分類和定位,一旦參數和Student 模型相似會導致偽標簽數據和Student 模型預測結果接近,因此減少EMA 方法中Student 模型占比,降低兩個模型參數的相似,將β設置為固定的0.5。
BN 層的主要作用是對每層神經網絡的輸入輸出值進行標準化處理,使輸入輸出值位于正態分布范圍,以此避免梯度消失的問題。BN 層對輸入值處理的具體公式如下:

其中:n表示批處理大小;μ和σ2表示該批數據的均值和方差,是BN 層的不可學習參數;γ和β表示可學習的模型參數;ε表示常量。EMA 方法對Teacher 模型的BN 層的參數進行更新,BN 層中γ和β參數來源于Student 模型,而μ和σ2參數來源于最近一批數據,兩種類型的參數不一致,容易對Teacher 模型造成負面影響。因此,利用EMA 方法對不可學習參數μ和σ2進行更新,保持兩種參數的一致性,具體的更新公式如下:

2.3.2 EMAD 方法實現
Teacher 模型更新算法如下:
算法2Teacher 模型更新算法

本文將改進后的SoftTeacher 算法在MS COCO公共數據集上進行了實驗。MS COCO 包含80 種類別的目標,主要由訓練集train2017、驗證集val2017和無標簽數據集unlabeled2017 三個數據集組成。訓練集train2017 有118 000 張標注圖像,驗證集val2017 有5 000 張標注圖像,無標簽數據集unlabeled2017 有123 000 張未標注的圖像。
SoftTeacher-CUC 算法的訓練數據和SoftTeacher保持一致。首先在train2017 中分別隨機抽取占train2017 總數量1%、5%和10%的圖像分別構成多個標注數據集,剩下的圖像作為未標注數據集。模型在新構成的標注數據集和未標注數據集上進行訓練,在驗證集val2017 上進行性能評估。
實驗所用到的評估指標是目標檢測領用通用的平均精度均值(mean Average Precision,mAP)評估指標,mAP 越接近于1,則檢測精度越高。單個類別AP 指的是PR(Precision-Recall)曲線與X軸圍成的圖形面積。
SoftTeacher-CUC 算法的模型結構中Teacher 模型和Student 模型采用與SoftTeacher 實驗一致的Faster RCNN 模型,并結合了FPN 模塊。特征提取模塊采用在ImageNet 預訓練的ResNet-50 模型參數初始化,其他模塊的參數采用隨機初始化的方法。
SoftTeacher-CUC 算法模型在單個GPU 上訓練,批處理大小是5(真實標注圖像是1 張,未標注圖像是4 張),使用隨機梯度下降(Stochastic Gradient Descent,SGD)調整學習率,初始學習率是0.001,權重衰減為0.000 1,訓練180K~720K 個epoch。
定位不確定性計算方法的超參數保持不變,重復定位10 次,選擇不確定性低于0.02 的檢測框為偽標簽中的定位數據,檢測框的偏移處理是在4 個定位信息中隨機選取一個進行偏移量在[-6%,6%]中的偏移操作。CUC 分類不確定性計算方法中dropout 層的丟棄率為0.3,重復分類10 次,選擇偽標簽中分類數據的不確定性低于0.05 但置信度高于0.7 的偽標簽用于Student 模型訓練。
3.3.1 不同置信度閾值對比實驗
本文通過CUC 方法計算偽標簽數據中分類數據的不確定性作為選擇可靠偽標簽數據的第二依據,但需要通過實驗選擇合適的不確定性閾值和置信度閾值用于偽標簽篩選。
參考UPS 方法和SoftTeacher 方法,不確定性閾值和置信度閾值分別初始化為0.05 和0.9。由于減小不確定性閾值導致大量錯誤標注數據用于訓練,造成模型在訓練中平均精度均值較低,因此該對比實驗主要是研究在不確定性閾值保持0.05 不變的情況下不同置信度閾值的模型訓練情況。分別在標注數據占訓練數據的1%、5%和10%這3 種情況下進行實驗,實驗結果如圖4 所示。

圖4 不同置信度閾值對比結果Fig.4 Contrast result of different confidence thresholds
從圖4 的實驗結果可以看出,當置信度閾值保持 和SoftTeacher 相同的0.9 時,Student 模型的檢測性能比SoftTeacher 方法中模型的檢測性能要稍低。但隨著置信度閾值下降,越來越多的低不確定性偽標簽數據用于Student 模型訓練,Student 模型的檢測性能也越來越高。當置信度閾值降低到0.7 時,Student 模型的檢測性能逐漸保持穩定。因此,最終選擇置信度閾值為0.7。
3.3.2 消融實驗
為了驗證SoftTeacher-CUC 算法的有效性,SoftTeacher算法(包 括SoftTeacher-CUC 算法和Baseline 算法)都在單GPU 環境下訓練,訓練迭代次數、批處理大小以及學習率都保持一致。但Baseline算法在單GPU 下訓練的性能和本文有一定差距。為了比較的公平性,運用單GPU 下訓練的性能與SoftTeacher-CUC 算法進行比較。實驗結果如表1所示。

表1 消融實驗數據對比Table 1 Comparison of ablation experiment data %
從表1 中Baseline 和Baselin+CUC 的對比實驗可以看出,結合CUC 分類不確定性方法的模型性能比原模型性能分別提高了1.2、0.9和1.3個百分點,說明CUC方法在提高模型的檢測性能方面是有效的。隨著標注數據從1%增加到10%,模型的檢測精度提高程度也從1.2 增加到1.3 個百分點,說明標注數據越多,CUC 方法越有效。下一步研究將增加未標注數據量比較的實驗,觀察未標注數據量的增加是否會對結合CUC 方法的偽標簽目標檢測算法有影響。
從表1 中Baselin+CUC 和Baseline+CUC+EMAD的對比實驗可以看出,結合EMAD 方法的模型比沒有結合EMAD 方法的模型的檢測性能分別提高了0.2、0.3 和0.4 個百分點,說明Teacher 模型更新方法EMAD 對模型檢測性能的提高起到積極作用。
3.3.3 可視化實驗
為了更好地觀察SoftTeacher-CUC 算法在檢測性能上的提升,本文通過免費圖像網站選擇一張圖像,測試經過相同訓練的SoftTeacher-CUC 算法和SoftTeacher 算法的檢測性能,圖像檢測結果如圖5所示。

圖5 SoftTeacher-CUC 和SoftTeacher 算法檢測效果對比Fig.5 Comparison of detection effects of SoftTeacher-CUC and SoftTeacher algorithms
從圖5(a)和圖5(b)可以看出,在標注數據為5%時,SoftTeacher-CUC 算法的檢測效果要優于SoftTeacher 算法的檢測效果;從圖5(c)和圖5(d)可以看出,在標注數據為10%時,SoftTeacher-CUC 算法的檢測效果要略優于SoftTeacher 算法的檢測效果。上述實驗結果表明:本文提出的改進算法在標注數據較少時優勢明顯,檢測性能的提升效果更好。
3.3.4 橫向實驗
本文選擇了偽標簽目標檢測領域中前沿的4 種算法與SoftTeacher-CUC 算法進行橫向對比,分別是STAC算法[10]、Unbiased Teacher算法[12]、Instance-Teaching 算法[11]和SoftTeacher 算法[19]。由于一些偽標簽目標檢測算法的訓練環境要求較高,僅引用了其實驗結果,一些滿足訓練環境需求的偽標簽目標檢測算法將在與SoftTeacher-CUC 算法相同的訓練環境下訓練。具體的對比數據如表2 所示。

表2 橫向實驗數據對比Table 2 Comparison of transverse experimental data %
從表2 中可以看出,本文算法的檢測精度優于其他4 種偽標簽目標檢測算法。同時,也證明了本文提出的改進算法對于偽標簽目標檢測算法能夠起到優化、提高性能的作用。計劃在下一步的研究中將本文提出的算法應用于其他的偽標簽目標檢測方法中,以證明本文算法的通用性。
針對偽標簽目標檢測算法中低置信度的偽標簽數據無法被利用,導致模型過擬合、檢測性能不理想的問題,本文提出一種基于分類不確定性的偽標簽目標檢測算法來確定偽標簽數據的分類不確定性,從而篩選出更高質量的偽標簽用于Student 模型訓練,通過對偽標簽數據的分類損失函數進行修改,將不確定性加入損失函數中,并修改了Teacher 模型的更新策略,在此基礎上對Teacher 模型的不同模塊調整Student 模型參數在更新中的權重。實驗結果表明,改進算法有效地改善了偽標簽目標檢測中存在的問題,提高了模型的檢測性能。下一步將在本文研究的基礎上對Teacher 模型更新算法進行修改,使Teacher 模型更新和Student 模型更新相互獨立,并不直接相關,使一致性正則化的算法具有更大的作用,從而提高模型的檢測性能。