趙天暉
(北方工業(yè)大學(xué) 信息學(xué)院,北京 100144)
深度學(xué)習(xí)在計(jì)算機(jī)視覺中有著很多應(yīng)用,比如,交通領(lǐng)域中的無人智能駕駛,醫(yī)學(xué)領(lǐng)域中的醫(yī)療圖像智能診斷,教育領(lǐng)域中的學(xué)生注意力檢測(cè)等。目標(biāo)識(shí)別中的人臉檢測(cè)、車輛檢測(cè)和行人計(jì)數(shù)已經(jīng)成熟地運(yùn)用到社會(huì)生活中的方方面面。
在智能家居領(lǐng)域,通過目標(biāo)識(shí)別方法來識(shí)別衣物種類,可以將整個(gè)方案與空調(diào)控制臺(tái)相結(jié)合。通過攝像頭識(shí)別出人身穿的衣物種類從而調(diào)節(jié)空調(diào)的溫度,實(shí)現(xiàn)真正的不用手動(dòng)操作的智能家居。
截至今日,目標(biāo)檢測(cè)體系逐漸趨于成熟。目標(biāo)檢測(cè)模型主要分為兩大類別:兩階段模型和單階段模型。知名的R-CNN 系列目標(biāo)檢測(cè)模型作為兩階段模型的代表,其主要做法是:首先,將輸入的圖片劃分區(qū)域,獲得數(shù)個(gè)候選框,再對(duì)每個(gè)候選框進(jìn)行分類,最后回歸出每個(gè)目標(biāo)的檢測(cè)范圍。但兩階段模型在計(jì)算效率方面并不占優(yōu),難在短時(shí)間內(nèi)獲得有效的目標(biāo)檢測(cè)結(jié)果,并不能適用于智能家居領(lǐng)域的實(shí)時(shí)檢測(cè)。
不同于兩階段模型,Yolo 模型和SSD 模型作為單階段模型的代表,可以在網(wǎng)絡(luò)中直接檢測(cè)出目標(biāo)的位置和種類及其置信度。這一操作使得目標(biāo)檢測(cè)的時(shí)間大大減少,令目標(biāo)檢測(cè)的實(shí)時(shí)性成為可能。由于單階段目標(biāo)檢測(cè)模型在步驟上相較于雙階段模型少了一步,所以精度上較后者略遜一籌。
衣物識(shí)別將是未來智能家居領(lǐng)域的關(guān)鍵技術(shù)之一??紤]到智能家居應(yīng)用中硬件條件的限制,需要使用輕量級(jí)網(wǎng)絡(luò)來代替復(fù)雜網(wǎng)絡(luò)進(jìn)行衣物識(shí)別過程,進(jìn)而減輕對(duì)硬件資源、規(guī)模以及性能的要求。目前,YoloV3 模型相對(duì)還比較復(fù)雜。另一方面,與普通的日常照片圖像比較,衣物的圖像中干擾要素較多,比如光線、角度、衣物材質(zhì)等,這些因素將直接影響衣物識(shí)別效果與準(zhǔn)確率。
綜上,有必要對(duì)YoloV3 目標(biāo)識(shí)別模型進(jìn)行改進(jìn)。本文提出以EfficientNet 作為主干提取網(wǎng)絡(luò)替換YoloV3 原有的主干提取網(wǎng)絡(luò)Darknet,增加特征提取網(wǎng)絡(luò)的深度、寬度以及分辨率,在保證整個(gè)深度神經(jīng)網(wǎng)絡(luò)參數(shù)更少、更輕量化的同時(shí),提高衣物識(shí)別的準(zhǔn)確率。
深度學(xué)習(xí)需要大量的訓(xùn)練數(shù)據(jù)作為支撐。選擇一個(gè)數(shù)據(jù)豐富、質(zhì)量尚佳的數(shù)據(jù)集對(duì)未來的深度學(xué)習(xí)中訓(xùn)練出精度高的模型起著至關(guān)重要的作用。本文采用的是DeepFashion2 數(shù)據(jù)集,該數(shù)據(jù)集作為當(dāng)前最大的衣物數(shù)據(jù)集,包含著49.1 萬張有關(guān)衣物的圖像,其中包含80.1 萬件服飾,囊括了13 種流行的服飾類別。該數(shù)據(jù)集不僅適用于衣物檢測(cè)和識(shí)別,還可以用于姿態(tài)估計(jì)和語義分割等工作。
本文的改進(jìn)方案是將EfficientNet 作為YoloV3 的特征提取網(wǎng)絡(luò),并且保留原有的多尺度融合的結(jié)構(gòu),保證了無論衣物在圖像中或大或小,都可以獲得比較好的識(shí)別準(zhǔn)確率。
卷積神經(jīng)網(wǎng)絡(luò)可以通過不斷擴(kuò)大網(wǎng)絡(luò)的規(guī)模來實(shí)現(xiàn)更高的識(shí)別準(zhǔn)確率。例如,ResNet-18 通過加深網(wǎng)絡(luò)層數(shù)達(dá)到ResNet-200,這使得在ImageNet top-1 上取得84.3%的mA 均值平均精度。目前為止,有許多不同的方法來擴(kuò)展卷積神經(jīng)網(wǎng)絡(luò),常見的方法有擴(kuò)展網(wǎng)絡(luò)的深度和網(wǎng)絡(luò)的寬度,最近新興起來的方法還有改變輸入圖像的分辨率來讓網(wǎng)絡(luò)能提取更多的特征。在之前的深度學(xué)習(xí)工作中,只使用3個(gè)方法之一來進(jìn)行神經(jīng)網(wǎng)絡(luò)的縮放。后來,不斷進(jìn)化成對(duì)兩個(gè)維度任意縮放調(diào)整,但是這個(gè)過程非常繁瑣,同時(shí)也許需要考慮縮放過程中苛刻的條件,最主要的就是精度和效率,實(shí)驗(yàn)后的結(jié)果還不一定優(yōu)于改進(jìn)前的網(wǎng)絡(luò)。
圖1 DeepFashion2數(shù)據(jù)集圖像Fig.1 Images of DeepFashion2 dataset
圖2 EfficientNet擴(kuò)大網(wǎng)絡(luò)規(guī)模示意圖Fig.2 Schematic diagram of EfficientNet expanding network scale
EfficientNet 也考慮如何擴(kuò)大卷積神經(jīng)網(wǎng)絡(luò)的規(guī)模來獲得更高的準(zhǔn)確率和效率,實(shí)驗(yàn)最終獲得的結(jié)果是同時(shí)平衡網(wǎng)絡(luò)深度、網(wǎng)絡(luò)寬度和輸入圖像的分辨率三者對(duì)精度、參數(shù)量和浮點(diǎn)運(yùn)算量進(jìn)行提高和優(yōu)化。將EfficientNet 中的第i 個(gè)卷積層看作函數(shù)映射:
Yi為輸出張量,Xi為輸入張量。假設(shè)輸入圖像的高度為Hi,圖像寬度為Wi,圖像的通道數(shù)為Ci,定義整個(gè)卷積網(wǎng)絡(luò)N 是由k 個(gè)卷積層構(gòu)成的,所以將N 表示為:
一般情況下,一個(gè)深度神經(jīng)網(wǎng)絡(luò)模型是有多個(gè)相同的卷積層存在,多個(gè)結(jié)構(gòu)相同的卷積層組成一個(gè)階段,然后以階段為單位,那么深度卷積網(wǎng)絡(luò)就可以定義為:
這里面的1…s 表示階段的不同類型,F(xiàn)i代表的是對(duì)第i 層的卷積操作,Li代表的是Fi在第i 個(gè)階段中相同結(jié)構(gòu)卷積層的個(gè)數(shù)。為了避免搜索空間過大,實(shí)驗(yàn)過程中首先固定了卷積網(wǎng)絡(luò)的基本結(jié)構(gòu),只需要改變上述公式中的3 個(gè)縮放的維度:
1)Li的縮放改變的是網(wǎng)絡(luò)的深度,Li越大意味著重復(fù)的卷積層數(shù)量越多,代表著卷積神經(jīng)網(wǎng)絡(luò)的深度增加。
2)Ci的縮放改變的是輸入圖像的通道數(shù),那么網(wǎng)絡(luò)的寬度也將跟著改變。
3)Hi和Wi的縮放改變的是輸入圖像的分辨率。
這依然有3 個(gè)數(shù)值需要進(jìn)行調(diào)整,搜索空間也非常大,所以EfficientNet 設(shè)計(jì)了一個(gè)條件:在卷積神經(jīng)網(wǎng)絡(luò)中,卷積層只能使用相同的比例常數(shù)來進(jìn)行統(tǒng)一地縮放。這一條件用數(shù)學(xué)語言描述為:
這里面的d、w、r 分別代表著網(wǎng)絡(luò)深度、網(wǎng)絡(luò)寬度、輸入圖像分辨率的縮放的常數(shù)倍率。根據(jù)公式,需要在運(yùn)算內(nèi)存和運(yùn)行運(yùn)算效率的約束下來優(yōu)化d、w 和r,從而得到識(shí)別最高的精度。EfficientNet 提出了一種新的復(fù)合縮放方法,使用復(fù)合系數(shù)φ對(duì)網(wǎng)絡(luò)的深度、寬度和輸入圖像的分辨率進(jìn)行均勻縮放,將這3 個(gè)待優(yōu)化的參數(shù)都用φ指數(shù)表示,同時(shí)為了減少網(wǎng)絡(luò)搜索時(shí)的計(jì)算量需要對(duì)底數(shù)做一定的限制,具體的限制公式也包括了FLOPS 方面,d 對(duì)FLOPS 的影響為系數(shù)同等倍數(shù)的影響,而w 和r 對(duì)FLOPS的影響為系數(shù)的平方:
表1 EfficientNet-B0網(wǎng)絡(luò)結(jié)構(gòu)Table 1 EfficientNet-B0 network structure
圖3 MBConv卷積塊具體結(jié)構(gòu)Fig.3 The specific structure of the MBConv convolution block
由這個(gè)公式,通過網(wǎng)絡(luò)搜索的結(jié)構(gòu)搜索出一個(gè)基本結(jié)構(gòu),被稱為EffficientNet-B0,具體結(jié)構(gòu)及細(xì)節(jié)見表1。
表1 中,可知EfficientNet 中是由多個(gè)MBConv 組成實(shí)現(xiàn)的,每一個(gè)MBConv 卷積塊的具體結(jié)構(gòu)如圖3 所示。
接下來從基本結(jié)構(gòu)EfficientNet-B0 開始,通過兩個(gè)步驟來對(duì)模型進(jìn)行擴(kuò)展:
1)首先,固定的系數(shù)使其等于1,然后通過網(wǎng)絡(luò)搜索找到α、β、γ 的最優(yōu)解。假設(shè)有兩倍的可用運(yùn)算資源,搜索后可得基本結(jié)構(gòu)EfficientNet-B0 獲得的α=1.2、β=1.1、γ=1.15。
2)然后,固定第一步的α、β、γ 參數(shù),然后選取不同的φ的取值獲得EfficietnNet-B1 到EfficietnNet-B7 的網(wǎng)絡(luò)結(jié)構(gòu)。
在衣物識(shí)別的深度神經(jīng)網(wǎng)絡(luò)構(gòu)建中,選取的是EfficientNet-B2 模型,該網(wǎng)絡(luò)結(jié)構(gòu)的寬度系數(shù)w 為1.1,網(wǎng)絡(luò)結(jié)構(gòu)的深度系數(shù)d 為1.2,輸入圖像的分辨率系數(shù)為260,這一數(shù)值不僅符合所選用的數(shù)據(jù)集,同時(shí)也充分利用了可調(diào)用的運(yùn)算資源。
YoloV3 中采用3 個(gè)不同的尺度來對(duì)特征圖片進(jìn)行檢測(cè)。整個(gè)網(wǎng)絡(luò)使用了特征金字塔的方案,這樣在不同尺度下對(duì)不同的目標(biāo)進(jìn)行檢測(cè)。3 個(gè)不同的尺度分別為13×13、26×26 和52×52。對(duì)于DeepFashion2 數(shù)據(jù)集中,共有13個(gè)類別,那么每個(gè)預(yù)測(cè)框?qū)?yīng)數(shù)據(jù)集中每一個(gè)種類都會(huì)輸出一個(gè)概率,YoloV3 的網(wǎng)絡(luò)中使每個(gè)單元格可以預(yù)測(cè)3 個(gè)不同尺寸的預(yù)測(cè)框。那么,每個(gè)預(yù)測(cè)框的參數(shù)就有5 個(gè)參數(shù)分別為預(yù)測(cè)物體的中心點(diǎn)橫坐標(biāo)X、縱坐標(biāo)Y、預(yù)測(cè)框的寬度W、高度H 和置信度C。所以,獲得的通道數(shù)為3×(13+5)=54。再采用上采樣的方法來完成多尺度融合的操作。例如,讓13×13 的圖像轉(zhuǎn)換成26×26 的圖像,再與原本的26×26 的圖像進(jìn)行融合,最后進(jìn)行26×26 尺度的目標(biāo)識(shí)別操作。多尺度融合會(huì)對(duì)大小不一的物體的檢測(cè)更加精準(zhǔn)。
YoloV3 目標(biāo)識(shí)別網(wǎng)絡(luò)的主干提取網(wǎng)絡(luò)會(huì)對(duì)輸入圖像進(jìn)行一層一層的特征提取,在特征提取的同時(shí)進(jìn)行著下采樣的操作。特征層不斷壓縮長和寬,提取最后3 個(gè)尺寸的特征層構(gòu)成后面的特征金字塔,若將YoloV3 中的DarkNet53替換成EfficientNet,需要找到EfficientNet 與DarkNet53最后3 個(gè)相同的尺寸的特征層,尺寸分別為(52,52,256),(26,26,512),(13,13,1024)。由 于 原 始YoloV3 中DarkNet53 中通道數(shù)遠(yuǎn)遠(yuǎn)大于EfficientNet 的通道數(shù),這會(huì)使得網(wǎng)絡(luò)變換過大并且促使擬合效果大大降低,所以減小通道數(shù)是較好的選擇,將通道數(shù)減小到60,120 和352。
本課題使用深度學(xué)習(xí)的方法,采用Anaconda 環(huán)境,Python3.6 語言,PyCharm 編輯器進(jìn)行。以數(shù)據(jù)集Deepfashion2 的19.1 萬張圖片作為訓(xùn)練集,驗(yàn)證集為3.2 萬張衣物圖片,最后隨機(jī)選擇1000 張新圖片作為測(cè)試集。
深度學(xué)習(xí)的算法使用了未加改進(jìn)的YoloV3 目標(biāo)檢測(cè)算法和以EfficientNet、DarkNet、GhostNet、FBNet 4 種不同的網(wǎng)絡(luò)為主干提取網(wǎng)絡(luò)改進(jìn)后的YoloV3 目標(biāo)檢測(cè)算法,訓(xùn)練結(jié)果見表2。
圖4 修改后的Yolo算法中的多尺度融合過程Fig.4 The multi-scale fusion process in the modified Yolo algorithm
表2 不同算法對(duì)衣物識(shí)別的結(jié)果對(duì)比Table 2 Comparison of the results of different algorithms for clothing recognition
圖5 EfficientNet為主干提取網(wǎng)絡(luò)的mAP平均精度值結(jié)果圖Fig.5 The result of the average accuracy value of mAP of the EfficientNet backbone extraction network
由表2 可見,以EfficientNet 為主干提取網(wǎng)絡(luò)的YoloV3的目標(biāo)檢測(cè)算法在Deepfashion2 數(shù)據(jù)集上由良好的表現(xiàn),且后續(xù)在測(cè)試的過程中也沒有發(fā)生過擬合等現(xiàn)象。
圖6 衣物實(shí)時(shí)檢測(cè)截圖Fig.6 Screenshot of real-time clothing detection
訓(xùn)練結(jié)果證明本課題進(jìn)行的研究方法是有效的,對(duì)提高衣物識(shí)別的速度和減輕識(shí)別網(wǎng)絡(luò)的體積具有意義。在識(shí)別短袖衣服、長褲、短褲等方面具有良好的分類效果。而在識(shí)別夾克外套、短裙等方面容易出現(xiàn)偏差,造成這一現(xiàn)象的主要原因是數(shù)據(jù)集的類別分布不均。
改進(jìn)前的YoloV3 算法的平均精度值為58.74%,EfficientNet 作為主干的特征提取網(wǎng)絡(luò)的算法將平均精度值提高到59.78%,同時(shí)參數(shù)量FLOPS 由62B 降低到約2B。實(shí)時(shí)監(jiān)測(cè)的速度可以達(dá)到29.96 幀每秒,高于改進(jìn)之前的27.45 幀每秒,同時(shí)良好地保證了識(shí)別的準(zhǔn)確率。