李政文 杜文菊 饒妮妮
(1.電子科技大學生命科學與技術學院,四川成都 610054;2.電子科技大學成都學院,四川成都 610031)
圖像分類是根據(jù)圖像的語義信息將不同類別的圖像區(qū)分開來,是圖像檢測與分割等其他高層視覺任務的基礎,在文本識別、交通、地震以及醫(yī)學等領域具有重要應用價值[1-6]。
傳統(tǒng)的圖像分類方法通過手工特征或特征提取方法對整個圖像進行描述,然后使用分類器判別圖像類別[1,7]。由于傳統(tǒng)特征提取方法普遍不是機器學習算法,所以它們提取的特征沒有自學習和自調整能力,特征的內(nèi)容是固定的。這在一定程度上限制了傳統(tǒng)分類方法的鑒別能力?;谏疃葘W習的圖像分類方法可以通過有監(jiān)督或無監(jiān)督的方式學習層次化的特征描述,從而可以取得很好的分類效果。自從2012 年AlexNet[8]神經(jīng)網(wǎng)絡以來,深度神經(jīng)網(wǎng)絡就成為了圖像分類領域的主要方法[9]。2014 年英國牛津大學的“視覺幾何實驗室”設計的VGG[10]神經(jīng)網(wǎng)絡把神經(jīng)網(wǎng)絡層次加深到了19層,證明了神經(jīng)網(wǎng)絡的深度對分類準確率有很大的影響,但神經(jīng)網(wǎng)絡深度加深時會伴隨著梯度消失的問題。為此,2016 年何凱明在設計的Resnet[11]神經(jīng)網(wǎng)絡中加入了一個殘差模塊,在保證準確率的情況下解決了梯度消失問題。2017 年稠密網(wǎng)絡Densenet[12]設計了稠密模塊,減少了模型參數(shù)量,提高了圖像特征傳遞效率。同年,Xception[13]神經(jīng)網(wǎng)絡驗證了神經(jīng)網(wǎng)絡加寬對于分類準確率的提升也有較大的幫助。
盡管如此,基于深度學習的圖像分類方法性能的提升仍然面臨一些問題:
(1)需要一個完全干凈的數(shù)據(jù)集來訓練分類模型,而這個完全干凈的數(shù)據(jù)集在現(xiàn)實中是較難獲取的。例如,受主觀因素影響,醫(yī)學圖像集中存在或多或少的錯標或漏標圖像。
(2)在算力受限的場合(如穿戴式監(jiān)護設備),要求深度學習網(wǎng)絡的層數(shù)不能太高,不干凈的圖像數(shù)據(jù)對這類分類網(wǎng)絡的性能將產(chǎn)生很大影響。雖然分類模型深度加深有利于其抗噪魯棒性的提升,但會帶來計算量增大和耗時加長,不適用于實時應用場景。
(3)大多數(shù)分類模型泛化能力差,在其他圖像數(shù)據(jù)集上的分類性能嚴重下降。
鑒于此,本文提出了一種基于不準確圖像數(shù)據(jù)清洗的分類框架,同時還探討了圖像數(shù)據(jù)集清洗后對圖像分類的影響,以及數(shù)據(jù)集里含有標簽噪音圖像比例對模型分類準確率的影響。
Kaggle計算機視覺競賽公開數(shù)據(jù)集是一個為開發(fā)商和數(shù)據(jù)科學家提供舉辦機器學習競賽、托管數(shù)據(jù)庫、編寫和分享代碼的平臺。該數(shù)據(jù)集共包含12500 張貓和12500 張狗的圖像,共計25000 張貓狗圖像,本文用于驗證基于不準確圖像數(shù)據(jù)集清洗的分類方法性能。
本文構建的基于不準確圖像數(shù)據(jù)清洗的分類框架如圖1 所示。該分類框架基于深度學習技術,主要由標簽噪音圖像清洗模型和分類模型組成。
2.2.1 圖像清洗模型
本研究的圖像數(shù)據(jù)清洗是基于聚類分析中的一個假設:聚類問題的邊界必須位于低密度區(qū)域[14]。對于圖像的二分類問題,在訓練分類模型時,分類模型優(yōu)先從數(shù)據(jù)集高密度區(qū)域學習到每一類共同具有的特征,基于這些共同特征進行分類。造成分類錯誤的主要數(shù)據(jù)來源是位于低密度區(qū)域的難分辨數(shù)據(jù)和位于高密度區(qū)域中的錯誤標簽數(shù)據(jù),這些數(shù)據(jù)是造成模型訓練損失函數(shù)損失值高的主要原因。因此,把這部分數(shù)據(jù)提取出來并從數(shù)據(jù)集中刪除,有利于提高分類準確率[15]。
本文采用了改進的VGG16_bn 神經(jīng)網(wǎng)絡(后簡稱為VGG_NIN,共14 層神經(jīng)網(wǎng)絡)來構建圖像清洗模型[15],同時采用了深度Resnet152 神經(jīng)網(wǎng)絡作為清洗模型特征提取網(wǎng)絡進行對比實驗。VGG_NIN 刪除了VGG16_bn 的全連接層,添加了兩個1x1的卷積層和池化層,優(yōu)化減少了模型參數(shù)量為19982402 個參數(shù),遠遠少于原始VGG16_bn 神經(jīng)網(wǎng)絡的134277186個參數(shù),而Resnet152網(wǎng)絡的參數(shù)是60192808 個。VGG_NIN 提高了清洗模型的運行速度。
為了能夠把盡量多的錯誤圖像篩選出來,本模型對數(shù)據(jù)集進行多次反復篩選,算法流程表示在圖1左邊的圖像清洗模型中。在訓練不準確數(shù)據(jù)集清洗模型的過程中,選擇了AdamW[16]作為模型的優(yōu)化器,采用了變化的學習率和交叉熵損失函數(shù)。如果損失函數(shù)訓練指定批次后沒有減少,則把學習率減半,以提高清洗精確度。為了加快錯誤圖像清洗速度,每張圖像像素大小統(tǒng)一為224×224,每批次訓練32張圖像。
2.2.2 圖像分類模型
為了說明圖像清洗的作用,本文采用了三個具有不同特點的圖像分類模型,包括:VGG16_bn,DenseNet161[12]和Xception[13]。DenseNet模型是ResNet神經(jīng)網(wǎng)絡模型的改進,它建立了前面所有層與后面層的密集連接,這使得DenseNet 在參數(shù)和計算成本更少的情形下實現(xiàn)比ResNet更優(yōu)的性能[12]。Xception 使用了多種不同尺寸的卷積核,提高了對不同尺度特征的適應能力,并且設計了精巧的Bottleneck結構,大大減少了網(wǎng)絡參數(shù)量并提高了網(wǎng)絡的表達能力。本文在分類模型訓練過程中,固定了隨機種子,沒有使用圖像增強,每個分類模型使用相同的驗證集和測試集,并且保證驗證集和測試集含有圖像的標簽是完全正確的,以減少其他因素對分類結果的影響。分類模型訓練過程使用的優(yōu)化器是AdamW,使用了變化的學習率。此外,本文還重點探討了圖像數(shù)據(jù)集里含有的標簽錯誤圖像比例對分類準確率(Accuracy,Acc)的影響。
不準確的圖像數(shù)據(jù)集含有的錯誤圖像包括標簽噪音和背景噪音圖像,根據(jù)圖像數(shù)據(jù)集的二分類問題自身特點,本文設計了三個實驗來研究基于不準確圖像數(shù)據(jù)集清洗的分類問題。
實驗一:不同深度的神經(jīng)網(wǎng)絡對不準確圖像數(shù)據(jù)集清洗的效果對比。該實驗對比VGG_NIN 與Resnet152 神經(jīng)網(wǎng)絡的清洗效果。給定一個準確率未知并且沒有完全正確的訓練集做前提條件的圖像數(shù)據(jù)集,基于上述兩個網(wǎng)絡清洗出標簽噪音和背景噪音圖像,再做分析與比較。
實驗二:圖像數(shù)據(jù)集清洗前后對分類的影響。該實驗驗證本文方法采用刪除數(shù)據(jù)集里所有可能錯誤圖像以后的數(shù)據(jù)和沒有刪除可能錯誤圖像的數(shù)據(jù)集來訓練模型,對比兩個數(shù)據(jù)集對分類準確率和驗證集的損失函數(shù)的損失值是否有影響。具體做法是:選擇神經(jīng)網(wǎng)絡模型VGG16_bn,先使用原始圖像數(shù)據(jù)集進行訓練模型,對驗證集和測試集里的數(shù)據(jù)進行分類,獲得一個分類準確率和損失函數(shù)的損失值;再用刪除了所有可能錯誤圖像的數(shù)據(jù)集進行模型訓練,使用新訓練出來的模型對驗證集和測試集里的數(shù)據(jù)進行分類,獲得一個分類準確率和損失函數(shù)的損失值,對比兩次的準確率和損失值的關系。
實驗三:數(shù)據(jù)集含有標簽噪音圖像比例與分類準確率之間的關系。該實驗的具體做法是:選擇經(jīng)典的三個神經(jīng)網(wǎng)絡模型VGG16_bn、DenseNet161 和Xception,對清洗干凈以后的貓狗圖像數(shù)據(jù)集先隨機選擇出一部分圖像作為驗證集,然后把剩余的圖像作為訓練集。在訓練集里隨機制造一定數(shù)量的標簽噪音圖像,研究訓練集里含有標簽噪音圖像的比例與最終分類結果的關系。
本實驗實現(xiàn)的編程語言是Python 3.6.4,深度學習庫是PyTorch 1.0.0(https://pytorch.org/)。所有實驗均在基于Ubuntu 16.04.6 LTS(GNU/Linux 4.8.0-36-generic X86_64)的服務器上進行,服務器配備Nvidia GeForce rtx2080ti、11G 四個圖形處理單元。
本文使用了以下幾個標準作為分類性能的檢測指標:
(1)召回率Recall(Rec):
式(1)的召回率可以反應圖像數(shù)據(jù)集里正類的圖像被分類器判定為正類的準確程度。
(2)準確率Accuracy(Acc):
準確率(式(2))可以判斷分類器總體分類的準確程度,但在樣本不均衡的情況下,不能很好的衡量分類器性能。
(3)精確率Precision(Pre):
精確率(式(3))可以反應分類器判定圖像為正類的準確程度。也就是說分類器判定一個圖像為正類時,該判定有多大的可能性是正確的。
(4)F1-Score:精確率和召回率通常呈現(xiàn)負相關,召回率高則精確率就低,精確率高則召回率就低,因此本文引入最終參數(shù)F1-Score(式(4))。F1-Score取值越大說明模型分類性能越好。
式(1)~(3)中,TP(True Positive)表示分類器判定正確的正類圖像數(shù)量,即:一個圖像的標簽是正類且分類器也判定該圖像為正類圖像。FN(False Negative)表示分類器分類判定錯誤的負類圖像數(shù)量,即:圖像標簽是正類圖像但分類器做出了錯誤的判定,判定該圖像為負類圖像。FP(False Posi?tive)表示分類器判定錯誤的正類圖像數(shù)量,即:圖像標簽是負類圖像但分類器做出了錯誤的判定,判定該圖像為正類圖像。TN(True Negative)表示分類器判定正確的負類圖像數(shù)量,即:圖像標簽是負類圖像并且分類器也判定該圖像是負類圖像。
貓狗數(shù)據(jù)集里圖像質量差別較大,有的圖像像素較低或被其他物體遮擋等。經(jīng)過圖像數(shù)據(jù)的清洗發(fā)現(xiàn),不同的神經(jīng)網(wǎng)絡提取圖像的特征后,清洗出的可能錯誤圖像是不同的,實驗結果如表1所示。其中,Resnet152 清洗出的標簽錯誤圖像較少,而VGG_NIN 神經(jīng)網(wǎng)絡清洗出的標簽錯誤圖像較多,較深的神經(jīng)網(wǎng)絡對于標簽錯誤的數(shù)據(jù)會形成記憶,從而導致神經(jīng)網(wǎng)絡的泛化能力較差[17-18]。
從表1 中可以看出,Resnet152 是較深層次的神經(jīng)網(wǎng)絡,對標簽錯誤的圖像有一定的魯棒性,而VGG_NIN 神經(jīng)網(wǎng)絡層次較少,神經(jīng)元含量較少,對標簽錯誤的圖像魯棒性較差但有利于清洗標簽錯誤的圖像。實驗發(fā)現(xiàn),增加清洗次數(shù)可以增加清洗出來的錯誤圖像數(shù)量,但清洗時間會增加很多,設置不同的隨機種子,清洗出來的結果也會有所不同。
表1 貓狗數(shù)據(jù)集錯誤圖像篩選結果Tab.1 Error image screening results of original cat and dog data sets
圖2給出了篩選的錯誤圖像示例。對于貓和狗在同一副圖像的情況,無論給出哪類標簽都是錯誤的,或者第一行非貓非狗標注成貓或者狗都是錯誤的標簽,而有的圖像給出了多個不同類別的標簽,以上幾種類型圖像總共篩選出來62張。
本文選擇VGG_NIN神經(jīng)網(wǎng)絡清洗后的數(shù)據(jù)集作為后面分類實驗的數(shù)據(jù)集。刪除所有真實錯誤和部分模糊的圖像后,數(shù)據(jù)集余下的圖像共有24826張。其中,貓和狗圖像分別為12391和12435張。
首先對沒有篩選過錯誤圖像的原始貓狗數(shù)據(jù)集進行分類,原始數(shù)據(jù)集共有圖像25000張,其中包含貓和狗的圖像分別為12500 張。我們把這25000 張圖像分為了訓練集和驗證集,其中驗證集包含2400張圖像(貓和狗的圖像分別為1200張),驗證集圖像占總圖像的比例約9.6%,并且驗證集里的2400 張圖像都是經(jīng)過篩選,保障每一張圖像都是標簽正確的。清洗前,訓練集包含狗和貓的圖像都為12300 張,清洗后的訓練集包含貓的圖像11191 張,狗的圖像11235 張。然后,探究貓狗數(shù)據(jù)集里刪除錯誤圖像后的分類準確率以及數(shù)據(jù)集含有標簽錯誤圖像的比例對于分類準確率的影響。實驗結果如表2所示。
表2 清洗前后分類結果Tab.2 Classification results before and after cleaning
由表2 可以看出,使用VGG16_bn 神經(jīng)網(wǎng)絡作分類模型時,對于相同的驗證集,將可能錯誤圖像清洗前后的訓練集訓練出來的模型比較,清晰后的分類效果更好。
被清洗前后貓狗圖像數(shù)據(jù)訓練的分類模型,在驗證集上的準確率曲線和損失函數(shù)的損失值曲線分別如圖3(a)和(b)所示。可以看出,被清洗了可能錯誤圖像后訓練的分類模型的準確率明顯提升,損失函數(shù)的損失值也明顯降低了很多。
由于貓狗數(shù)據(jù)集里含有的錯誤圖像比例較少,而現(xiàn)有較深層次的神經(jīng)網(wǎng)絡對于標簽錯誤率較低的數(shù)據(jù)集具有較強的分類魯棒性,所以直接采用現(xiàn)有的貓狗數(shù)據(jù)集難以探討清楚標簽噪音圖像比例與分類準確率之間的關系。為此,本文在刪除了所有錯誤圖像的貓狗數(shù)據(jù)集里,人工制造了一定比例的標簽錯誤圖像(表3),加入到清洗后的數(shù)據(jù)集中。刪除所有真實錯誤和部分模糊的圖像后,原數(shù)據(jù)集余下的圖像共有24826 張。其中,貓和狗圖像分別為12391和12435張。
制造標簽錯誤圖像的方法是交換一部分貓和狗的標簽,也就是隨機把一部分貓的標簽修改為狗,把一部分狗的標簽修改為貓。在不同比例的標簽錯誤圖像下,三個分類模型的分類準確率如表3和圖4所示。
由表3和圖4可以看出,無論是較淺層還是較深層次的神經(jīng)網(wǎng)絡,隨著數(shù)據(jù)集中含有的標簽噪音圖像比例增加,分類準確率都是下降。雖然較深層次的神經(jīng)網(wǎng)絡模型(如DenseNet161)對圖像數(shù)據(jù)集中含有的標簽噪音圖像具有較強的魯棒性,但隨著數(shù)據(jù)集中標簽噪音圖像比例的增加,較淺層的神經(jīng)網(wǎng)絡(如VGG16_bn)在分類效果上與較深層次的神經(jīng)網(wǎng)絡模型(如DenseNet161)的分類準確率相當,并且較淺層的神經(jīng)網(wǎng)絡模型還具有運算速度更快的優(yōu)勢。因此,在分類框架中引入的錯誤圖像清洗環(huán)節(jié)有效地提升了較淺層神經(jīng)網(wǎng)絡模型的分類能力。
表3 標簽噪音圖像比例與分類準確率Acc之間的關系Tab.3 The relationship between the ratio of tag noise image and Acc of classification accuracy
由于大量圖像數(shù)據(jù)集標注成本較高并且花費時間多,人工標注過程中受到主觀性、經(jīng)驗和疲勞程度等多種因素影響,很難獲得數(shù)量較大的準確的數(shù)據(jù)集,所以實際中多數(shù)是帶有標簽噪音或背景噪音的數(shù)據(jù)集?,F(xiàn)有分類方法大多數(shù)在訓練模型時需要完全干凈的數(shù)據(jù)集,而本文提出的方法,引入錯誤圖像清洗環(huán)節(jié),在訓練分類模型時不需要完全干凈的數(shù)據(jù)集,并且本文的方法可以推廣到其他不準確數(shù)據(jù)集的分類任務中。在清洗二分類圖像數(shù)據(jù)集中的錯誤圖像時,較深層次的神經(jīng)網(wǎng)絡對于錯誤圖像的清洗有較高的魯棒性,并沒有取得較好的清洗效果。
本研究方法基于標簽噪音圖像和背景噪音圖像的清洗,在自然圖像數(shù)據(jù)集上取得了較好的分類效果,數(shù)據(jù)集清洗完以后,分類準確率得到提升,損失函數(shù)的損失值也降低了一些,當然也存在一些局限性。例如,在刪除標簽噪音和背景噪音圖像的同時,也刪除了少部分標簽正確的圖像,另外,還沒有推廣到多分類的數(shù)據(jù)集中去。
本文也討論了數(shù)據(jù)集里含有的標簽錯誤圖像比例對分類準確率的影響,較深層次的神經(jīng)網(wǎng)絡模型和設計合理的神經(jīng)網(wǎng)絡結構可以降低錯誤圖像對分類準確率的影響。當神經(jīng)網(wǎng)絡模型較簡單時,對錯誤圖像的魯棒性較差,但在分類框架中引入的錯誤圖像清洗環(huán)節(jié)將提高較簡單神經(jīng)網(wǎng)絡分類模型抵抗錯誤圖像的能力。
本文提出了一種不準確監(jiān)督學習中基于標簽噪音和背景噪音圖像清洗的分類框架。該框架可以提高較簡單神經(jīng)網(wǎng)絡分類模型抵抗錯誤圖像的能力,為快速和準確分類提供了一種新思路。接著,對比了清洗前后的分類準確率。清洗后的分類準確率明顯提升,數(shù)據(jù)集損失函數(shù)的損失值也明顯有所降低。最后,探討了數(shù)據(jù)里含有標簽噪音圖像的比例大小對模型分類準確率的影響。在該分類框架下,即使在圖像數(shù)據(jù)集中標簽噪音圖像的比例較高時,較淺的神經(jīng)網(wǎng)絡分類模型也能達到與較深層次的神經(jīng)網(wǎng)絡分類模型相當?shù)姆诸愋Ч?,而且運算速度更快。
在未來的工作中,我們打算將該分類框架推廣到自然圖像多分類數(shù)據(jù)集中,并進一步改進神經(jīng)網(wǎng)絡模型,提高清洗速度和分類準確率。