劉羅成,劉正熙,熊運(yùn)余
(四川大學(xué)計(jì)算機(jī)學(xué)院,成都610065)
隨著國(guó)內(nèi)現(xiàn)代化、城市化的進(jìn)程加快,城市中的店鋪等商業(yè)活動(dòng)越來(lái)越多,使得城市中的廣告牌數(shù)量與日俱增,隨之而來(lái)的是違規(guī)擺放廣告牌的現(xiàn)象也越來(lái)越嚴(yán)重。為了清理這些違規(guī)廣告牌,目前的主要方法是大量雇傭城管來(lái)監(jiān)視和管理,當(dāng)然視頻監(jiān)控也是管理違規(guī)廣告牌的有效手段之一,但是不免需要人工不斷監(jiān)視視頻和處理相關(guān)問(wèn)題,這些方法都存在費(fèi)時(shí)費(fèi)力的缺點(diǎn)。為了更好地節(jié)省管理違規(guī)廣告牌的人力成本,亟需一種高效輔助人工進(jìn)行監(jiān)控管理的方法。
對(duì)于廣告牌的檢測(cè),一般可以使用傳統(tǒng)的機(jī)器學(xué)習(xí)目標(biāo)檢測(cè)算法或者是基于深度學(xué)習(xí)的目標(biāo)檢測(cè)算法。傳統(tǒng)的機(jī)器學(xué)習(xí)目標(biāo)檢測(cè)算法基于特征提取,一般流程如下:在待檢測(cè)圖片上通過(guò)采用滑動(dòng)窗口的方法設(shè)定大小不同的候選框,利用HAAR[1]、HOG[2]、DPM[3]等特征提取方法對(duì)每個(gè)窗口中的局部信息進(jìn)行特征提取,在特征提取后,對(duì)候選區(qū)域提取出的特征送入SVM[4]等的分類器中進(jìn)行分類判定。在分類判定過(guò)程中,如果單類別檢測(cè)只需要區(qū)分當(dāng)前的候選框中包含的對(duì)象是背景還是目標(biāo),而對(duì)于多分類不免會(huì)產(chǎn)生重疊的候選框,這時(shí)需要通過(guò)NMS 來(lái)對(duì)候選框進(jìn)行合并抑制,去掉多余的候選框,計(jì)算出各個(gè)類別的候選框,最終完成目標(biāo)檢測(cè)。
從傳統(tǒng)目標(biāo)檢測(cè)算法流程可以看到一些缺點(diǎn):首先手工設(shè)計(jì)特征,這些特征一般獲取的是低層次和中層次的特征,表達(dá)能力較差,對(duì)于多樣性的變化沒(méi)有很好的魯棒性,而且基于滑動(dòng)窗口的區(qū)域選擇策略沒(méi)有針對(duì)性,檢測(cè)結(jié)果也不盡人意。
隨著近年來(lái)的深度學(xué)習(xí)的迅速發(fā)展,基于卷積神經(jīng)網(wǎng)絡(luò)的目標(biāo)檢測(cè)算法也得到很大的突破,與傳統(tǒng)機(jī)器學(xué)習(xí)目標(biāo)檢測(cè)算法相比,最主要的是在檢測(cè)精度上得到很大的提升,這得益于其強(qiáng)大的深層次的特征提取能力??紤]到基于卷積神經(jīng)網(wǎng)絡(luò)的目標(biāo)檢測(cè)算法的優(yōu)點(diǎn),本文也選用了這類目標(biāo)檢測(cè)算法。
基于深度學(xué)習(xí)的目標(biāo)檢測(cè)算法大體可分為One Stage 和Two Stage 兩種類別。其中One Stage 的目標(biāo)檢測(cè)速度較快,但精度比Two Stage 較低,如YOLOv3[5]等;而Two Stage 的目標(biāo)檢測(cè)精度較高,但檢測(cè)速度較慢,如Faster R-CNN[6]等。在選用何種基于深度學(xué)習(xí)的目標(biāo)檢測(cè)算法,本文主要從速度方面考慮,因?yàn)槔^本文的下一步研究是想達(dá)到實(shí)時(shí)性,所以本文最終選擇YO?LOv3 作為目標(biāo)檢測(cè)部分的算法。
如今,無(wú)論在哪個(gè)城市中,廣告牌好像是必不可缺少的一部分,但是在人行道中間和車行道上擺放的廣告牌嚴(yán)重阻礙了交通環(huán)境而且抹黑了市容,如圖1 所示。如果在特定區(qū)域,例如某條街道上,使用固定攝像頭拍到的廣告牌都是違規(guī)擺放,這種情況下只需使用目標(biāo)檢測(cè)算法就可以檢測(cè)到違規(guī)擺放的廣告牌,但是現(xiàn)實(shí)中,監(jiān)控的攝像頭都是轉(zhuǎn)動(dòng)的,拍到的區(qū)域都不是特定的,所以拍到的廣告牌有些不是違規(guī)擺放的,這種情況下,需要判定檢測(cè)到的廣告牌是否處于阻礙交通的位置是一項(xiàng)具有挑戰(zhàn)性的任務(wù)。
為了劃分城市道路區(qū)域,本文使用語(yǔ)義分割算法。語(yǔ)義分割是在像素級(jí)別上的分類,屬于同一類的像素都要被歸為一類,因此語(yǔ)義分割是從像素級(jí)別來(lái)理解圖像的。在深度學(xué)習(xí)應(yīng)用到計(jì)算機(jī)視覺(jué)領(lǐng)域之前,研究人員一般使用紋理基元森林(Texton Forest)或是隨機(jī)森林(Random Forest)方法來(lái)構(gòu)建用于語(yǔ)義分割的分類器。2014 年,Long 等人提出的FCN(Fully Con?volutional Networks)[7]是首次將CNN 網(wǎng)絡(luò)用于語(yǔ)義分割,這種網(wǎng)絡(luò)將目標(biāo)識(shí)別的AlexNet[8]網(wǎng)絡(luò)的最后的全連接層改為卷積層,使用反卷積層進(jìn)行上采樣并且提出了跳躍連接來(lái)改善上采樣,在性能上,比傳統(tǒng)采用區(qū)域特征提取的圖像分割方法有顯著提升。隨后幾年,一系列優(yōu)秀的語(yǔ)義分割模型層出不窮,如SegNet[9]、PSPNet[10]、DeepLabv3+[11]等。本文使用的語(yǔ)義分割模型是精度比較高的DeepLabv3+。
本文將違規(guī)擺放廣告牌簡(jiǎn)化成圖1 所示的兩種情況,為了能夠準(zhǔn)確檢測(cè)到這兩類違規(guī)廣告牌,本文使用兩個(gè)子網(wǎng)絡(luò),一個(gè)是YOLOv3,用于檢測(cè)出圖片中的廣告牌;另一個(gè)DeepLabv3+,用于分割城市道路區(qū)域,最后結(jié)合這兩個(gè)算法的結(jié)果判斷出廣告牌是否處于人行道中間或者車行道,進(jìn)而來(lái)判斷是否屬于違規(guī)擺放。在進(jìn)一步提高檢測(cè)速度的嘗試中,筆者比較了兩種Backbone 的YOLOv3,發(fā)現(xiàn)更加簡(jiǎn)單的MobileNetv1[12]與默認(rèn)使用DarkNet53 相比,模型更輕量,檢測(cè)速度更快,檢測(cè)精度相差無(wú)幾,所以最后選用MobileNetv1 作為YOLOv3 的Backbone。兩個(gè)網(wǎng)絡(luò)的最終測(cè)試結(jié)果中,YOLOv3 的mAP 為70.27%,DeepLabv3+的mIOU為0.7854,能達(dá)到高效輔助工作人員的目的。
圖1
在目標(biāo)檢測(cè)網(wǎng)絡(luò)快速發(fā)展的歷史上,YOLO 系列的目標(biāo)檢測(cè)網(wǎng)絡(luò)無(wú)疑是具有代表性一類的網(wǎng)絡(luò),跟SSD[13]等One Stag 網(wǎng)絡(luò)的主要思路一樣,摒棄了Two Stage 中的region proposal 階段,將待檢測(cè)的圖片分割成N×N 個(gè)格子,然后每個(gè)格子負(fù)責(zé)檢測(cè)物體類別,輸出固定數(shù)目的Bounding Box 信息和屬于各種類別的概率信息,并且利用CNN 提取特征后直接進(jìn)行分類和回歸,整個(gè)過(guò)程只需要一步。YOLOv3 的算法是在YOLOv1 和YOLOv2 的基礎(chǔ)上形成,相比較前兩者的研究,YOLOv3 更注重多標(biāo)簽的分類和提高對(duì)小目標(biāo)檢測(cè)精度。
為了將分類任務(wù)由單標(biāo)簽分類改進(jìn)到多標(biāo)簽分類,YOLOv3 將分類器由Softmax 改為L(zhǎng)ogistic。Soft?max 分類器假定各種類之間是互斥關(guān)系,如果一個(gè)對(duì)象屬于一個(gè)類,那么它一定不屬于另一個(gè)類,這在有些數(shù)據(jù)集中表現(xiàn)正常,包括本文的個(gè)人數(shù)據(jù)集,但是在有些數(shù)據(jù)集中,如果一個(gè)對(duì)象同時(shí)屬于幾個(gè)類別,Softmax分類器似乎違背了它的假設(shè)。Logistic 分類器是使用閾值來(lái)預(yù)測(cè)對(duì)象的多個(gè)類別標(biāo)簽,如果該對(duì)象在某個(gè)類別標(biāo)簽的分?jǐn)?shù)高于設(shè)定的閾值時(shí),就將此類標(biāo)簽分配給該對(duì)象。比較兩種分類器的不同的分類原理,YOLOv3 最終選擇Logistic 分類器。
為了對(duì)小目標(biāo)的檢測(cè)結(jié)果更準(zhǔn)確,YOLOv2 和YO?LOv3 都做了一些操作,YOLOv2 中使用Passthrough Layer 和Bounding Box Prior 來(lái)加強(qiáng)對(duì)小目標(biāo)檢測(cè)的精確度;YOLOv3 中除了YOLOv2 中使用的方法外(其中Passthrough Layer 和YOLOv3 使用的殘差網(wǎng)絡(luò)結(jié)構(gòu)原理相似,故如此說(shuō)),最重要的是將YOLOv2 的網(wǎng)絡(luò)主干DarkNet19 換成DarkNet53,在DarkNet53 網(wǎng)絡(luò)主干上,YOLOv3 采用多制度融合和全卷積的方式來(lái)進(jìn)行預(yù)測(cè),這些設(shè)計(jì)讓YOLOv3 的檢測(cè)精度相較YOLOv2 而言更高,速度也沒(méi)有降低。
YOLOv3 默認(rèn)使用的網(wǎng)絡(luò)主干DarkNet53 性能固然優(yōu)秀,但是在本文中,針對(duì)只處理廣告牌這一種類別問(wèn)題,是否可以換用更簡(jiǎn)單的網(wǎng)絡(luò)主干使得檢測(cè)速度更快,精度損失不大來(lái)更好地符合現(xiàn)實(shí)中追求實(shí)時(shí)性的要求,于是選用MobileNetv1 作為YOLOv3 網(wǎng)絡(luò)主干是一個(gè)不錯(cuò)的嘗試。
DarkNet53 的網(wǎng)絡(luò)設(shè)計(jì)具有層次深的特點(diǎn)。Dark?Net53 中的53 這個(gè)數(shù)字是表示此網(wǎng)絡(luò)主干中的卷積層個(gè)數(shù),此網(wǎng)絡(luò)由52 個(gè)卷積層+1 個(gè)全連接層構(gòu)成,其中最后的全連接層是通過(guò)1×1 的卷積實(shí)現(xiàn)的,也算一層卷積層,所以共有53 個(gè)卷積層。從輸入開(kāi)始,先經(jīng)過(guò)兩層卷積層,然后由5 組重復(fù)的殘差單元Residual 構(gòu)成,殘差單元基本構(gòu)件如圖2 所示。每組殘差單元有兩個(gè)卷積層和一個(gè)快捷鏈路構(gòu)成,這5 組殘差單元分別重復(fù)1 次、2 次、8 次、4 次。由于每個(gè)殘差單元的第一個(gè)卷積層是做步長(zhǎng)為2,大小為1×1 的卷積操作,所以整個(gè)殘差網(wǎng)絡(luò)一共降維5 次,共降維25=32 倍。每個(gè)殘差單元會(huì)有三次多尺度融合操作,一系列的組合,使得DarkNet53 相比之前的One Stage 目標(biāo)檢測(cè)網(wǎng)絡(luò)具有更高的精度。
圖2 DarkNet53殘差單元基本構(gòu)件
MobileNetv1 原本就是為了加快網(wǎng)絡(luò)運(yùn)算速度而設(shè)計(jì)的一種輕量化網(wǎng)絡(luò)模型。與DarkNet53 的多層卷積層不同,MobileNetv1 總共只有28 層卷積層,第一層是標(biāo)準(zhǔn)卷積層,后面緊接著13 個(gè)深度可分離卷積層,再后面是由1×1 卷積得到的全連接層,其中一個(gè)深度可分離卷積層包含一個(gè)3×3 的Depthwise Conv,一個(gè)1×1 的Conv,它們中間會(huì)加入BN 和ReLU 激活函數(shù),如圖3 所示。
圖3 深度可分離卷積基本構(gòu)件
比較上述兩個(gè)網(wǎng)絡(luò)主干,MobileNetv1 相對(duì)有更淺層的網(wǎng)絡(luò)結(jié)構(gòu),深度卷積的參數(shù)數(shù)量只有普通卷積的1/M,其中M 表示通道數(shù),綜合以上兩點(diǎn),采用Mobile?Netv1 相比DarkNet53 在理論上是可以有更快的推理和計(jì)算速度。
語(yǔ)義分割是計(jì)算機(jī)視覺(jué)的一項(xiàng)基本任務(wù),相比目標(biāo)檢測(cè),語(yǔ)義分割是一項(xiàng)更精細(xì)的工作,是像素級(jí)的分類。DeepLab 系列網(wǎng)絡(luò)是語(yǔ)義分割網(wǎng)絡(luò)中的佼佼者,DeepLabv3+是在DeepLabv3 的基礎(chǔ)上發(fā)展改進(jìn)而來(lái)。
在DeepLabv3 中,DCNN 通過(guò)多次下采樣,獲得低維度的、高級(jí)語(yǔ)義信息的特征圖,但是特征圖過(guò)小會(huì)丟失邊界信息,導(dǎo)致預(yù)測(cè)精度降低。為了改進(jìn)DeepLabv3這一缺點(diǎn),DeepLabv3+加入解碼器來(lái)逐層恢復(fù)圖像的空間信息,如圖4 所示,輸入圖片通過(guò)DCNN,經(jīng)過(guò)4倍下采樣,得到低層次的特征,這低層次特征在編碼器部分經(jīng)過(guò)ASPP 模塊,最終下采樣16 倍,獲得高層次的特征;在解碼器部分,低層次的特征經(jīng)過(guò)1×1 卷積調(diào)整維度,在編碼器中獲得的高層次特征經(jīng)過(guò)雙線性插值,獲得4 倍上采樣,然后將這兩個(gè)相同層次相同維度的特征Concat,再采用3×3 卷積進(jìn)一步融合特征,最后經(jīng)過(guò)雙線性插值4 倍上采樣后得到與輸入的原始圖片相同大小的分割預(yù)測(cè)圖。由于解碼器部分融合了低層次和高層次的特征,所以DeepLabv3+獲得更豐富的語(yǔ)義信息和更高的精確度。
同時(shí),DeepLabv3+為了減少計(jì)算量,采用改進(jìn)的Xception[14]網(wǎng)絡(luò)作為網(wǎng)絡(luò)骨干,在圖4 的DCNN 中將原Xception 網(wǎng)絡(luò)中的最大池化層使用stride=2 的深度可分離卷積替換,同時(shí)增加了更多的層。DeepLabv3+最后還嘗試在ASPP 中也加入深度可分離卷積,發(fā)現(xiàn)在幾乎不損失預(yù)測(cè)精度的前提下,進(jìn)一步減少計(jì)算量。
圖4 DeepLabv3+網(wǎng)絡(luò)結(jié)構(gòu)
正如前文所述,本文提出的違規(guī)廣告牌簡(jiǎn)化成兩種情況,一種是處在人行道中間,另一種在車行道上。如圖5 所示,先使用語(yǔ)義分割算法分割出人行道區(qū)域,同時(shí)使用目標(biāo)檢測(cè)算法得到廣告牌的位置,也就是在圖片上標(biāo)出檢測(cè)框,獲得圖片中檢測(cè)框的坐標(biāo),在分割圖中的相同位置,統(tǒng)計(jì)人行道的像素是否是除廣告牌以外的像素點(diǎn)的1.5 倍以上,如果是,則為人行道上的違規(guī)廣告牌;但由于要保證車行道上的安全,所以只要在分割圖上檢測(cè)出車行道的像素點(diǎn),就直接判定為車行道上的違規(guī)廣告牌。
圖5 道路違規(guī)廣告牌網(wǎng)絡(luò)結(jié)構(gòu)圖
如圖6 所示,左上是原輸入圖片,右上是目標(biāo)檢測(cè)算法得到的檢測(cè)圖,左下是經(jīng)過(guò)語(yǔ)義分割算法得到的分割圖,右下圖片是經(jīng)過(guò)兩個(gè)網(wǎng)絡(luò)判定所得出的屬于人行道違規(guī)廣告牌。整體判定流程如圖7 所示。
圖6 人行道違規(guī)廣告牌
圖7 違規(guī)廣告牌判定流程
本文目標(biāo)檢測(cè)部分所選用數(shù)據(jù)集中的圖片全部來(lái)自國(guó)內(nèi)城市中監(jiān)控?cái)z像頭采集的照片,共4928 張,通過(guò)人工標(biāo)簽,其中標(biāo)定的廣告牌(ad)類別數(shù)量有7799個(gè),語(yǔ)義分割部分所選用的圖片是從這4928 張圖片中隨機(jī)選取500 張進(jìn)行標(biāo)定,標(biāo)定的類別有三類:廣告牌(ad)、車行道(road)、人行道(sidewalk)。
本文的實(shí)驗(yàn)環(huán)境配置如下:GPU 為NVIDIA GTX1080Ti、CPU 為Intel Core i7 8700k,操作系統(tǒng)為Ubuntu 16.04.6。YOLOv3 算法所選用的語(yǔ)言是tesor?flow-gpu+keras、DeepLabV3+算法所選用的語(yǔ)言是tes?orflow-gpu。
訓(xùn)練時(shí)將數(shù)據(jù)集分為兩部分:訓(xùn)練集(train)和驗(yàn)證集(val),其中訓(xùn)練集占85%,驗(yàn)證集占15%。為了訓(xùn)練的公平性,默認(rèn)的DarkNet53 骨干網(wǎng)絡(luò)和換用的MobilNetv1 骨干網(wǎng)絡(luò)都不使用預(yù)訓(xùn)練模型,從頭開(kāi)始訓(xùn)練。
網(wǎng)絡(luò)訓(xùn)練參數(shù)方面,考慮顯存大小,使用Dark?Net53 時(shí)將batch_size 設(shè)為8,不使用遷移學(xué)習(xí)訓(xùn)練,共訓(xùn)練500 個(gè)epoch,使用Adam 優(yōu)化器,初始學(xué)習(xí)率設(shè)為10-4;使用MoblileNetV1 時(shí)將batch_size 設(shè)為16,其余和DarkNet53 相同。網(wǎng)絡(luò)測(cè)試參數(shù)方面,設(shè)置score為0.3,IOU 為0.5。
兩個(gè)不同的骨干網(wǎng)絡(luò)訓(xùn)練時(shí)間和測(cè)試的結(jié)果如表1 所示。
表1 DarkNet53 和MobileNetv1 實(shí)驗(yàn)結(jié)果對(duì)比
從表1 可以看到,訓(xùn)練同樣數(shù)量的數(shù)據(jù)集,Dark?Net53 所需時(shí)間是MobileNetv1 的2 倍多,測(cè)試的結(jié)果,mAP 兩者并沒(méi)有相差多少,但是測(cè)試的FPS,雖然兩者都達(dá)不到官方論文中給出的那么高的數(shù)值,但是在本文實(shí)驗(yàn)環(huán)境下中,MobileNetv1 差不多達(dá)到DarkNet53的兩倍。綜合以上結(jié)果,本文最終選了速度更快,精度不損失多少的MobileNetv1 做目標(biāo)檢測(cè)的骨干網(wǎng)絡(luò)。
語(yǔ)義分割訓(xùn)練時(shí)將500 張數(shù)據(jù)集也分為兩部分:訓(xùn)練集和驗(yàn)證集,其中訓(xùn)練集占80%,驗(yàn)證集占20%。訓(xùn)練參數(shù)配置為:訓(xùn)練迭代30000 次,裁剪尺寸train_crop_size 設(shè)置為513×513,初始學(xué)習(xí)率設(shè)置為10-4,batch_size 設(shè)置為4,由于本文所選用數(shù)據(jù)集中的類別之間空間大小極不平衡,因此將三類loss 權(quán)重設(shè)置為ad:road:sidewalk=15:1:1。在驗(yàn)證集上測(cè)試所達(dá)到的平均交并比(mIOU)為78.54%。
結(jié)合目標(biāo)檢測(cè)和語(yǔ)義分割網(wǎng)絡(luò)的結(jié)果,最終的效果如圖8 所示,左上圖共有三個(gè)廣告牌,在右上圖全部被檢測(cè)到,左下圖的語(yǔ)義分割邊界比較明顯,右下圖的最終結(jié)果檢測(cè)到兩個(gè)違規(guī)的廣告牌,還有一個(gè)廣告牌因?yàn)榭拷鼒D中的店面,并不妨礙交通,所以判定不是違規(guī)廣告牌。
圖8 實(shí)驗(yàn)最終結(jié)果展示
本文提出了一種結(jié)合目標(biāo)檢測(cè)和語(yǔ)義分割算法來(lái)檢測(cè)城市中的違規(guī)廣告牌,在目標(biāo)檢測(cè)中,通過(guò)比較兩種不同的網(wǎng)絡(luò)骨干,最終在不損失很大精度的前提下,選用模型簡(jiǎn)單,計(jì)算速度更快的MobileNetv1 作為目標(biāo)檢測(cè)算法的骨干網(wǎng)絡(luò);在語(yǔ)義分割中,使用DeepLabv3+劃分城市道路區(qū)域。實(shí)驗(yàn)結(jié)果表明本文提出的算法能在轉(zhuǎn)動(dòng)攝像頭下拍攝的圖片中,檢測(cè)出違規(guī)廣告牌。
本文旨在檢測(cè)的性能具有實(shí)時(shí)性,但所選用的語(yǔ)義分割模型并不具備很快的檢測(cè)速度,針對(duì)這點(diǎn),在之后的研究中,將選用實(shí)時(shí)性的語(yǔ)義分割網(wǎng)絡(luò)模型和調(diào)整訓(xùn)練的數(shù)據(jù)集,在不損失精度的前提下,使檢測(cè)效果具有更快的速度。