楊 璐,吳 陳
(江蘇科技大學(xué) 計算機學(xué)院,江蘇 鎮(zhèn)江 212003)
目標檢測是計算機視覺處理和機器學(xué)習(xí)中一個重要的課題。目標檢測(object detection)即檢測圖片中的目標物體,輸出圖像中所有目標的坐標框,同時輸出每個目標的具體類別。傳統(tǒng)目標檢測的方法通常經(jīng)歷以下步驟:首先在圖片上對圖像進行分割,找出幾千個候選的區(qū)域,然后計算標簽與框的重合度篩選出一部分候選框,再通過SIFT(scale-invariant feature transform)[1]方法對這些候選框進行特征提取,然后訓(xùn)練分類器將特征區(qū)域進行分類輸出。首先需要提取圖像中目標的位置信息,一張圖像中目標的位置是不確定的,可能出現(xiàn)在圖像的任何位置,加上目標的形狀大小比例都是任意的,因此傳統(tǒng)的滑動窗口方法需要設(shè)計不同大小比例的窗口,以固定步幅滑動窗口,遍歷整幅圖像的每個區(qū)域。很顯然這種方法存在實效性低與計算量過大的缺點,并不適用于實時性要求較高的分類器,更無法應(yīng)用到實際場景當中。在實際計算時,出于對計算成本和后續(xù)性能的考慮,設(shè)計時窗口的大小比例只能設(shè)置為固定的一些窗口,對于圖像中大小各異形狀不定的目標來說,滑動窗口并不能很好地將候選區(qū)域全部篩選出來。對于復(fù)雜實際場景來說,特征的魯棒性至關(guān)重要。提取特征的質(zhì)量直接影響到最終輸出分類的準確性,代表性的特征有SIFT(scale-invariant feature transform)、Haar[2]、HOG(histogram of oriented gradient)[3]、Strip[4]等。分類器主要有Adaboost[5]、SVM(support vector machine)[6]、DPM(deformable parts model)[7]、RF(random forest)[8]等。傳統(tǒng)目標檢測存在的兩個主要問題:一是基于滑動窗口的區(qū)域選擇策略沒有針對性,時間復(fù)雜度高,窗口冗余;二是手工設(shè)計的特征對于多樣性的變化并沒有很好的魯棒性。
隨著深度學(xué)習(xí)的發(fā)展,卷積神經(jīng)網(wǎng)絡(luò)(convolution neural network,CNN)掀起研究熱潮,隨之候選區(qū)域(region proposal)算法的研究使得目標檢測算法的研究得到了突破性的發(fā)展。2014年,RBG(Ross B. Girshick)使用region proposal+CNN代替?zhèn)鹘y(tǒng)目標檢測使用的滑動窗口+手工設(shè)計特征,設(shè)計了R-CNN框架,使得目標檢測取得巨大突破,并開啟了基于深度學(xué)習(xí)目標檢測的熱潮[9]。SSD(single shot multibox detector)算法[10]便是深度學(xué)習(xí)網(wǎng)絡(luò)應(yīng)用于目標檢測的實例之一。SSD是一階段的目標檢測算法框架,與之前主流的Faster RCNN[11]等二階段網(wǎng)絡(luò)框架不同的是,SSD框架不再需要在一階段通過RPN(region proposal network)來生成候選區(qū)域,因此SSD算法從輸入圖像開始到最后的輸出結(jié)果只需要一個階段,相較于之前極大改善了檢測速度,也降低了網(wǎng)絡(luò)訓(xùn)練成本。
文中以SSD算法框架為基礎(chǔ),通過輸入不同的訓(xùn)練集針對人臉進行檢測識別,對比不同訓(xùn)練集直接對訓(xùn)練結(jié)果產(chǎn)生的影響,從而找出最佳人臉檢測識別方案。
SSD算法是端到端的圖像目標檢測方法,和兩階段目標檢測模型對比,最主要的不同是不再需要在一階段生成候選區(qū)域再進行分類。因此,SSD算法從訓(xùn)練數(shù)據(jù)輸入開始,會直接在網(wǎng)絡(luò)中提取特征來預(yù)測物體分類和位置,以降低網(wǎng)絡(luò)訓(xùn)練成本,提高檢測速度。與兩階段目標檢測算法相比,該網(wǎng)絡(luò)框架不需要先生成候選框再進行分類,使得網(wǎng)絡(luò)從輸入到輸出為一個端到端的網(wǎng)絡(luò)結(jié)構(gòu)。針對不同大小的目標檢測,傳統(tǒng)的做法是先將圖像轉(zhuǎn)換成不同大小(圖像金字塔),然后分別檢測,最后將結(jié)果綜合起來(NMS)。SSD算法利用不同卷積層的特征層進行綜合也能達到同樣的效果。算法的主網(wǎng)絡(luò)結(jié)構(gòu)是VGG16[12],將最后兩個全連接層改成卷積層,并隨后增加了4個卷積層來構(gòu)造網(wǎng)絡(luò)結(jié)構(gòu)。對其中5種不同的卷積層的輸出(特征層)分別用兩個不同的3×3的卷積核進行卷積,一個輸出分類用的置信度,每個默認框生成21個類別置信度;一個輸出回歸用的localization,每個默認框生成4個坐標值(x,y,w,h)。
圖1 SSD網(wǎng)絡(luò)框架
SSD算法框架核心之一是同時采用lower和upper的特征層做檢測。如圖1所示,這里假定有8×8和4×4兩種不同的特征層。
第一個概念是特征層格子,特征層格子是指特征層中每一個小格子,如圖中分別有64和16個格子。另外有一個概念:默認框,是指在特征層的每個小格上都有一系列固定大小的默認框。假設(shè)每個特征層格子有k個默認框,那么對于每個默認框都需要預(yù)測c個類別得分和4個位置信息,那么如果一個特征層的大小是m×n,也就是有m×n個特征層格子,那么這個特征層就一共有(c+4)*k*m*n個輸出。這些輸出個數(shù)的含義是:采用3×3的卷積核對該層的特征層卷積時卷積核的個數(shù),包含兩部分(實際code是分別用不同數(shù)量的3*3卷積核對該層特征層進行卷積):數(shù)量c*k*m*n是置信度輸出,表示每個默認框的置信度,也就是類別的概率;數(shù)量4*k*m*n是定位位置輸出,表示每個默認框回歸后的坐標。訓(xùn)練中還有一個概念:候選框,是指實際中選擇的默認框在訓(xùn)練過程中并不是每一個特征層格子里的k個默認框都被選取。也就是說默認框是一種概念,候選框則是實際的選取。訓(xùn)練中一張完整的圖片送進網(wǎng)絡(luò)獲得各個特征層,對于正樣本訓(xùn)練來說,需要先將候選框與標注框做匹配,匹配成功說明這個候選框所包含的是個目標,但離完整目標的標注框還有段距離,訓(xùn)練的目的是保證默認框的分類置信度的同時將候選框盡可能回歸到標注框。對于默認框的尺度大小和橫縱比,假設(shè)用m個特征層做預(yù)測,對于每個特征層而言其默認框的尺度大小按以下公式計算:
第一層的特征層對應(yīng)的min_size=S1,max_size=S2;第二層min_size=S2,max_size=S3;這里Smin是0.2,表示最底層的scale是0.2;Smax是0.9,表示最高層的尺度大小是0.9。至于橫縱比,用ar表示,注意這里一共有5種橫縱比:
ar={1,2,3,1/2,1/3}
則每一個默認框的寬度、高度計算如下:
另外當橫縱比為1時,還增加一種尺度的默認框:
因此,對于每個特征層的格子而言,一共有6種默認框??梢钥闯鲞@種默認框在不同的特征層有不同的尺度大小,在同一個特征層又有不同的橫縱比,因此基本上可以覆蓋輸入圖像中的各種形狀和大小的目標。對于第一層特征,給定了min_size和max_size,剩余五層之間的間隔為step。step其實指定的是feature對應(yīng)到原圖的一種計算中間數(shù)。min_ratio和max_ratio是原圖的尺寸比例,可以理解為,(對于300×300的SSD)最小的默認框面積為0.2×300×300,最大為0.9×300×300。各特征層上的默認框參數(shù)見表1。
表1 各特征層上的默認框參數(shù)
在目標檢測中,常會利用非極大值抑制算法(non maximum suppression,NMS)對生成的大量候選框進行后處理[13],去除冗余的候選框,得到最佳檢測框,以加快目標檢測的效率。其本質(zhì)思想是搜索局部最大值,抑制非極大值。非極大值抑制,在計算機視覺任務(wù)中得到了廣泛的應(yīng)用,例如邊緣檢測、人臉檢測、目標檢測(DPM,YOLO,SSD,F(xiàn)aster R-CNN)等。通過NMS算法合并策略得到一個人臉的最終檢測框,NMS進行合并時主要參考置信度(socre)與IOU(intersection over union)這2個指標[14]。
在訓(xùn)練時,標注框與默認框按照如下方式進行配對:首先,尋找與每一個標注框有最大的重合IOU的默認框,這樣就能保證每一個標注框與唯一一個默認框?qū)?yīng)起來。然后SSD又將剩余還沒有配對的默認框與任意一個標注框嘗試配對,只要兩者之間的重合IOU大于閾值,就認為匹配上,在SSD 300網(wǎng)絡(luò)框架中閾值為0.5。
SSD在各檢測層生成不同尺寸的預(yù)測框,選取IOU大于0.5的預(yù)測框作為正樣本,IOU小于0.5的預(yù)測框作為負樣本。因此大目標物體上覆蓋IOU大于0.5的預(yù)測框多,正負樣本均衡。而小目標上覆蓋IOU大于0.5的預(yù)測框少,導(dǎo)致小目標物體正負樣數(shù)量失衡,不利于小目標物體訓(xùn)練。直接訓(xùn)練會導(dǎo)致網(wǎng)絡(luò)過于重視負樣本,從而損失loss不穩(wěn)定。所以SSD在訓(xùn)練時會依據(jù)置信度和得分對默認框排序,挑選其中置信度高的候選框進行訓(xùn)練,控制正樣本:負樣本=1∶3。
和Faster RCNN中的損失函數(shù)原理相同,損失函數(shù)由分類和回歸兩部分組成?;貧w部分的損失是希望預(yù)測的框和候選框的差距盡可能跟標注框和候選框的差距接近,這樣預(yù)測的框就能盡量和標注框一樣。
實驗涉及到2種數(shù)據(jù)集,分別是PASCAL VOC2102和FDDB標準數(shù)據(jù)集。其中PASCAL VOC2102數(shù)據(jù)集是視覺對象的分類識別和檢測的一個基準測試,提供了檢測算法和學(xué)習(xí)性能的標準圖像注釋數(shù)據(jù)集和標準的評估系統(tǒng)。其中訓(xùn)練集以帶標簽圖片的形式給出。這些物體包括20類(person,bird,cat,cow,dog,horse,sheep,aeroplane,bicycle,boat,bus,car,motorbike,train,bottle,chair,dining table,potted plant,sofa,tv/monitor)。FDDB數(shù)據(jù)集主要用于約束人臉檢測研究,該數(shù)據(jù)集選取野外環(huán)境中拍攝的2 845幅圖像,從中選擇5 171個人臉圖像。圖片包含了各種姿態(tài)、光照、背景。里面的人臉包含各種表情、動作和遮擋,因此很貼近現(xiàn)實中的識別場景。是一個應(yīng)用廣泛、權(quán)威的人臉檢測平臺。
(1)收集公開數(shù)據(jù),根據(jù)源信息選出人臉數(shù)據(jù)構(gòu)建數(shù)據(jù)集;
(2)根據(jù)本實驗情況,設(shè)計含噪聲數(shù)據(jù)集,編寫批處理腳本,按比例混合不同的數(shù)據(jù)集;
(3)基于MXNet框架設(shè)計SSD網(wǎng)絡(luò),前置網(wǎng)絡(luò)選擇VGG16和Resnet;
(4)使用im2rec工具,將原始數(shù)據(jù)集和含噪聲數(shù)據(jù)集轉(zhuǎn)換成適用于MXNet數(shù)據(jù)迭代器的版本;
(5)進行多輪迭代訓(xùn)練,各輪訓(xùn)練時,設(shè)置不同的batch和迭代次數(shù),并生成多個模型;
(6)對于訓(xùn)練好的各模型,采用各數(shù)據(jù)集的驗證集數(shù)據(jù)進行驗證,比較各模型的人臉mAP指標。
在實驗過程中發(fā)現(xiàn),純?nèi)四様?shù)據(jù)集在訓(xùn)練過程中存在過擬合現(xiàn)象,為改善這種現(xiàn)象,在輸入數(shù)據(jù)集中加入噪聲,增強模型的泛化能力,實現(xiàn)在網(wǎng)絡(luò)迭代訓(xùn)練過程中降噪的效果。其中降噪原理為L1正則化。
正則化技術(shù)廣泛應(yīng)用在機器學(xué)習(xí)和深度學(xué)習(xí)算法中,其本質(zhì)作用是防止過擬合、提高模型泛化能力。過擬合,簡單理解就是訓(xùn)練的算法模型太過復(fù)雜,過分考慮了當前樣本結(jié)構(gòu)。正則化是防止過擬合的一種技術(shù)手段,其基本思想是使網(wǎng)絡(luò)變小。網(wǎng)絡(luò)變小之后,網(wǎng)絡(luò)的擬合能力隨之降低,這會使網(wǎng)絡(luò)不容易過擬合到訓(xùn)練集。
文中將訓(xùn)練數(shù)據(jù)分為兩組,一組為FDDB數(shù)據(jù)集,一組為加入負樣本后的數(shù)據(jù)集,在訓(xùn)練模型中生成噪聲,改善模型過擬合的問題。在人臉檢測中,根據(jù)人臉框和置信度得分來判斷性能。mAP(mean average precision)是用于評價Faster R-CNN,SSD等物體檢測器準確率的指標,是指不同召回率下最大精度的平均值。精準率用于衡量預(yù)測結(jié)果的準確性,即正確的預(yù)測結(jié)果占所有預(yù)測結(jié)果的比例。召回率用于衡量正確預(yù)測結(jié)果的好壞,即正確的預(yù)測結(jié)果占所有正確結(jié)果的比例。AP(平均精確率)是這n個召回率對應(yīng)的最大精確率的平均:
實驗效果對比見表2。
表2 不同數(shù)據(jù)集人臉檢測mAp性能對比
加入噪聲后訓(xùn)練結(jié)果對比見圖2。
圖2 加入噪聲后訓(xùn)練結(jié)果對比
文中闡述了SSD框架的工作原理及針對人臉檢測的數(shù)據(jù)集。前期通過腳本和工具對采集的數(shù)據(jù)集進行預(yù)處理以適用于訓(xùn)練平臺MXnet。對于在訓(xùn)練過程中產(chǎn)生的過擬合現(xiàn)象,采用在輸入數(shù)據(jù)集中加入負樣本產(chǎn)生噪聲,通過L1正則化產(chǎn)出稀疏模型的方法提高模型的泛化能力,實現(xiàn)在網(wǎng)絡(luò)迭代訓(xùn)練過程中降噪的效果,防止模型陷入過擬合。實驗結(jié)果表明,在加入噪聲后,mAp得到提高,尤其是小目標與遮擋目標檢測率得到明顯改善。