高運(yùn)運(yùn),陳國(guó)良
(武漢理工大學(xué) 機(jī)電工程學(xué)院,湖北 武漢 430070)
隨著生活節(jié)奏的加快,越來(lái)越多的人選擇飼養(yǎng)貓狗等寵物來(lái)緩解壓力。但是工作時(shí)間寵物的看管是一個(gè)令人困擾的事情。同樣的陪同問題也出現(xiàn)在老人和嬰兒身上。具有生物體目標(biāo)檢測(cè)功能的室內(nèi)移動(dòng)機(jī)器人可以在一定程度上解決這個(gè)問題。通過視覺檢測(cè)到生物體之后,機(jī)器人通過多傳感器融合獲得生物體的狀態(tài),實(shí)現(xiàn)看管的功能。
目標(biāo)檢測(cè)分為傳統(tǒng)的目標(biāo)檢測(cè)方法和基于深度學(xué)習(xí)的目標(biāo)檢測(cè)方法兩種。傳統(tǒng)目標(biāo)檢測(cè)方法包括生成先驗(yàn)框、特征向量提取和區(qū)域分類3個(gè)步驟。每個(gè)先驗(yàn)框輸出的特征向量是由對(duì)尺度變化、光照變化和旋轉(zhuǎn)變化具有一定魯棒性的SIFT(scale-invariant feature transform)[1]、Harr[2]、HOG(histogram of oviented gradient)[3]或者SURF(speeded up robust features)[4]這些手工視覺特征進(jìn)行編碼的。區(qū)域分類器通常使用在小規(guī)模數(shù)據(jù)上表現(xiàn)良好的SVM(support vector machine)[5],同時(shí)加入Bagging[6]、級(jí)聯(lián)學(xué)習(xí)[7]和AdaBoost[8]等分類技術(shù)來(lái)提高目標(biāo)檢測(cè)的精度?;谏疃葘W(xué)習(xí)的目標(biāo)檢測(cè)算法包括單階段目標(biāo)檢測(cè)和兩階段目標(biāo)檢測(cè)兩種。兩階段目標(biāo)檢測(cè)算法是一個(gè)“從粗到細(xì)”的過程,包括建議框生成和預(yù)測(cè)兩個(gè)步驟。典型的兩階段目標(biāo)檢測(cè)算法有RCNN(regions convolutional neural networks)[9]、Fast RCNN[10]和Faster RCNN[11]。單階段目標(biāo)檢測(cè)算法可以實(shí)現(xiàn)輸入圖像到預(yù)測(cè)框預(yù)測(cè)的端對(duì)端操作,代表性的算法有YOLO(you only look once)[12]、SSD(single shot multibox detector)[13]和RetinaNet[14]。
傳統(tǒng)的目標(biāo)檢測(cè)算法和基于深度學(xué)習(xí)的目標(biāo)檢測(cè)算法在生物體檢測(cè)領(lǐng)域都得到廣泛應(yīng)用。Kozakaya[15]等采用基于Haar特征的AdaBoost分類器級(jí)聯(lián)基于CoHOG特征的線性分類器進(jìn)行貓臉檢測(cè),檢測(cè)精度相比僅使用Haar+AdaBoost方法有較大提升,檢測(cè)一幅圖像需要3 s,檢測(cè)速度極慢。Wang[16]等采用LBP(local binary patterns)和HOG相結(jié)合的特征進(jìn)行行人檢測(cè),當(dāng)FPPW(false position per vindow)為106時(shí),算法在INRIA數(shù)據(jù)集上的檢測(cè)率可以達(dá)到91.3%,但是算法對(duì)于人體姿態(tài)變化的魯棒性差,漏檢率高,檢測(cè)速度也很慢?;趥鹘y(tǒng)目標(biāo)檢測(cè)算法進(jìn)行生物體目標(biāo)檢測(cè)精度較低,漏檢率高,檢測(cè)速度慢,逐漸被基于深度學(xué)習(xí)的目標(biāo)檢測(cè)算法所取代。Zhou[17]等采用改進(jìn)的Mask RCNN設(shè)計(jì)了流浪貓檢測(cè)網(wǎng)頁(yè)應(yīng)用,對(duì)于個(gè)體的平均識(shí)別率達(dá)到89.4%,但是采用服務(wù)器進(jìn)行目標(biāo)檢測(cè)運(yùn)算,不適合移動(dòng)機(jī)器人的移動(dòng)處理器。Sinnott[18]等采用改進(jìn)的Faster RCNN實(shí)現(xiàn)移動(dòng)端實(shí)時(shí)檢測(cè)狗品種,但是檢測(cè)模型對(duì)于移動(dòng)端處理器來(lái)說過于龐大,圖像檢測(cè)過程通過服務(wù)器來(lái)完成,移動(dòng)端只進(jìn)行圖像的采集。
筆者使用MobileNetV3網(wǎng)絡(luò)結(jié)構(gòu)作為YOLOv4(you only look once v4)的主干網(wǎng)絡(luò)實(shí)現(xiàn)網(wǎng)絡(luò)輕量化以適應(yīng)移動(dòng)機(jī)器人的移動(dòng)處理器。同時(shí),針對(duì)人和貓、狗等室內(nèi)生物體在成像平面大小差異大的情況,增加主干網(wǎng)絡(luò)的輸出特征層并對(duì)每個(gè)特征層進(jìn)行空間金字塔池化,從而增加輸出特征圖的語(yǔ)義特征和空間信息,提高目標(biāo)檢測(cè)的精度,增強(qiáng)小目標(biāo)檢測(cè)的能力。針對(duì)K-means算法對(duì)于初始質(zhì)心敏感的問題,使用K-means++算法對(duì)生物體數(shù)據(jù)集進(jìn)行聚類得到先驗(yàn)框,減小初始點(diǎn)對(duì)聚類結(jié)果的影響,提高目標(biāo)檢測(cè)的精度。
YOLO系列算法首先將輸入圖像調(diào)整為指定的大小,然后將圖像劃分為S×S的網(wǎng)格單元,每個(gè)網(wǎng)格單元負(fù)責(zé)預(yù)測(cè)成像中心落到該網(wǎng)格單元中的物體,YOLOv4檢測(cè)原理如圖1所示。
圖1 YOLOv4檢測(cè)原理
為使YOLOv4算法可以在移動(dòng)機(jī)器人處理器上運(yùn)行,將YOLOv4的主干特征提取網(wǎng)絡(luò)CSPDarknet53替換為MobileNet系列以實(shí)現(xiàn)網(wǎng)絡(luò)的輕量化。針對(duì)移動(dòng)端和嵌入式視覺,Google提出了基于深度可分離卷積的輕量型深度學(xué)習(xí)框架MobileNet[19]。
深度可分離卷積分為深度卷積和點(diǎn)卷積兩步進(jìn)行。與傳統(tǒng)卷積相比,在精度基本保持不變的情況下,深度可分離卷積的卷積核參數(shù)數(shù)目大大減少,運(yùn)算速度大大提高,如圖2所示。在深度可分離卷積的基礎(chǔ)上,MobileNetV2[20]增加了具有線性瓶頸的倒殘差網(wǎng)絡(luò)結(jié)構(gòu)。2019年推出的MobileNetV3[21]算法使用與MnasNet相同的基于RNN(recurrent neural network)的控制器和分層分級(jí)搜索空間進(jìn)行平臺(tái)感知神經(jīng)網(wǎng)絡(luò)搜索,得到粗略的全局框架。然后使用NetAdapt方法對(duì)每一層進(jìn)行微調(diào)得到最終的網(wǎng)絡(luò)結(jié)構(gòu)。在深度可分離卷積和具有線性瓶頸的倒殘差模塊之外,MobileNetV3還引入了類似于swish的h-swish激活函數(shù)并且在網(wǎng)絡(luò)中加入了SE(squeeze excitation)模塊,進(jìn)一步提升目標(biāo)檢測(cè)的精度。
圖2 傳統(tǒng)卷積和深度可分離卷積示意圖
將MobileNetV3網(wǎng)絡(luò)的深度特征提取部分作為YOLOv4主干網(wǎng)絡(luò)進(jìn)行算法的輕量化,以適應(yīng)移動(dòng)機(jī)器人應(yīng)用場(chǎng)景。
在YOLOv4的PANet(path aggregation network)模塊基礎(chǔ)上,增加一個(gè)從主干網(wǎng)絡(luò)輸入的底層特征圖,將更加豐富的空間信息通過較短路徑的下采樣傳遞到頂層特征圖。改進(jìn)后的頸部網(wǎng)絡(luò)如圖3所示,頂層特征圖的語(yǔ)義信息通過PANet的FPN(feature pyramid networks)上采樣傳遞到新增特征層。在PANet增加的特征層處增加一個(gè)輸出YOLO層,將3尺度檢測(cè)改為4尺度檢測(cè),預(yù)測(cè)網(wǎng)格更加細(xì)化,提高小目標(biāo)檢測(cè)能力,減少漏檢。
圖3 PANet網(wǎng)絡(luò)結(jié)構(gòu)
改進(jìn)后的的目標(biāo)檢測(cè)算法對(duì)每個(gè)主干網(wǎng)絡(luò)輸出特征都進(jìn)行金字塔最大池化,增加輸出特征圖的感受野。改進(jìn)目標(biāo)檢測(cè)算法網(wǎng)絡(luò)如圖4所示,輸入圖像為416×416,Mod模塊是目標(biāo)檢測(cè)算法主干網(wǎng)絡(luò)的特征提取和下采樣模塊,對(duì)應(yīng)于MobileNetV3是增加了SE模塊且具有線性瓶頸的倒殘差結(jié)構(gòu)。CBL(ConV+BN+Leaky_relu)模塊為卷積、批歸一化和Leaky Relu函數(shù)激活的組合。
圖4 改進(jìn)目標(biāo)檢測(cè)算法網(wǎng)絡(luò)
YOLOv4采用標(biāo)定框和先驗(yàn)框的交并比(intersection over union, IOU)作為相似度評(píng)價(jià)指標(biāo),使用K-means算法進(jìn)行聚類得到9個(gè)先驗(yàn)框的尺寸進(jìn)行訓(xùn)練和預(yù)測(cè)。K-means算法的初始聚類中心是隨機(jī)選取的,不同的聚類中心得到的聚類結(jié)果不同。針對(duì)K-means算法對(duì)初始質(zhì)心敏感的問題,采用K-means++算法進(jìn)行先驗(yàn)框的聚類。與K-means算法隨機(jī)選擇全部初始聚類中心不同,采取的K-means++聚類方法隨機(jī)生成第一個(gè)聚類中心,其他初始聚類中心是在已知聚類中心的基礎(chǔ)上產(chǎn)生的。算法首先計(jì)算所有標(biāo)定框和所有已知聚類中心的距離后得到每個(gè)標(biāo)定框?qū)τ谒芯垲愔行牡淖疃叹嚯x。然后以這些最短距離作為依據(jù)使用輪盤賭法得出全部K個(gè)聚類中心。K-means++算法的偽代碼如表1所示。
表1 K-means++算法偽代碼
最常見的室內(nèi)生物體包括人、貓、狗。使用PASCAL VOC2007數(shù)據(jù)集中包含人、貓、狗的圖像和Microsoft COCO數(shù)據(jù)集中包含貓和狗的部分?jǐn)?shù)據(jù)共14 252幅圖像,30 913生物體實(shí)列,其中,訓(xùn)練集占60%,測(cè)試集占40%。模型訓(xùn)練環(huán)境為:CPU:Intel Core i7-9750(2.6 GHz/L3 12M),GPU:NVIDIA Geforce RTX 2070,使用Python的Keras框架。
采用K-means++對(duì)數(shù)據(jù)集聚類得到12個(gè)先驗(yàn)框的尺寸:(14,26),(22,64),(35,34),(38,110),(61,59),(64,171),(94,104),(108,243),(170,148),(191,317),(302,208),(362,360)。目標(biāo)檢測(cè)算法訓(xùn)練過程設(shè)置100個(gè)epoch,前50個(gè)epoch的學(xué)習(xí)率設(shè)置為0.001,batchsize設(shè)置為8,后50個(gè)epoch的學(xué)習(xí)率設(shè)置為0.000 1,每個(gè)epoch迭代1 120次,batchsize設(shè)置為2,每個(gè)epoch迭代4 480次,整個(gè)訓(xùn)練過程一共迭代280 000次。
在YOLOv4的基礎(chǔ)上對(duì)目標(biāo)檢測(cè)算法進(jìn)行改進(jìn),得到如表2所示的幾組網(wǎng)絡(luò)結(jié)構(gòu)。算法1為YOLOv4算法,算法2為主干網(wǎng)絡(luò)替換為MobileNetV1后的輕量化YOLOv4算法,在算法2的基礎(chǔ)上依次增加YOLO層、改進(jìn)先驗(yàn)框聚類算法和增加SPP(spatial pyramid pooling)模塊得到算法3、算法4、算法5。算法6和算法7是將算法5的主干網(wǎng)絡(luò)替換為MobileNetV2和MobileNetV3得到的。算法7為筆者提出的適用于移動(dòng)機(jī)器人生物體檢測(cè)的改進(jìn)算法。
將表2所示7種不同結(jié)構(gòu)的算法在訓(xùn)練環(huán)境對(duì)測(cè)試集進(jìn)行檢測(cè)得到表3的實(shí)驗(yàn)結(jié)果。從表3可知,將YOLOv4的主干網(wǎng)絡(luò)CSPDarknet53輕量化為MobileNet系列之后,運(yùn)算速度大大提高,單幅圖像檢測(cè)時(shí)間減少為原來(lái)的1/3。符合移動(dòng)機(jī)器人的應(yīng)用要求。算法3、算法4、算法5相比于算法2的平均檢測(cè)精度逐步提升,驗(yàn)證了提出的改進(jìn)策略可以提升算法的檢測(cè)性能。
表2 算法配置
表3 算法性能比較
對(duì)算法主干網(wǎng)絡(luò)替換為Mobilnet系列后的算法2和更改頸部網(wǎng)絡(luò)后的算法5、算法6、算法7在測(cè)試集上的檢測(cè)結(jié)果進(jìn)行比較,分析改進(jìn)算法在各種情況下的生物體檢測(cè)性能。從圖5可知,當(dāng)圖像中待檢測(cè)生物體數(shù)目較少且目標(biāo)較大時(shí),算法2、算法5、算法6、算法7的檢測(cè)效果相當(dāng)。
圖5 少目標(biāo)檢測(cè)示例
與增加了YOLO層的3個(gè)算法相比,算法2對(duì)于小目標(biāo)的檢測(cè)效果較差。從圖6可知,算法5、算法6對(duì)于小目標(biāo)物體的檢測(cè)效果相當(dāng),主干網(wǎng)絡(luò)中SE模塊的引入使得算法7對(duì)極小的目標(biāo)檢測(cè)能力相比較算法5和算法6有所提升。
圖6 小目標(biāo)檢測(cè)示例
從圖7可知,當(dāng)圖像中生物體數(shù)量較多時(shí),由于PANet輸入特征層和金字塔最大池化層的增加,算法5、算法6、算法7比算法2檢測(cè)效果好。主干網(wǎng)絡(luò)為MobilenetV3的算法7在多目標(biāo)檢測(cè)中效果最好。
圖7 多目標(biāo)檢測(cè)示例
將改進(jìn)后的目標(biāo)檢測(cè)算法應(yīng)用于如圖8所示的移動(dòng)機(jī)器人進(jìn)行可用性分析。機(jī)器人的處理器為ARM Cortex-A72 1.5 GHz,GPU:Broadcom VideoCore VI@ 500 MHz。為了使得機(jī)器人有更強(qiáng)的運(yùn)算能力,在樹莓派4b上配置兩個(gè)神經(jīng)計(jì)算棒(intel neural compute stick 2)進(jìn)行卷積神經(jīng)網(wǎng)絡(luò)的運(yùn)算推理。
圖8 移動(dòng)機(jī)器人及其視覺單元
機(jī)器人分別在客廳、陽(yáng)臺(tái)和貓咖等場(chǎng)景進(jìn)行視覺采樣識(shí)別。在此過程中,樹莓派4b控制相機(jī)實(shí)時(shí)采集圖像數(shù)據(jù),目標(biāo)檢測(cè)的推理過程在神經(jīng)計(jì)算棒上進(jìn)行。目標(biāo)檢測(cè)的結(jié)果保存在連接在樹莓派上的SD(secure digital memorycard)卡中。機(jī)器人根據(jù)檢測(cè)框在圖像中的位置實(shí)時(shí)進(jìn)行運(yùn)動(dòng),保證待檢測(cè)目標(biāo)始終位于相機(jī)視野范圍之內(nèi)。
在客廳場(chǎng)景中,首先單人在機(jī)器人視野范圍內(nèi)進(jìn)行往復(fù)直線運(yùn)動(dòng),包括運(yùn)動(dòng)過程中的轉(zhuǎn)身。然后雙人進(jìn)行圓周軌跡運(yùn)動(dòng),運(yùn)動(dòng)過程中人會(huì)進(jìn)行姿態(tài)的調(diào)整。在雙人運(yùn)動(dòng)時(shí)會(huì)出現(xiàn)目標(biāo)遮擋的現(xiàn)象。從圖9可知,移動(dòng)機(jī)器人視覺單元在客廳的環(huán)境中可以準(zhǔn)確地識(shí)別人。對(duì)拍攝視角變化、人和攝像頭距離遠(yuǎn)近及人的姿態(tài)變化具有魯棒性。在陽(yáng)臺(tái)場(chǎng)景中,狗進(jìn)行隨機(jī)運(yùn)動(dòng),人在狗的旁邊與狗互動(dòng)。整個(gè)過程狗的姿態(tài)有較大的變化,在距離相機(jī)較遠(yuǎn)時(shí)狗在圖像中的投影較小。從圖10可知,移動(dòng)機(jī)器人可以識(shí)別不同姿態(tài)的狗和人,對(duì)于小目標(biāo)和遮擋生物體具有較好的識(shí)別能力。貓咖場(chǎng)景較為復(fù)雜,生物體的數(shù)量也較多,人和貓都進(jìn)行隨機(jī)運(yùn)動(dòng)。從圖11可知,改進(jìn)的算法可以準(zhǔn)確識(shí)別不同品種的貓,使移動(dòng)機(jī)器人具備穩(wěn)定的多目標(biāo)多種類檢測(cè)能力。同時(shí)算法對(duì)于在圖像中較小的目標(biāo)具有良好的識(shí)別能力,在復(fù)雜多變的場(chǎng)景中可以穩(wěn)定準(zhǔn)確地識(shí)別生物體。改進(jìn)后的算法在機(jī)器人移動(dòng)平臺(tái)上的檢測(cè)速度達(dá)到18 fps,比YOLOv4算法每秒多檢測(cè)14幀圖像,滿足機(jī)器人的視覺采樣需求。
圖9 多人場(chǎng)景識(shí)別
圖10 人、狗場(chǎng)景識(shí)別
圖11 人、貓場(chǎng)景識(shí)別
通過實(shí)驗(yàn)可知,改進(jìn)的YOLOv4算法可以在移動(dòng)機(jī)器人上準(zhǔn)確、魯棒地檢測(cè)生物體。
將YOLOv4的主干網(wǎng)絡(luò)替換為MobileNetV3實(shí)現(xiàn)網(wǎng)絡(luò)架構(gòu)的輕量化,并在此基礎(chǔ)上改進(jìn)PANet結(jié)構(gòu)、增加SPP模塊數(shù)量得到適用于移動(dòng)機(jī)器人的目標(biāo)檢測(cè)算法。在檢測(cè)精度相當(dāng)?shù)那闆r下改進(jìn)后的目標(biāo)檢測(cè)算法單幅圖像的檢測(cè)時(shí)間為YOLOv4的30.3%。實(shí)驗(yàn)表明,將改進(jìn)后的算法應(yīng)用于移動(dòng)機(jī)器人可以實(shí)現(xiàn)對(duì)多目標(biāo)、小目標(biāo)和遮擋目標(biāo)的檢測(cè),在復(fù)雜環(huán)境中可以穩(wěn)定準(zhǔn)確檢測(cè)生物體,檢測(cè)速度達(dá)到18 fps,比YOLOv4算法每秒多檢測(cè)14幀圖像。