傅泰銘,陳 燕,李陶深
(廣西大學(xué)計(jì)算機(jī)與電子信息學(xué)院,南寧530004)
近年來(lái),卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,CNN)已經(jīng)被證實(shí)了在計(jì)算機(jī)視覺(jué)的多個(gè)應(yīng)用領(lǐng)域能取得相當(dāng)優(yōu)越的性能,如目標(biāo)檢測(cè)、人臉識(shí)別、圖像分類等。CNN 在經(jīng)過(guò)良好的訓(xùn)練后具有十分強(qiáng)大的表達(dá)能力,甚至能用來(lái)區(qū)分未被訓(xùn)練的任務(wù)。
以圖像分類的方式完成鯨魚身份的自動(dòng)標(biāo)注存在局限性。因?yàn)樵谟?xùn)練分類器時(shí),分類器通過(guò)提取正負(fù)樣本的特征差異實(shí)現(xiàn)分類圖像,而鯨魚個(gè)體尾巴特征差異十分微小,并且難以保證每個(gè)類別都有足夠的樣本用于學(xué)習(xí)。
本文使用相似性度量學(xué)習(xí)(Metric Learning)[1]根據(jù)鯨魚的尾巴特征來(lái)識(shí)別鯨魚的屬類。利用CNN 對(duì)圖像進(jìn)行特征提取后,通過(guò)對(duì)比特征編碼之間的距離度量,利用基于線性分配的難負(fù)樣本挖掘方法,不同于基于抑制簡(jiǎn)單樣本的難例挖掘,線性分配問(wèn)題(Linear Assignment Problem,LAP)算法可以根據(jù)模型的學(xué)習(xí)情況動(dòng)態(tài)地構(gòu)筑訓(xùn)練對(duì),并通過(guò)調(diào)整樣本采樣順序的方式使模型得到充分訓(xùn)練。
傳統(tǒng)的CNN 對(duì)每個(gè)個(gè)體都需要大量的標(biāo)記數(shù)據(jù),對(duì)每一個(gè)新發(fā)現(xiàn)的個(gè)體都需要重新訓(xùn)練網(wǎng)絡(luò)。1993 年,Bromley 等[2]針對(duì)這一問(wèn)題引入了一種合適的神經(jīng)網(wǎng)絡(luò)架構(gòu)——孿生神經(jīng)網(wǎng)絡(luò)(Siamese Neural Network,SNN),該網(wǎng)絡(luò)學(xué)習(xí)檢測(cè)兩個(gè)輸入圖像是否相似或不同的。經(jīng)過(guò)訓(xùn)練后,SNN 只需要一個(gè)帶有標(biāo)簽的輸入圖像,以便準(zhǔn)確地重新識(shí)別第二個(gè)輸入圖像是否同一個(gè)人的,在人臉識(shí)別領(lǐng)域得到廣泛應(yīng)用[3-4]。在實(shí)踐中,人們會(huì)訓(xùn)練SNN 來(lái)學(xué)習(xí)一個(gè)物種的相似性,并利用已知的既定事實(shí)來(lái)比較不同的個(gè)體。2015 年,Schroff 等[5]推出了基于孿生網(wǎng)絡(luò)的網(wǎng)絡(luò)架構(gòu)FaceNet,該架構(gòu)在YouTube 人臉數(shù)據(jù)集中擁有最高的準(zhǔn)確率,曾在top-1 準(zhǔn)確率上達(dá)到95.12%。并且出現(xiàn)了許多行人重識(shí)別(Person Re-identification,ReID)和SNN 的改進(jìn)模型[6-9],尤其在目標(biāo)追蹤領(lǐng)域,SNN 的應(yīng)用十分廣泛[10-12]。
SNN 屬于模板匹配算法,任何模板匹配算法對(duì)采樣策略都十分敏感,特別是存在樣本不平衡時(shí),而樣本不平衡問(wèn)題廣泛存在于大多數(shù)任務(wù)中。2011年,Barua等[13]提出合成少數(shù)類過(guò)采樣(Synthetic Minority Oversampling Technique,SMOTE),通過(guò)對(duì)少數(shù)類樣本進(jìn)行分析并根據(jù)少數(shù)類樣本人工合成新樣本添加到新數(shù)據(jù)集中對(duì)樣本進(jìn)行平衡。2016 年,Shrivastava等[14]提出了難例挖掘(Online Hard Example Mining,OHEM),能夠?qū)?jiǎn)單樣本進(jìn)行抑制,使得訓(xùn)練過(guò)程更加高效。2017年,Lin 等[15]提出焦點(diǎn)損失(Focal Loss,F(xiàn)L),通過(guò)引入兩個(gè)新的超參數(shù),計(jì)算損失時(shí)為不同的樣本分配不同權(quán)重,大幅緩解了樣本類別不平衡問(wèn)題,并將One-Stage 目標(biāo)檢測(cè)模型的性能提高至頂尖水準(zhǔn)。
線性分配問(wèn)題是基本的組合優(yōu)化問(wèn)題。通過(guò)利用線性分配算法為模型挑選樣本對(duì)有助于加速模板匹配類模型的收斂。本文設(shè)計(jì)了一種新的度量計(jì)算方式,并使用基于線性分配的難負(fù)樣本挖掘,在具有少數(shù)類別樣本的鯨魚尾巴數(shù)據(jù)集和CUB-200-2011數(shù)據(jù)集上取得了良好的識(shí)別效果。
本文所使用的SNN 模型具有兩部分:第一部分為分支模型,第二部分為頭模型。整體結(jié)構(gòu)如圖1 所示。分支模型是對(duì)常規(guī)卷積神經(jīng)網(wǎng)絡(luò)框架取消最后的池化(Pooling)層和全連接(Full Connected,F(xiàn)C)層,因此從分支模型將會(huì)得到一個(gè)從圖像進(jìn)行提取的特征向量編碼。以卷積密集網(wǎng)絡(luò)DenseNet[8]為例,DenseNet121 將輸出1 024 維的特征向量。使用一對(duì)具有共享權(quán)重的特征提取卷積網(wǎng)絡(luò)分別對(duì)輸入樣本對(duì)進(jìn)行特征提取,得到一對(duì)圖像特征向量。頭模型對(duì)特征向量進(jìn)行度量距離計(jì)算,因此頭模型也稱為距離層(Distance Layer),輸出相似度函數(shù)值(通過(guò)Sigmoid激活)。
圖1 本文算法整體結(jié)構(gòu)Fig.1 Overall structure of the proposed algorithm
通過(guò)頭模型對(duì)分支模型提取出的一對(duì)特征向量計(jì)算距離,典型的方法是使用歐氏距離度量,定義為:
但是有以下原因使得本文嘗試不同的方法來(lái)計(jì)算距離:
1)歐氏距離度量將兩個(gè)值為0 的特征視為完全匹配,而兩個(gè)不相等的正值確實(shí)為良好匹配(意味著不完全匹配)。然而,在正面(position)特征中比在負(fù)面(negative)特征中有更多的正面信號(hào),特別是在線性整流函數(shù)(Rectified Linear Unit,ReLU)激活中,這個(gè)概念會(huì)被距離度量丟棄。
2)歐氏距離度量不提供特征之間的負(fù)相關(guān)。
因此本文在距離層設(shè)計(jì)一種新的方法通過(guò)一個(gè)小型神經(jīng)網(wǎng)絡(luò)來(lái)學(xué)習(xí)和計(jì)算特征之間的度量距離:
輸入 一對(duì)特征向量x和y;
輸出 距離度量D。
1)將通過(guò)計(jì)算式(2)~(5)得到的向量拼接為一個(gè)長(zhǎng)度為4×n的一維矩陣lambda,n為特征向量的長(zhǎng)度。
2)將一維矩陣lambda 傳遞給一個(gè)小型的神經(jīng)網(wǎng)絡(luò)層,該網(wǎng)絡(luò)可以學(xué)習(xí)如何在匹配的零和接近的非零值之間權(quán)衡。每個(gè)特征使用相同的神經(jīng)網(wǎng)絡(luò),具有相同的權(quán)值。網(wǎng)絡(luò)結(jié)構(gòu)為2 層卷積層,之后將向量展開(kāi)為一維后輸入全連接層,全連接層輸出同類的概率,該輸出是轉(zhuǎn)換后的特征的加權(quán)和,帶有Sigmoid激活。頭結(jié)構(gòu)如圖2所示。
圖2 頭模型結(jié)構(gòu)Fig.2 Head model structure
由于模型的表達(dá)性能在訓(xùn)練期間會(huì)得到提高,因此有必要隨著訓(xùn)練的進(jìn)行提供更困難的訓(xùn)練樣本對(duì)。對(duì)于任何隨機(jī)圖像對(duì),相對(duì)容易預(yù)測(cè)它們是否匹配鯨魚,但是當(dāng)涉及到更困難的樣本時(shí),該模型將很難作出決定。
在訓(xùn)練開(kāi)始時(shí),通過(guò)隨機(jī)抽樣匹配(正)和不匹配(負(fù))對(duì)來(lái)為模型提供更簡(jiǎn)單的案例。這是因?yàn)槿粲?xùn)練開(kāi)始就將困難樣本輸入模型,收斂會(huì)十分困難。
因此隨著訓(xùn)練的進(jìn)行,開(kāi)始輸入更加困難的負(fù)對(duì)。由于來(lái)自不同類別的任何兩只鯨魚可以形成負(fù)對(duì),并且只有來(lái)自同一類別的鯨魚可以形成正對(duì),因此訓(xùn)練期間負(fù)對(duì)比正對(duì)數(shù)量更多。由于這種限制,在模型中只為不匹配的鯨魚形成負(fù)對(duì),并對(duì)正對(duì)僅使用隨機(jī)抽樣。
用線性分配問(wèn)題(LAP)算法來(lái)解決負(fù)對(duì)的選擇問(wèn)題,任務(wù)分配問(wèn)題是在加權(quán)二分圖中尋找最大(或最?。┘訖?quán)匹配的問(wèn)題。
利用LAP對(duì)樣本進(jìn)行采樣從而構(gòu)筑訓(xùn)練批次的過(guò)程可以簡(jiǎn)化為以下過(guò)程,以一個(gè)5×5度量分?jǐn)?shù)矩陣為例,矩陣中的元素代表一對(duì)訓(xùn)練對(duì)的距離度量,通過(guò)特征提取得到如下分?jǐn)?shù)矩陣:
由于算法只挑選負(fù)對(duì),所以設(shè)對(duì)角元素為∞。得到如下分?jǐn)?shù)矩陣:
對(duì)于每次迭代,LAP 將輸出一個(gè)由5 個(gè)負(fù)對(duì)組成的解,當(dāng)模型訓(xùn)練完這些負(fù)對(duì)后,將分?jǐn)?shù)矩陣上對(duì)應(yīng)的坐標(biāo)和其對(duì)稱坐標(biāo)設(shè)為無(wú)窮,進(jìn)入下一次迭代并再次使用LAP 得到負(fù)對(duì)用于訓(xùn)練。
在經(jīng)過(guò)一段時(shí)間的訓(xùn)練后,矩陣會(huì)被消耗殆盡,此時(shí)通過(guò)重新運(yùn)行模型再次生產(chǎn)新的分?jǐn)?shù)矩陣。
利用訓(xùn)練后的模型計(jì)算所有樣本對(duì)的距離度量分?jǐn)?shù)矩陣作為矩陣T,其中每個(gè)元素Tij是該模型對(duì)圖像i 和圖像j 是否同類的預(yù)測(cè)概率。
輸入 分?jǐn)?shù)矩陣T;
輸出 用于訓(xùn)練的負(fù)對(duì)。
1)將T 中所有值變?yōu)樨?fù)數(shù),即(-1)×T。因?yàn)長(zhǎng)AP 會(huì)采樣度量差異最小的樣本對(duì),因此將度量分?jǐn)?shù)取反從而采樣度量距離最大的樣本對(duì)。
2)查找T 中與匹配對(duì)對(duì)應(yīng)的所有值,將它們的值設(shè)置為較大正數(shù)(例如10 000),將已訓(xùn)練的樣本對(duì)過(guò)濾。
3)對(duì)于矩陣T 中的每個(gè)值加上K×x,其中x(0 ≤x ≤1)為隨機(jī)值,K 在訓(xùn)練過(guò)程中從1 000 逐漸減小為需要的較小值(例如0.05),這是因?yàn)槿绻皇褂肒(即K=0),模型將始終挖掘最困難的例子,這是不理想的,并且在訓(xùn)練的初期限制算法為模型提供隨機(jī)樣本對(duì),以形成模型的初步識(shí)別能力,在經(jīng)過(guò)一定次數(shù)的迭代后逐漸轉(zhuǎn)變?yōu)長(zhǎng)AP 策略,因此整個(gè)過(guò)程是一個(gè)隨機(jī)采樣慢慢過(guò)渡到LAP采樣的過(guò)程。
4)使用LAP 來(lái)計(jì)算每一行i,從對(duì)應(yīng)的列j 中計(jì)算對(duì)應(yīng)的對(duì),使得總的代價(jià)(所有行的代價(jià)求和)最小。然后將使用選定的(i,j)對(duì)進(jìn)行下一階段的訓(xùn)練。
對(duì)于正對(duì),使用最簡(jiǎn)單的隨機(jī)匹配算法,同時(shí)計(jì)算其錯(cuò)排(derangements)。錯(cuò)排的定義為:考慮一個(gè)有n 個(gè)元素的排列,若一個(gè)排列中所有的元素都不在自己原來(lái)的位置上,那么這樣的排列就稱為原排列的一個(gè)錯(cuò)排。
這是為了保證沒(méi)有圖像會(huì)與自身配對(duì),并且每個(gè)圖像只會(huì)使用一次來(lái)形成樣本對(duì)。
基于LAP的負(fù)樣本挖掘利用負(fù)對(duì)的相似性度量為模型提供更加困難的樣本對(duì),而不是輸入隨機(jī)的樣本對(duì),根據(jù)分?jǐn)?shù)矩陣動(dòng)態(tài)地調(diào)整訓(xùn)練樣本的輸入過(guò)程,并保證簡(jiǎn)單的樣本對(duì)也能得到訓(xùn)練,因此加快了模型的收斂。
本文實(shí)驗(yàn)均在Intel Core i7-8700K@3.70 GHz CPU,16 GB 內(nèi)存,GPU 為Nvidia GTX 1080的平臺(tái)上實(shí)現(xiàn),操作系統(tǒng)為Windows 10(64 bit),代碼在深度學(xué)習(xí)PyTorch環(huán)境下實(shí)現(xiàn)。
損失函數(shù)使用二元交叉熵(Binary Cross Entropy,BCE):
其中:m 為樣本數(shù),yi為第i 個(gè)樣本標(biāo)簽,xi為第i 個(gè)樣本的特征。
評(píng)價(jià)指標(biāo)采用mAP@5(mean Average Precision@5),定義為:
其中:U 是圖像的數(shù)量;P(k)是在截止點(diǎn)k 處的精度(Precision);n 是每張圖片預(yù)測(cè)的數(shù)量;rel(k)是一個(gè)指示函數(shù),如果第k級(jí)的項(xiàng)是相關(guān)的(正確的)標(biāo)簽,則為1,否則為0。精度Precision的定義如下:
其中:TP(True Positive)表示正確分類的正例數(shù)量,F(xiàn)P(False Positive)表示錯(cuò)誤分類的正例數(shù)量。
本文采用的數(shù)據(jù)集為鯨尾數(shù)據(jù)集和細(xì)粒度分類數(shù)據(jù)集CUBU-200-201。其中,鯨尾數(shù)據(jù)集的類別十分不平衡,共有25 361 張圖像用于訓(xùn)練,7 960 張圖像用于測(cè)試。該數(shù)據(jù)集中大多數(shù)是垂直拍攝的鯨尾圖像,如圖3,每個(gè)圖像都具有較高的分辨率,例如1 560×600,但是有一些圖像較為異常,尺寸非常扭曲,比如尺寸失真、拍攝角度不正確以及圖像不清晰等。
通過(guò)對(duì)鯨尾數(shù)據(jù)集的標(biāo)簽分布進(jìn)行統(tǒng)計(jì),發(fā)現(xiàn)其標(biāo)簽分布十分不均衡:在25 361張?chǎng)L魚圖像中,總共有5 005種鯨魚,然而其中有9 664個(gè)屬于未知類別,在該類別中的鯨魚具有不同個(gè)體的特征,因此最簡(jiǎn)單有效的辦法是將所有未知類別樣本從訓(xùn)練集剔除,只對(duì)剩余的5 004 種鯨魚進(jìn)行訓(xùn)練,于是得到有用的圖像數(shù)量有15 697 張,然而在這其中的標(biāo)簽分布也十分不均衡。其中新鯨魚類別的圖像后續(xù)將作為模型未見(jiàn)過(guò)的樣本進(jìn)行驗(yàn)證。
根據(jù)統(tǒng)計(jì),5 004個(gè)類別中有大約2 000個(gè)類別僅有1張圖像,且有大約1 250 個(gè)類別僅有2 張圖像。同時(shí)模型需要捕捉鯨魚尾巴劃痕圖案的微小特征差異來(lái)對(duì)鯨魚身份進(jìn)行辨認(rèn),這對(duì)模型的性能有一定要求。
圖3 數(shù)據(jù)集中部分垂直拍攝的鯨尾圖像Fig.3 Some images of whale tail taken vertically in the dataset
使用Adam 優(yōu)化器(optimizer),采用動(dòng)態(tài)學(xué)習(xí)率,初始取值為64×10-5,之后每100 個(gè)epoch 減半,l2 正則化參數(shù)設(shè)為2×10-4;LAP 中的K 值初始為1 000,10 個(gè)epoch 后設(shè)為100,150 個(gè)epoch 后設(shè)為1,之后每50 個(gè)epoch 減半,總計(jì)訓(xùn)練200個(gè)epoch。
模型編碼器使用在ImageNet[16]預(yù)訓(xùn)練的權(quán)重來(lái)初始化網(wǎng)絡(luò)參數(shù)。
頭部模型結(jié)構(gòu)及參數(shù)如表1所示,其中“”表示輸入層,沒(méi)有被連接對(duì)象。
表1 頭部模型結(jié)構(gòu)及參數(shù)Tab.1 Structure and parameters of head model
使用4 種采樣策略進(jìn)行對(duì)比,并且均使用本文提出的度量計(jì)算方式:
1)SNN:隨機(jī)挑選樣本對(duì);
2)SNN with OHEM:使用OHEM進(jìn)行樣本對(duì)挖掘;
3)SNN with FL:使用焦點(diǎn)損失抑制簡(jiǎn)單樣本對(duì);
4)SNN with LAP:通過(guò)LAP算法挖掘樣本對(duì)。
得到的對(duì)比結(jié)果如表2 所示,而不同采樣策略下的指標(biāo)變化如圖4所示。
其中:焦點(diǎn)損失采用的超參數(shù)為γ=2,α=0.25;難例挖掘采用正負(fù)樣本比例為1∶3。
OHEM 的問(wèn)題在于放棄了大量簡(jiǎn)單樣本,在持續(xù)訓(xùn)練中容易導(dǎo)致模型的學(xué)習(xí)偏差。
焦點(diǎn)損失的問(wèn)題在于數(shù)據(jù)集的樣本之間具有較高的相似性,僅通過(guò)損失難以區(qū)分樣本的難度。
結(jié)果表明,對(duì)于模板匹配模型,基于LAP的難例挖掘采樣策略逐漸為模型提供更困難的樣本對(duì),而不是所有樣本對(duì)的隨機(jī)子集,使得模型能更有效地進(jìn)行學(xué)習(xí)。
同時(shí)由于每次訓(xùn)練重新生成分?jǐn)?shù)矩陣以挑選負(fù)對(duì),因此會(huì)導(dǎo)致指標(biāo)和損失函數(shù)的曲線呈鋸齒狀。
通過(guò)訓(xùn)練不同的編碼器得到結(jié)果如表3 和圖5 所示。圖5中,X軸為epoch,Y軸為損失數(shù)值,同樣由于生成分?jǐn)?shù)矩陣的原因,曲線非常陡峭,但總體仍處于收斂狀態(tài)。
由訓(xùn)練指標(biāo)和損失函數(shù)的對(duì)比結(jié)果可知,本文算法在具有少樣本、未知樣本特點(diǎn)的細(xì)粒度圖像分類問(wèn)題上具有良好的性能,根據(jù)表2和表3可知,相比原型SNN,本文算法在指標(biāo)上取得了良好的性能提升;同時(shí)解碼器對(duì)算法的性能也有較大影響,通過(guò)選擇不同的解碼器對(duì)結(jié)果具有不同影響。
圖4 不同采樣策略的mAP@5變化Fig.4 mAP@5 change of different sampling strategies
表2 不同采樣策略的mAP@5對(duì)比(DenseNet121編碼器)Tab.2 Comparison of mAP@5 by different sampling strategies(DenseNet121 encoder)
模型中間層的可視化如圖6 所示,由模型識(shí)別出的測(cè)試數(shù)據(jù)匹配對(duì)結(jié)果如圖7所示。
表3 不同編碼器的mAP@5對(duì)比Tab.3 Comparison of mAP@5 by different encoders
圖5 不同編碼器下的損失函數(shù)變化Fig.5 Loss function change in different encoders
CUB-200-2011 是一個(gè)細(xì)粒度分類數(shù)據(jù)集,在CUB-200-2011 以 召 回 率Recall@1、Recall@2、Recall@4、Recall@8、Recall@16、Recall@32 為指標(biāo)得到的結(jié)果如表4 所示。由表4可以看出,直接對(duì)整個(gè)數(shù)據(jù)集使用難例挖掘難以取得指標(biāo)上的提升。而利用線性分配采樣策略在Recall@1 上對(duì)比隨機(jī)采樣策略,取得了4.2 個(gè)百分點(diǎn)的指標(biāo)提升,說(shuō)明線性分配采樣策略對(duì)于實(shí)用性具有良好的提升作用;并且在Recall@4 上具有最高的指標(biāo)提升(6.3個(gè)百分點(diǎn))。
圖6 輸入樣本的特征激活可視化熱圖Fig.6 Heatmap of visualization of input sample features activation
圖7 匹配結(jié)果Fig.7 Matching results
表4 在CUB-200-2011數(shù)據(jù)集上的召回率對(duì)比 單位:%Tab.4 Comparison of recall on CUB-200-2011 dataset unit:%
本文針對(duì)深度學(xué)習(xí)中的細(xì)粒度識(shí)別和一次學(xué)習(xí)問(wèn)題,對(duì)孿生神經(jīng)網(wǎng)絡(luò)的訓(xùn)練過(guò)程和距離度量進(jìn)行改進(jìn),并在一個(gè)具有少樣本、未知樣本特點(diǎn)的細(xì)粒度鯨魚圖像分類數(shù)據(jù)集和細(xì)粒度分類數(shù)據(jù)集CUB-200-2011 上取得了良好效果。但本文方法仍有改進(jìn)之處,如利用LAP 進(jìn)行難負(fù)樣本挖掘的耗時(shí)較長(zhǎng),在其后生成的熱圖也表明圖片中的噪聲(例如背景中的飛鳥(niǎo))會(huì)讓模型錯(cuò)誤地提取特征。但就總體而言,模型可以正確地提取圖像的細(xì)粒度特征,因此大多數(shù)圖像可以得到有效識(shí)別。同時(shí)利用本文方法需要額外花費(fèi)算力生成分?jǐn)?shù)矩陣,并且計(jì)算LAP也需要一定計(jì)算量,因此會(huì)相對(duì)耗時(shí),后續(xù)的改進(jìn)工作會(huì)圍繞速度方面進(jìn)行。