王耀文,程軍圣,楊 宇
湖南大學 機械與運載工程學院,長沙 410082
目標檢測方法主要分為生成邊界框和圖像語義分割兩種。如果使用生成邊界框的目標檢測方法[1-5],雖然最終得出的目標邊界框較為直觀且便于理解和工程應(yīng)用,但是計算損失函數(shù)時對回歸框的正負樣本選取,以及非極大值抑制等后處理手段卻較為繁瑣,且部分依賴于串行或遍歷計算,速度較慢。若使用語義分割方法則可以直接生成掩碼圖片來識別物體的形狀和其所在的位置,所有過程均可在GPU上運行。然而訓練語義分割網(wǎng)絡(luò)模型需要較為繁瑣的人工標注作為訓練標簽,數(shù)據(jù)標注始終是語義分割任務(wù)的瓶頸。為簡化數(shù)據(jù)標注過程,在一些目標形狀大致固定的目標檢測任務(wù),或者是對于獲取目標的具體形狀要求不高的目標檢測任務(wù)中,可以依據(jù)簡單的ground truth box標注參數(shù),人為地設(shè)定某種二元分布函數(shù)來對目標的形狀和位置進行標記。隨后使用語義分割模型對標記信息進行學習,完成目標檢測任務(wù)。
目前的語義分割模型有FCN[6]、U-Net[7]、FPN[8]等。對應(yīng)同一種解碼器結(jié)構(gòu),可以替換不同的骨干網(wǎng)絡(luò)。替換更加輕量化的骨干網(wǎng)絡(luò),如Mobile Net[9-11]等,使語義分割模型更加容易在邊緣計算平臺上運行。若想要更進一步提高此類深度學習模型的運算速度和精度以及減少模型大小,則需要設(shè)計一種新的解碼器結(jié)構(gòu),因此論文設(shè)計了一個運行速度更快,模型參數(shù)更少,精度更高的特征金字塔結(jié)構(gòu)CFPN。
語義分割模型的結(jié)構(gòu)和超參數(shù)一般有兩種方法確定——根據(jù)經(jīng)驗手動調(diào)整或者使用NAS(neural architecture search)方法[12]。若根據(jù)經(jīng)驗確定模型的超參數(shù),對于從事深度學習領(lǐng)域時間較短的學者,一般較難得到十分優(yōu)秀的結(jié)果。然而即使是對于具有豐富經(jīng)驗的學者也需要花較多的時間確定深度學習模型的超參數(shù)。若使用NAS方法,雖然能夠不依賴人的經(jīng)驗搜索模型的超參數(shù),但是NAS方法對計算機的性能有較高的要求。因此基于FBNet方法[13],提出了TS-NAS(two stages-neural architecture search)方法,減小了Super Net的大小,有效地減少了NAS方法對GPU顯存的需求,節(jié)省了搜索超參數(shù)需要的時間。
選用安全帽與口罩的數(shù)據(jù)集作為模型的測試用途,檢測目標的形狀較為固定,可以依據(jù)簡單的標注框來生成語義分割所需的標注信息。且安全帽和口罩是建筑施工現(xiàn)場、礦山等危險作業(yè)環(huán)境中極其重要的個人防護用具。建筑施工現(xiàn)場中因高空墜落、物體打擊導致作業(yè)人員死亡的事故占比達50%以上[14]。使用基于圖像的深度學習方法進行安全帽與口罩等個人防護用具的檢測已成為智慧工地建設(shè)的重要組成部分。
Center Net[15]使用高斯分布生成熱力圖,并預(yù)測了一系列目標框。其使用熱力圖預(yù)測目標的中心位置,而目標的形狀和大小信息使用目標框來預(yù)測。在一些目標輪廓較為簡單的目標檢測任務(wù)中,如果預(yù)測的目標形狀大體上是確定的,那么只需要調(diào)整預(yù)測熱力圖的熱點形狀和大小就可以滿足使用需求,而不用預(yù)測額外的目標框。對熱力圖的后處理(如腐蝕、膨脹等操作)也可以在GPU上運行,步驟簡單且效率高。
使用此種方法進行簡化的分割標注時,會出現(xiàn)分割效果不佳的問題,并導致后續(xù)任務(wù)的負反饋。
使用概率分布來生成熱力圖所造成的誤差主要來源于以下兩個方面。第一是構(gòu)造的概率分布函數(shù)對目標的擬合能力較差,第二是在使用bbox標注的圖像中同一類目標中出現(xiàn)個別位姿或形狀特殊的個體,其與大多數(shù)同類的個體差異較大,導致構(gòu)造的概率分布函數(shù)對其擬合程度不高。
因此,對于這些誤差的來源,可以采取以下修正方法:
對于第一類誤差,應(yīng)該對不同的目標構(gòu)造更為合適的概率分布函數(shù),減少概率分布函數(shù)的擬合誤差。對較難人為構(gòu)造概率分布函數(shù)的目標可以先對該目標進行少量的語義分割人工標注,并建立另一個針對該目標的標注深度學習模型。根據(jù)bbox信息從原圖像上將該目標的矩形區(qū)域裁剪下來輸入標注深度學習模型,將少量的人工標注樣本作為標簽,訓練并使其輸出專門針對這一目標的熱點圖信息。
對于第二類誤差,可以在生成完熱點圖之后,人為地檢查一遍分割標注信息,將擬合程度不高的樣本進行人工標注。雖然仍然需要人為地處理標注信息,但仍然比對所有圖像進行人工語義分割標注節(jié)省大量的時間和精力。
使用概率分布生成熱力圖適合應(yīng)用于目標輪廓較為簡單,以及預(yù)測的目標形狀容易使用概率分布函數(shù)來擬合的任務(wù)環(huán)境。特別是對于安全帽與口罩的檢測任務(wù),人體頭部大致與bbox內(nèi)切,可以將語義分割的標簽掩碼設(shè)置在人體的頭部。在圖像上人體的頭部大致呈圓形,因此可以簡便地使用二元高斯分布生成目標的熱點圖而不會造成過大的擬合誤差。構(gòu)造熱點圖的概率分布函數(shù)如下:
b,h分別是gtbox的寬度和高度,(x0,y0)是目標的中心坐標。R是人為設(shè)定的區(qū)域,由于人臉可以被認為是gtbox里圓心落在矩形框中心的圓,考慮到在標注框內(nèi)的目標直徑比標注框的任意一邊都小,所以將區(qū)域R(x,y)設(shè)為:
這樣就保證了在gtbox內(nèi)服從高斯分布,在gtbox外掩碼的像素值為0。
為證明此方法的有效性,從安全帽與口罩數(shù)據(jù)集中隨機抽取100張圖片進行人工語義分割標注作為真實標簽Y,使用生成的熱點圖作為預(yù)測結(jié)果。規(guī)定:
經(jīng)實驗得到,準確率Acc為93.99%、精確度Pre為43.92%、召回率Recall為88.64%,故使用標注框生成熱點圖的方法在準確率和召回率上都有不錯的效果。但是此方法精確度較低,只適用于對精確度要求不高的檢測任務(wù)中。
同F(xiàn)PN與U-Net一樣,適用于語義分割這類生成預(yù)測圖的網(wǎng)絡(luò)模型需要有編碼器(下采樣部分)和解碼器(上采樣部分)兩個結(jié)構(gòu)。FPN的上采樣與特征融合部分是一個很好的解碼器網(wǎng)絡(luò)結(jié)構(gòu),可以用于不同的骨干網(wǎng)絡(luò),將深層和淺層的特征融合提高模型的預(yù)測精度。
為減少解碼層的參數(shù),提高模型的計算速度以及精度,基于深度可分離卷積模塊構(gòu)建了CFPN。圖1為以MobileNet-V3作為骨干網(wǎng)絡(luò)。為構(gòu)建編碼器,提取骨干網(wǎng)絡(luò)不同層中的特征圖信息,將骨干網(wǎng)絡(luò)的切片作為BLK模塊使用。以CFPN為解碼器的語義分割模型。
圖1 MobileNet-CFPNFig.1 MobileNet-CFPN
CFPN由一系列基礎(chǔ)模塊(BCK)組成,每一個BCK模塊接收兩個特征信息——CFPN內(nèi)部傳遞的特征信息和來自于編碼器的特征信息。
在上采樣方法上,U-Net使用反卷積作為上采樣方法,而FPN使用最鄰近插值的方法。在特征融合上,U-Net使用特征拼接后卷積的方式融合,F(xiàn)PN先用1×1卷積核處理淺層特征后與深層特征相加。相比于使用反卷積方式對特征圖進行上采樣,使用最近鄰插值的方法可以減少模型超參數(shù)并提高運算速度。特征拼接后卷積的方式融合相較于特征直接相加可以減少深層與淺層特征融合時的損失。因此CFPN采用了與FPN一樣的最鄰近插值作為上采樣方法。
FPN將編碼器的各層特征調(diào)整到相同的通道數(shù),很容易造成深層特征丟失和淺層特征冗余。為了解決這個問題,CFPN中的每一層BCK模塊的輸入與輸出的特征通道數(shù)都是可以調(diào)整的,并不要求將編碼器的所有中間層特征調(diào)整到同樣的通道數(shù)。可調(diào)整的通道數(shù)意味著能夠?qū)γ恳粚覤CK模塊進行結(jié)構(gòu)搜索和微調(diào),能夠?qū)⒕W(wǎng)絡(luò)向輕量化以及高效化調(diào)整。
BCK模塊基于Mobile Net中的深度可分離卷積思想構(gòu)建。在進行特征融合時,F(xiàn)PN采用了簡單相加的方法,容易導致深層特征與淺層特征相加時深層特征損失。CFPN中的BCK模塊將深層特征圖插值到與淺層特征圖相同大小后進行通道維度上的拼接,使用深度可分離卷積模塊來對特征進行融合,減少了深層特征的損失。同時,CFPN中的BCK接收來自上一層BCK模塊融合的信息,在進行逐級特征融合時,來自深層的信息會越來越豐富。
BCK模塊如圖2所示,其中分離卷積模塊類似于Mobile Net中的基礎(chǔ)模塊,CBN1為1×1卷積與Hard swish,CBN2為3×3組卷積與Batch Norm,Attention為注意力機制,Conv_head為1×1卷積。
圖2 BCK模塊Fig.2 BCK module
CBN1所使用的非線性函數(shù)為Hardswish,CBN2使用的線性激活函數(shù)為Relu6。使用兩種不同的激活函數(shù)是因為Relu6雖然計算更快,但是會在0和6處截止,如果在CBN1就使用Relu6,就會導致更多的特征損失。因此采用損失更小的Hardswish函數(shù)代替CBN1處的非線性激活函數(shù)。
與Mobile Net相同,采用SE注意力機制[16]來調(diào)整特征通道的權(quán)重。
FBNet是一種建立在求解大型深度學習模型的可微分結(jié)構(gòu)搜索方法。FBNet方法先構(gòu)建一個大型的Super Net,在模型中的每一層設(shè)計有限多個可能的并行結(jié)構(gòu),并在損失函數(shù)中加入正則化項,在訓練完成后通過并行結(jié)構(gòu)的權(quán)重來進行模塊的選擇。
由于本文設(shè)計的幾種BCK模塊的結(jié)構(gòu)類似表1,正則化系數(shù)幾乎相同,因此在損失函數(shù)中加入正則化項無太大意義。若基于不同的模塊結(jié)構(gòu)以及其各自輸入與輸出的特征層數(shù)來構(gòu)建并行結(jié)構(gòu),會導致Super Net過于龐大,訓練成本增加。為了減少Super Net的訓練成本,設(shè)計了一種基于FBNet的NAS方法TS-NAS(two stage neural architecture search)。
表1 單層并行結(jié)構(gòu)Table 1 Single layer parallel structure
TS-NAS分為兩個階段,第一階段為在類似的并行模塊中搜索最優(yōu)組合,第二階段為搜索最優(yōu)組合下各層通道數(shù)目的比值。
構(gòu)建以MobileNet-V3為編碼器,以CFPN為解碼器的目標檢測模型。使用TS-NAS搜索BCK模塊可能的殘差結(jié)構(gòu)及其在CFPN中的組合方式。同一層的并行結(jié)構(gòu)如表1所示。
若BCK輸入的特征為x0與x1,α為并行結(jié)構(gòu)的權(quán)重系數(shù)。那么在正向傳播時,并行結(jié)構(gòu)的輸出為:
由于損失函數(shù)L為模型參數(shù)w和并行結(jié)構(gòu)權(quán)重系數(shù)α的函數(shù),深度學習模型訓練時可等效為:
因此,訓練完成后的α即可代表該層結(jié)構(gòu)中對應(yīng)模塊的重要程度。
使用TS-NAS方法構(gòu)建Super Net中的并行模塊時,需要將同一層所有并行模塊的輸入與輸出調(diào)成一致,確保模塊參數(shù)大小以及運行速度相近,故將所有BCK的輸出特征通道設(shè)為256,在確定最優(yōu)組合順序后再對輸出通道數(shù)的最優(yōu)組合進行搜索。
使用相同的方法構(gòu)建預(yù)測頭的并行結(jié)構(gòu),與BCK模塊不同的是,預(yù)測頭只使用兩個分離卷積模塊組成。由于最后一級預(yù)測頭生成的預(yù)測特征圖層數(shù)遠小于輸入的特征圖層數(shù),即圖2中的C3< 因此,預(yù)測頭的最后一級結(jié)構(gòu)是固定的,只需要搜索第一級結(jié)構(gòu)。第一級的并行結(jié)構(gòu)為BCK模塊中B0~B7所對應(yīng)的分離卷積模塊,并行結(jié)構(gòu)的輸入相當于BCK模塊中B0~B7所對應(yīng)融合模塊特征通道拼接后輸出。 表2為結(jié)構(gòu)搜索得到的所有并行模塊的softmax權(quán)重,確定BCK與預(yù)測頭的最佳組合方式為B4→B2→B6→B1。 表2 各層并行BCK模塊權(quán)重Table 2 Weights of BCK modules in each layer TS-NAS的第二階段搜索在于確定已知串行結(jié)構(gòu)的最優(yōu)正則化超參數(shù)比值(最優(yōu)特征通道數(shù)比值)。先將需要搜索的串行網(wǎng)絡(luò)結(jié)構(gòu)的每一級調(diào)整為相同的輸出通道數(shù)c,并給每個通道賦予權(quán)重參數(shù),因此同一級含有c個通道權(quán)重參數(shù)β1~βc。 若輸入特征為x1~xb,F(X)為特征X在模塊中的正向傳播,則同一級的正向傳播過程為: 其中,σ為歸一化計算。若采用sigmoid方法,則j為通道緯度,β1~βj為同一級模塊的不同通道權(quán)重,且推薦將β的初始值均設(shè)為0。若使用softmax方法,則j為結(jié)構(gòu)緯度,β1~βj為不同級模塊的權(quán)重,且所有β的初始值必須相同。 對于深度學習模型,σ(β)趨近于1時損失函數(shù)L(,y)以及特征損失小,模型精度高。為了約束β,并使模型趨向于輕量化、迅速化,需要在損失函數(shù)中加入正則項Q。 記串行結(jié)構(gòu)第j級的參數(shù)量為pi,運行時間為tj,L為初始損失函數(shù),Q與總損失函數(shù)的計算方法為: 由于第j級的輸出就是第j+1級的輸入,因此第j級的輸出大小不僅影響到這一級的參數(shù)量以及計算時間,也同樣影響到下一級。故在計算特定的某一級輸出通道數(shù)對正則項的影響時,需要將下一級的時間和參數(shù)量也考慮進去。 可以通過控制b的大小來使模型更傾向于精度或者是速度與輕量化方向訓練。b越小,損失函數(shù)則更側(cè)重于提高模型的精度,反之損失函數(shù)更側(cè)重于使模型輕量化以及提高計算速度。 訓練完成后,各串行模塊的歸一化通道權(quán)重參數(shù)均值之比即為串行結(jié)構(gòu)的最優(yōu)正則化超參數(shù)比值(最優(yōu)特征通道數(shù)比值)。 對于以MobileNet-V3作為編碼層,以CFPN作為解碼層,選用sigmoid作為TS-NAS第二階段的歸一化方法。訓練得到的最優(yōu)特征通道數(shù)比值為1.00∶0.95∶0.94∶0.98。 使用自制的安全帽與口罩的數(shù)據(jù)集,一共有834張圖片,將80%劃分為訓練集,其余劃分為測試集。對“只佩戴安全帽”“只佩戴口罩”“同時佩戴安全帽與口罩”“不佩戴安全帽也不佩戴口罩”這4個目標進行目標檢測。數(shù)據(jù)集已上傳至百度飛槳AI Studio(https://aistudio.baidu.com/aistudio/datasetdetail/166994)。數(shù)據(jù)集部分圖片如圖3所示。 圖3 數(shù)據(jù)集部分圖片F(xiàn)ig.3 Some images of dataset 語義分割模型一般使用mIOU作為模型精確度評價指標,mIOU的計算方法為: 基于掩碼標注的語義分割模型在計算mIOU時使用閾值分割模型的輸出結(jié)果,計算與處理較為簡便,但使用mIOU評價指標來評估生成的概率分布熱點圖時需要稍作修改。規(guī)定預(yù)測值大于0.01的區(qū)域為正樣本區(qū)域,其他歸為負樣本區(qū)域。由于基于熱點圖預(yù)測的目標是一個在0~1上的概率分布,因此把正樣本區(qū)域內(nèi)預(yù)測值與目標值絕對誤差在Δp內(nèi)的像素點歸為TP,正樣本區(qū)域內(nèi)的其余像素點歸為FN。負樣本區(qū)域內(nèi)預(yù)測值與目標值絕對誤差大于Δp的像素點歸為FP,其余像素點歸為TN。 在計算mIOU時,令Δp分別為0.1、0.2、0.3,得到3個評價指標mIOU10、mIOU20和mIOU30,使用這三個指標對模型的精確度進行評估。 同理,令Δp分別為0.1、0.2、0.3,以式(14)得到評價指標mPA10、mPA20和mPA30。 以模型參數(shù)量、模型在CPU上的計算時間、mIOU系列與mPA系列作為評價指標,以評估CFPN應(yīng)用在不同骨干網(wǎng)絡(luò)上造成的性能提升。其中模型參數(shù)量用于評估模型的輕量化程度,模型在CPU上的計算時間用于評估模型的運算速度。 實驗的硬件為Dell G15 5511,其CPU為i7-11800H,GPU為RTX3060(6 GB),運行內(nèi)存32 GB。實驗僅用于評估不同模型之間的優(yōu)劣,因此需要確保所有進行實驗的模型在其他條件上相同,故所有實驗均不進行數(shù)據(jù)增強處理,并使用二值交叉熵作為損失函數(shù)。 消融實驗中所有模型采用的骨干網(wǎng)絡(luò)為MobileNet-V3。通過調(diào)整第一層BCK模塊的通道數(shù)保持CFPN參數(shù)量和其在CPU上的計算時間基本不變。固定TS-NAS搜索得到的網(wǎng)絡(luò)特征通道數(shù)比值不變,隨機搜索BCK模塊組合;以及固定TS-NAS搜索得到的BCK模塊組合不變,隨機搜索層特征通道數(shù)比值。與TS-NAS搜索得到的網(wǎng)絡(luò)進行對比。其中隨機搜索特征通道數(shù)比值方法是在原特征通道數(shù)比值上加入相同緯度的噪聲后得到的。 TS-NAS搜索到的網(wǎng)絡(luò)參數(shù)量為3.10×106,CPU計算時間為35.91 ms,因此控制其他的對比模型的參數(shù)量也為3×106左右,CPU計算時間控制在30~40 ms。 表3中上下兩個區(qū)塊的第1行數(shù)據(jù)為TS-NAS搜索得到的網(wǎng)絡(luò)模型,第2~3行為固定特征通道比值,隨機搜索模塊組合。第4~5行為固定模塊組合,隨機搜索特征通道比值。TS-NAS的第一階段搜索與第二階段搜索都使網(wǎng)絡(luò)得到了優(yōu)化。其中第一階段對網(wǎng)絡(luò)的準確率提升更大,第二階段對網(wǎng)絡(luò)的總和性能(速度和準確率)提升更大。 表3 消融實驗Table 3 Ablation study 表4中,在以UNet為骨干網(wǎng)絡(luò)時,嵌入模塊將替換UNet的解碼層。以DLA34為骨干網(wǎng)絡(luò)且不采用嵌入模塊時,以CenterNet-dla34為原始模型。 表4 實驗結(jié)果Table 4 Experimental result CFPN在參數(shù)量以及CPU計算時間上都具有優(yōu)勢,是因為在BCK模塊中使用了深度可分離卷積的方式,并且使用了相較于FPN更少的特征層。CFPN使用拼接+卷積的方式替代了傳統(tǒng)的特征通道對應(yīng)相加的特征融合方法,更有效地減少了特征融合時的損失與混疊,因此在mIOU系列與mPA系列指標上也有更好的表現(xiàn)。 圖4為以MobileNet-V3為骨干網(wǎng)絡(luò),分別以FPN、CFPN為嵌入模塊的可視化模型結(jié)果輸出對比圖。可以看出CFPN相比于FPN,輸出的結(jié)果誤差更小,精度更高。 圖4 部分可視化模型輸出結(jié)果對比圖Fig.4 Comparison of partial visualization models’output results 本文提出了一種使用標注框生成熱點圖作為語義分割掩碼的方法,簡化了圖像語義分割模型數(shù)據(jù)集的標注過程。在FPN結(jié)構(gòu)的基礎(chǔ)上提出了CFPN結(jié)構(gòu),并使用基于FBNet改進而來的TS-NAS方法確定了CFPN的超參數(shù)。經(jīng)過實驗表明,CFPN在參數(shù)量、計算時間和精度上都較有優(yōu)勢。 然而,TS-NAS方法只適用于搜索結(jié)構(gòu)類似、正則化系數(shù)相差不大的候選模塊組合。若搜索結(jié)構(gòu)相差較大的模塊間的組合方式,則需要在TS-NAS的第一階段中引入一些正則化項來平衡各個并行模塊的損失函數(shù)。且TS-NAS方法不能自發(fā)性地創(chuàng)建候選模塊,其只能從給定的候選模塊中搜索出較優(yōu)組合,以及各級通道數(shù)的比值。候選模塊的結(jié)構(gòu)與第一級模塊的通道數(shù)仍然需要人為構(gòu)建和給定。3 實驗
3.1 數(shù)據(jù)集與評價指標
3.2 消融實驗
3.3 實驗結(jié)果
4 結(jié)論