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