陳響洲 楊余旺 沈興鑫
(南京理工大學(xué)計算機科學(xué)與工程學(xué)院 南京 210094)
生產(chǎn)線上,為了保證生產(chǎn)的效率和安全,對人員進(jìn)行人數(shù)限制自然也是生產(chǎn)安全的一個重要組成部分。隨著生產(chǎn)線規(guī)模的不斷加大,安全問題逐漸凸顯,為了彌補人工監(jiān)控的低下效率和節(jié)約人工資源,生產(chǎn)線定員檢測成為一個關(guān)鍵問題。
生產(chǎn)線定員檢測本質(zhì)上屬于目標(biāo)檢測范疇,目標(biāo)檢測是計算機視覺領(lǐng)域的一個重要研究方向。隨著近年來深度學(xué)習(xí)的快速發(fā)展,采用基于深度學(xué)習(xí)的算法進(jìn)行目標(biāo)檢測已成為計算機視覺領(lǐng)域的重要方法。
在目標(biāo)檢測領(lǐng)域,傳統(tǒng)的目標(biāo)檢測方法通常采用區(qū)域選擇、特征提取、分類器分類的步驟流程進(jìn)行檢測[1],但是,傳統(tǒng)的目標(biāo)檢測方法存在著兩個主要的缺陷[2]:1)基于滑動窗口的區(qū)域選擇策略沒有針對性,時間復(fù)雜度高,窗口冗余;2)手工設(shè)計的特征對于多樣性的變化并沒有很好的魯棒性,因此,傳統(tǒng)的目標(biāo)檢測的速度和準(zhǔn)確度均較低。近年來,深度學(xué)習(xí)的快速發(fā)展給目標(biāo)檢測領(lǐng)域注入了活力,在準(zhǔn)確度和速度方面均取得了突破。Girshick等[3]提出的R-CNN算法采取聚類的方法對圖像分組,得到多個候選框的層次組,在PASCAL VOC2007上的mAP比傳統(tǒng)目標(biāo)檢測方法高出31.7%。Purkait[4]提 出 的SPP-NET算 法 解 決 了R-CNN區(qū)域提名時的偏差問題,大大加快了檢測速度。Ren等[5]提出了Faster R-CNN算法引入了多任務(wù)損失函數(shù),簡化整個網(wǎng)絡(luò)的訓(xùn)練和測試,提高了檢測的速率。Redmon等[6]在YOLO算法基于回歸思想,將目標(biāo)檢測任務(wù)轉(zhuǎn)變?yōu)榛貧w問題,實現(xiàn)了一個可以一次性預(yù)測多個Box位置及類別的卷積神經(jīng)網(wǎng)絡(luò),使檢測速度有了明顯的提升。
雖然這些算法在目標(biāo)檢測的速度或精度上分別取得了很高的成績,但是無法同時滿足高精度和實時性要求,所以難以應(yīng)用于實際生產(chǎn)。之后,Liu等[7]在YOLO和Faster R-CNN的基礎(chǔ)上提出了SSD算法,在精度和速度方面取得平衡,為實際應(yīng)用奠定了基礎(chǔ)。SSD算法是目前最優(yōu)秀的目標(biāo)檢測算法之一,僅僅使用一個全卷積網(wǎng)絡(luò)就能同時完成分類和定位任務(wù)。該算法融合了YOLO的回歸思想和FasterR-CNN的anchors機制,在提高mAP的同時兼顧速度,兩者同時取得了優(yōu)秀的成績。SSD算法憑借高實時性和高準(zhǔn)確度的特點被廣泛應(yīng)用在實際生產(chǎn)中。高英杰等[8]基于SSD算法實現(xiàn)對水下目標(biāo)的檢測分析;陳亮杰等[9]通過SSD算法對倉儲物體進(jìn)行檢測;楊建等[10]則是在方坯號識別系統(tǒng)中通過SSD算法進(jìn)行分析檢測。
本論文提出了一種基于SSD算法的生產(chǎn)線定員檢測算法,該算法使用ResNet101卷積神經(jīng)網(wǎng)絡(luò)和添加卷積層提取圖像特征,解決了傳統(tǒng)SSD算法小尺寸目標(biāo)檢測率低的問題,準(zhǔn)確率相比傳統(tǒng)SSD算法提高了5.3%。
本章主要從SSD網(wǎng)絡(luò)結(jié)構(gòu)、圖像特征提取網(wǎng)絡(luò)、損失函數(shù)、訓(xùn)練階段和檢測階段五個方面介紹算法的原理和實現(xiàn)。
SSD是基于一個前向傳播卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行提取不同尺寸的特征,產(chǎn)生一連串大小固定的邊框,以及相應(yīng)包含目標(biāo)實例的概率,最后進(jìn)行一個非極大值抑制來得到最佳的預(yù)測值,完成對目標(biāo)的檢測和定位。SSD使用通用分類網(wǎng)絡(luò)作為基礎(chǔ)網(wǎng)絡(luò),然后在這個基礎(chǔ)網(wǎng)絡(luò)的基礎(chǔ)上增加附加的卷積層,傳統(tǒng)SSD網(wǎng)絡(luò)結(jié)構(gòu)圖如圖1所示。SSD結(jié)合多尺度特征響應(yīng)圖共同檢測,保證了不同尺寸特征信息量的保留。
圖1 傳統(tǒng)SSD網(wǎng)絡(luò)結(jié)構(gòu)圖
SSD算法的圖像特征提取網(wǎng)絡(luò)通過不同分辨率的特征提取層提取多尺度特征,然后產(chǎn)生一連串大小固定的邊框和相應(yīng)包含物體實例的概率。
目 前 主 流 的 卷 積 神 經(jīng) 網(wǎng) 絡(luò) 有AlexNet[11]、GoogleNet[12]、VGGNet[13]、ResNet[14]等。傳統(tǒng)SSD算法采用VGG16網(wǎng)絡(luò)和附加卷積層進(jìn)行圖像特征提取。但由于傳統(tǒng)的SSD算法使用VGG16網(wǎng)絡(luò)中的Conv4_3低級特征層去檢測小尺寸目標(biāo),而低級特征層卷積層數(shù)較少,特征提取并不充分,因而導(dǎo)致缺乏高層語義特征,所以傳統(tǒng)的SSD算法對小尺寸目標(biāo)檢測的準(zhǔn)確度難以令人滿意。
2015年,ResNet在ImageNet上打敗VGG等其他卷積網(wǎng)絡(luò),成為冠軍。為了改善傳統(tǒng)SSD算法對小尺寸目標(biāo)的檢測效果比較差的問題,所以便需要提高淺層的特征提取能力。Resnet-101相比VGG16而言,增加了殘差模塊,特征提取能力有了很大的提升,所以在本文中選擇了ResNet101網(wǎng)絡(luò)和附加卷積層進(jìn)行提取圖像特征,網(wǎng)絡(luò)結(jié)構(gòu)圖如圖2所示。
圖2 SSD_ResNet網(wǎng)絡(luò)結(jié)構(gòu)圖
為了加快網(wǎng)絡(luò)的收斂速度,將所有圖像大小統(tǒng)一設(shè)置為512×512和300×300兩種,便于后期的數(shù)據(jù)分析處理。同時為了保證與SSD_VGG16模型對應(yīng)的各個特征提取層的特征圖大小大致相仿,各個模型選取的特征提取層如表1所示。
表1 各模型特征提取層對比表
SSD損失函數(shù)是置信度損失(confidence loss)和位置損失(location loss)的加權(quán)和,其表達(dá)式如下:
其中式(1)中N是與真實框(ground truth)相匹配的候選框數(shù)量;而α參數(shù)confidence loss和location loss加權(quán)比例,默認(rèn)α=1。
置信度損失(confidence loss)是多類Softmax損失,其表達(dá)式如下:
位置損失(location loss)是真實框和候選框參數(shù)之間的smoothL1損失,其表達(dá)式如下:
其中式(4)中smoot hL1可表示為
SSD網(wǎng)絡(luò)的訓(xùn)練系統(tǒng)結(jié)構(gòu)框圖如圖3所示,訓(xùn)練過程主要由輸入、特征提取、預(yù)測器、區(qū)域候選框匹配四個模塊組成。訓(xùn)練流程如下。
圖3 SSD網(wǎng)絡(luò)的訓(xùn)練系統(tǒng)結(jié)構(gòu)框圖
1)輸入訓(xùn)練圖片,進(jìn)行前向傳播;
2)設(shè)置不同長寬比,不同尺度的區(qū)域候選框;
3)真實框(ground truth)和區(qū)域候選框匹配,保證每個真實值都至少有一個對應(yīng)的區(qū)域候選框;
4)預(yù)測器輸出每個區(qū)域候選框的類別置信度預(yù)測和位置偏移量預(yù)測;
5)計算損失函數(shù)并反饋調(diào)節(jié)對應(yīng)權(quán)重。
重復(fù)步驟1)到5),直到訓(xùn)練目標(biāo)函數(shù)誤差趨于穩(wěn)定停止。
輸入圖片后,經(jīng)過前向網(wǎng)絡(luò)傳播,所有區(qū)域候選框會產(chǎn)生類別概率預(yù)測值和位置偏移量預(yù)測值,根據(jù)設(shè)定好的閾值,刪除概率預(yù)測值低于閾值的框,即認(rèn)為這些框中沒有目標(biāo),是背景。然后經(jīng)過非極大值抑制[15]去除多余框,留下最終的檢測結(jié)果。
本章主要從實驗環(huán)境、實驗數(shù)據(jù)集和實驗結(jié)果與分析三個方面對算法有效性進(jìn)行試驗驗證。
本文實驗在Ubuntu16.04操作系統(tǒng)下基于Caffe深度學(xué)習(xí)框架完成,采取雙GPU進(jìn)行訓(xùn)練,運行環(huán)境基本配置為
GPU型號:NVIDIA GeForce GTX 1050 Ti;
CPU型 號:Intel E5-2670;
內(nèi) 存:128G;
顯 存:4GB×2;
驅(qū)動版本:425.31;
CUDA版本:CUDA 10.0。
本文實驗所需數(shù)據(jù)均為模擬生產(chǎn)線環(huán)境下通過攝像機采集獲得的人員視頻,然后為防止樣本重復(fù),以30s為間隔切割生成圖像,并采用圖像標(biāo)注工具Label Img進(jìn)行標(biāo)注,創(chuàng)建一個人員數(shù)據(jù)集,其包含4500張圖像。將人員數(shù)據(jù)集分為訓(xùn)練集、驗證集和測試集,訓(xùn)練集約占60%,驗證集約占15%,測試集約占25%。
由于實驗設(shè)備的限制,本實驗設(shè)置Batch_size為16。同時由于數(shù)據(jù)集僅有人一類,所以設(shè)置num_class為2,初始學(xué)習(xí)率為0.001。
為了驗證本文算法的有效性,在人員數(shù)據(jù)集上分別輸入兩種不同大小的模型,訓(xùn)練并測試得到生產(chǎn)線人員準(zhǔn)確率mAP(mean Average Precision),實驗結(jié)果如表2所示。
由表2實驗結(jié)果表分析可知,在相同的圖像大小的情況下,SSD_ResNet模型的mAP明顯高于SSD_VGG模型的mAP,這種情況在圖像大小為512×512的情況下尤為明顯,因此說明淺層更具有表征能力時,對小目標(biāo)效果就會更好。同時,在相同的卷積網(wǎng)絡(luò)提取特征的情況下,由圖像大小為512×512得到的模型的mAP高于由圖像大小為300×300得到的模型的mAP。
表2 實驗結(jié)果表
由于篇幅所限,僅給出SSD_ResNet_512模型的部分生產(chǎn)線人員檢測測試圖,如圖4、圖5所示。在圖4、圖5中可以明顯看出,該模型對于不同姿態(tài)的人員和不同大小的人員都有準(zhǔn)確的檢測。
圖4 生產(chǎn)線人員檢測測試圖A
圖5 生產(chǎn)線人員檢測測試圖B
在基于SSD目標(biāo)檢測算法的基礎(chǔ)上,本文使用ResNet卷積網(wǎng)絡(luò)在生產(chǎn)線人員數(shù)據(jù)集上,圖像大小為512×512的情況下訓(xùn)練得到的模型mAP達(dá)到了87.7652%,基本符合生產(chǎn)線定員檢測的要求。
本文提出了一種基于SSD目標(biāo)檢測算法的生產(chǎn)線定員檢測,通過在ResNet101網(wǎng)絡(luò)和添加的卷積層上選取適合的特征層進(jìn)行提取多尺寸圖像特征,然后產(chǎn)生一連串大小固定的邊框和相應(yīng)概率,最后使用非極大值抑制法得到最佳的預(yù)測值,實現(xiàn)對生產(chǎn)線人員數(shù)量實時監(jiān)控,并且在實驗中SSD_ResNet模型取得了最高87%的mAP,從而滿足生產(chǎn)線定員檢測的要求。然而,本文算法對于人數(shù)較多的生產(chǎn)線環(huán)境下,容易出現(xiàn)漏檢現(xiàn)象,推測很可能是由于人員遮擋率過高所引起。因此,針對人員遮擋問題,下一步采取基于多目攝像頭的目標(biāo)檢測方法進(jìn)行進(jìn)一步研究。