馬 晨, 蘇易衡, 張紫鈺, 楊昌儒, 馬玉凱, 李和洋
(北京信息科技大學(xué)儀器科學(xué)與光電工程學(xué)院,北京 100192)
隨著個人和企業(yè)安全意識的不斷提高,傳統(tǒng)安防體系已經(jīng)難以滿足當(dāng)今社會的智能化需求。近幾年,在國家政策的扶持下,催生了具有半自主、自主安全防護(hù)功能的安防機(jī)器人,用以解決企業(yè)或保密單位的安全隱患,巡邏監(jiān)控和災(zāi)情預(yù)警。
安防機(jī)器人現(xiàn)處于起步階段,但其廣闊的市場需求,有著巨大的發(fā)展?jié)摿?。國?nèi)研發(fā)用于測溫的5G巡邏機(jī)器人千巡F1[1],通過算法優(yōu)化和系統(tǒng)校正,機(jī)器人可以在5 m內(nèi)同時給10 人進(jìn)行非接觸式測溫,并具有戴口罩智能識別等功能。新加坡的OTSAW Digital 將安防機(jī)器人和偵查無人機(jī)有機(jī)地整合在一起,通過先進(jìn)的機(jī)器學(xué)習(xí)算法和3D SLAM 技術(shù),OR3[2]的導(dǎo)航系統(tǒng)等技術(shù)設(shè)計的O-R3 能夠感知其周圍環(huán)境,具有極強(qiáng)的場景理解能力。安防機(jī)器人在特定的領(lǐng)域已取得較大進(jìn)展,但針對傳統(tǒng)監(jiān)控安防系統(tǒng)的預(yù)防報警能力差,監(jiān)控范圍窄等諸多弊端,未給出有效解決方案。
針對機(jī)器人的監(jiān)控報警、人臉識別功能,本文設(shè)計的智能安防機(jī)器人采用輕量化改進(jìn)后的YOLOv5 檢測算法結(jié)合ArcFace 人臉識別算法方案對不同角度、不同距離的人臉進(jìn)行識別檢測,通過FreeRTOS 操作系統(tǒng)[3]構(gòu)建巡邏任務(wù),對應(yīng)用場所進(jìn)行安防監(jiān)控。為保證識別檢測的實時性,本文重新對YOLOv5 檢測算法Backbone層、Neck 層進(jìn)行設(shè)計,并分別對輸入圖片進(jìn)行卷積和最大池化操作,此外機(jī)器人移動部分采用4-Mecanum輪獨立懸掛結(jié)構(gòu)[4],以保證機(jī)器人在崎嶇路面有較好的通過性。
智能安防機(jī)器人采用主從式(C/S)架構(gòu)[5],監(jiān)控平臺作為客戶端,可以下達(dá)最高優(yōu)先級指令,機(jī)器人本體作為服務(wù)器,其機(jī)器人本體實物系統(tǒng)框架如圖1 所示。機(jī)器人與遠(yuǎn)程客戶端通過圖傳模塊采集周圍環(huán)境信息,在5 GHz頻段無線傳輸給客戶端,實現(xiàn)對應(yīng)用場所的視頻監(jiān)控,同時可通過遠(yuǎn)程客戶端使用D-BUS 通信控制機(jī)器人行為[6]。機(jī)器人模塊控制是通過FreeRTOS操作系統(tǒng)構(gòu)建操作任務(wù),處理機(jī)器人各硬件系統(tǒng)采集的數(shù)據(jù),實現(xiàn)機(jī)器人人臉識別、自動避障、智能巡邏等功能。
智能安防機(jī)器人硬件結(jié)構(gòu)如圖2 所示。機(jī)器人信息采集裝置工業(yè)相機(jī)使用型號為MER-039-860U3C數(shù)字相機(jī),其鏡頭焦距8 mm,具有體積小,成像質(zhì)量高等特點,上位機(jī)(HZHY-AL310UAV Nx)搭載Xavier NX核心板,采用6-core Carmel ARM 64 位CPU 其算力足夠滿足系統(tǒng)要求。下位機(jī)(STM32F407IG)采用高性能STM32 主控芯片,擁有IIC、CAN、UART 等多個接口,并集成高精度IMU 傳感器,滿足機(jī)器人的控制所需。GY-TOF10M紅外激光測距模塊通過IIC 接口連接到下位機(jī)上,用于機(jī)器人的自動避障,其在測量距離可達(dá)10 m,并在15 cm 到3 m 測量范圍內(nèi),精度可達(dá)±5 cm。導(dǎo)電滑環(huán)(MT0522)擁有6 路線材輸入輸出,其內(nèi)徑φ5 mm,外徑φ22 mm,有效載荷電流0 ~2 A,云臺可以相對底盤360°旋轉(zhuǎn),以助于機(jī)器人有較寬的視野。底盤運(yùn)動電動機(jī)為直流無刷電動機(jī)M3508,其配備了C620 電調(diào),能夠?qū)崟r反饋電動機(jī)的旋轉(zhuǎn)角度、速度、溫度等信息。云臺電動機(jī)M6020 內(nèi)部自帶編碼器、溫度傳感器等。電源管理模塊輸出為24 V穩(wěn)定直流電壓,為整個系統(tǒng)提供動力。
圖2 智能安防機(jī)器人硬件結(jié)構(gòu)
1.2.1 軟件系統(tǒng)框架設(shè)計
智能安防機(jī)器人主控板的軟件框架如圖3 所示,由上到下分為任務(wù)層、功能模塊層、底層配置3 個層級,下層級受上層級的調(diào)度。其中任務(wù)層分為巡邏任務(wù)、操作端控制任務(wù)、故障檢測任務(wù)和通信任務(wù)。通信任務(wù)主要完成上位機(jī)或者客戶端與控制板STM32F407 的信息傳輸,操作端控制任務(wù)主要是對云臺、發(fā)射機(jī)構(gòu)、底盤的控制,在不同的模式下,操作系統(tǒng)對各任務(wù)有著不同的調(diào)度。此種設(shè)計不僅程序架構(gòu)清晰、方便移植而且程序在后期維護(hù)時更加高效[7]。
圖3 安防機(jī)器人軟件系統(tǒng)框架
1.2.2 巡邏任務(wù)結(jié)構(gòu)設(shè)計與分析
基于FreeRTOS 操作系統(tǒng)建立巡邏控制任務(wù)[8],巡邏任務(wù)控制流程如圖4 所示??赏ㄟ^客戶端設(shè)置機(jī)器人的控制模式。在巡邏控制模式下,機(jī)器人云臺以固定增量360°旋轉(zhuǎn),底盤按照固定軌跡運(yùn)動,實現(xiàn)保密單位或軍事領(lǐng)地的無死角監(jiān)控。當(dāng)機(jī)器人檢測識別到非法入侵者或可疑人員時,運(yùn)算平臺NX 將坐標(biāo)轉(zhuǎn)換后的目標(biāo)位置信息通過UART 通信發(fā)送到控制板,控制板得到角度增量后通過雙閉環(huán)PID 算法[9]使云臺到達(dá)目標(biāo)角度。同時機(jī)器人觸發(fā)報警系統(tǒng),通過客戶端切換控制模式為手動控制,可進(jìn)一步對可疑人員進(jìn)行追蹤與觀察,必要時,可使用云臺上的發(fā)射裝置進(jìn)行非致命性攻擊。
圖4 巡邏任務(wù)控制流程
人臉識別與檢測設(shè)計的流程如圖5 所示。首先利用相機(jī)獲取圖像,將圖像存于緩沖隊列中,讀取隊列中的圖像利用YOLOv5 算法檢測行人與人臉;再利用快速最近鄰算法將行人與人臉進(jìn)行匹配;最后用ArcFace算法[10]提取特征與數(shù)據(jù)庫信息匹配實現(xiàn)人臉識別。整個檢測識別流程完成后,用ORB 特征點匹配算法[11]進(jìn)行環(huán)境定位、人臉數(shù)據(jù)保存等操作。
圖5 人臉識別與檢測系統(tǒng)流程
YOLOv5[12]雖然具有很強(qiáng)的實時性,但不能在資源受限的前端設(shè)備(ARM)運(yùn)行,這就導(dǎo)致調(diào)用它非常麻煩。針對這個問題,本文重新對Backbone進(jìn)行了設(shè)計,對輸入的圖片進(jìn)行多次卷積和最大池化操作,對于下采樣的特征結(jié)果,采取分2 路的方法得到2 個張量,然后采用拼接的方法把將2 個張量合并到一起,在減小模型參數(shù)量的同時能夠獲得更深的特征圖語義信息。Neck層依然沿用PAN 結(jié)構(gòu),通過“快速下采樣”的方法,對其卷積通道和殘差結(jié)構(gòu)進(jìn)行了剪枝操作,實現(xiàn)在運(yùn)行卷積網(wǎng)絡(luò)的時候減小參數(shù)。并保持YOLOv5的3 層Head輸出。
2.2.1 Backbone層優(yōu)化設(shè)計
Backbone的結(jié)構(gòu)設(shè)計如圖6 所示,在Backbone初始階段,為實現(xiàn)對圖像進(jìn)行“快速下采樣”,提高效率并且提取深層語義特征,分別對輸入的圖片進(jìn)行多次卷積和最大池化操作,并將二者的結(jié)果張量相合并傳入下一階段,其結(jié)構(gòu)如圖7 所示。對于輸入為H×W×3(H為高度,W為寬度)的圖片,首先使用大小為3 ×3 的卷積核對圖片進(jìn)行卷積操作,以2 個步長對原始輸入的圖像進(jìn)行特征提取,初步提取C(C為通道)個維度特征,得的圖片,采用OpenCV中的雙曲線插值的方法將特征尺寸縮小了一版[13]。對于下采樣的特征結(jié)果,分2 路進(jìn)行,一路使用1 ×1 的卷積核進(jìn)行卷積操作運(yùn)算得的圖片,以增加特征數(shù)量和增強(qiáng)網(wǎng)絡(luò)的非線性能力,采用一個大小為3 ×3 的卷積核,以2 個步長對特征圖像進(jìn)行卷積操作,得的圖片;另一路采用一個大小為3 ×3 的卷積核以2 個步長對特征圖像進(jìn)行卷積操作和最大池化(Max Pooling)并行操作后得到的圖片。這2 路運(yùn)算分別得到一個張量,采用拼接的方法將2 個張量合并到一起,再使用大小為3 ×3 的卷積核對合并的特征圖像進(jìn)行卷積操作,得到尺寸為的輸出特征圖像,以進(jìn)一步提取特征并減小特征圖像的大小。這種方法在降低網(wǎng)絡(luò)的運(yùn)算量的同時,還可以有效地保證卷積網(wǎng)絡(luò)的特征提取能力。最后,再通過3 個Resnet模塊[14]繼續(xù)進(jìn)行語義特征提取,并分為3 層輸入到Neck層中進(jìn)行特征融合。
圖6 Backbone結(jié)構(gòu)
圖7 卷積和最大池化結(jié)構(gòu)
2.2.2 Neck層優(yōu)化設(shè)計
為了在運(yùn)行卷積網(wǎng)絡(luò)的時候減小參數(shù),對Neck的卷積通道數(shù)和殘差結(jié)構(gòu)進(jìn)行了剪枝,操作流程圖如圖6 所示。根據(jù)運(yùn)算數(shù)據(jù)顯示,卷積網(wǎng)絡(luò)優(yōu)化之前的運(yùn)算速度為72 ms,而優(yōu)化之后的運(yùn)算速度為31 ms,比優(yōu)化之前的速度提升了大約2.322 倍,有效提高了卷積網(wǎng)絡(luò)的運(yùn)行效率,增強(qiáng)了Neck層的魯棒性。本文的Neck層由FPN +PAN 組成,在FPN 的后面添加一個自底向上的金字塔。這樣的操作對FPN進(jìn)行了補(bǔ)充,將低層的強(qiáng)定位特征傳遞上去,F(xiàn)PN 可以把深層的語義特征傳到淺層,從而增強(qiáng)多個尺度上的語義表達(dá)。而PAN則相反把淺層的定位信息傳導(dǎo)到深層,增強(qiáng)多個尺度上的定位能力。
Head的損失函數(shù)為Bounding box 損失函數(shù)。由于IOU_loss沒有辦法呈現(xiàn)出預(yù)測框距離真實框有多遠(yuǎn),損失函數(shù)不可導(dǎo),導(dǎo)致無法進(jìn)行優(yōu)化,所以YOLOv5 采用的是CIOU_Loss,其表達(dá)式為:
式中:Distance_2 為預(yù)測框的中心點和真實框的中心點的歐氏距離;Distance_C 為預(yù)測框和真實框之間的距離;IOU為2 個邊界框(bounding box)的交集與并集之比;ν為長寬比影響因子;gt為真實框;p為預(yù)測框。
CIOU_Loss考慮了重疊面積,長寬比和中心點距離。接著利用NMS非極大值抑制,把置信度(預(yù)測這個網(wǎng)格里是否有目標(biāo)的置信度)最高的網(wǎng)格的邊界箱作為極大邊界箱,計算極大邊界箱和其他幾個網(wǎng)格的邊界箱的IOU,如果超過一個閾值,就認(rèn)為2 個網(wǎng)格實際上預(yù)測的是同一個物體,就把其中置信度比較小的刪除。然后根據(jù)需要對數(shù)據(jù)格式進(jìn)行reshape,同時對原始格點坐標(biāo)做相應(yīng)的激活。
2.3.1 ArcFace算法
本文人臉識別算法采用ArcFace 算法。ArcFace算法[15]由于處理光照、姿勢和表情的巨大變化的能力強(qiáng),其比傳統(tǒng)的人臉識別方法更準(zhǔn)確、魯棒性更高。并且在多個基準(zhǔn)人臉識別數(shù)據(jù)集(如LFW、IJB-C 和MegaFace)上實現(xiàn)了最先進(jìn)的精度,并還可以使用大規(guī)模數(shù)據(jù)集進(jìn)行高效訓(xùn)練,使其適用于具有大量人臉的真實場景。圖8 所示為ArcFace 人臉識別過程[16],其使用深度神經(jīng)網(wǎng)絡(luò)計算給定人臉圖像的歸一化嵌入后,應(yīng)用softmax 損失函數(shù)來提高嵌入的判別能力。本文采用遷移學(xué)習(xí)[17]的方式重新訓(xùn)練ArcFace,以提高模型精度,進(jìn)而改善識別結(jié)果。
圖8 Arcface人臉識別過程
2.3.2 ORB模型提取檢測人臉的特征
識別到人臉后,利用ORB模型提取檢測到的人臉的特征,提取過程如圖9 所示。為確保取出來的點具有一致性,本文重新建立坐標(biāo)系,使新的坐標(biāo)系可以跟隨圖片的旋轉(zhuǎn)而旋轉(zhuǎn)。
圖9 ORB特征點提取過程
通過矩法來計算特征點以r為半徑范圍內(nèi)的質(zhì)心,特征點坐標(biāo)到質(zhì)心形成一個向量作為該特征點的方向。矩的計算式為
式中:I(x,y)為圖像顏色深度表達(dá)式;x,y分別為的是像素坐標(biāo);p,q為圖像中的像素點。該矩的質(zhì)心為
假設(shè)角點坐標(biāo)為O,則向量的角度(即該特征點的方向)為
式中,m01、m10、m00為矩。
利用余弦相似度算法可知,余弦值越接近1,2 個向量越相似,余弦值越接近0,2 個向量越不相似,其計算式為
式中:i=1,2,…,n;n為向量x的維度,向量x和向量y維度相同;a,b分別為向量空間中的2 個向量。
本實驗利用widerface開源數(shù)據(jù)集,根據(jù)實際的工作環(huán)境,對以不同角度、不同距離出現(xiàn)在機(jī)器人視野范圍內(nèi)的人進(jìn)行檢測,并給出其檢測準(zhǔn)確率(該準(zhǔn)確率是被正確檢測出人臉占檢測出人臉的比例)。如圖10所示,當(dāng)距離為3 m,偏轉(zhuǎn)角度為45°時,檢測準(zhǔn)確率為0.87;當(dāng)距離為3 m,偏轉(zhuǎn)角度為0°時,檢測準(zhǔn)確率為0.90;當(dāng)距離為6 m,偏轉(zhuǎn)角度為0°時,檢測準(zhǔn)確率為0.88;當(dāng)距離為9 m,偏轉(zhuǎn)角度為0°時,檢測準(zhǔn)確率為0.87。其中當(dāng)距離為3 m,偏轉(zhuǎn)角度為45°時檢測速度最快,檢測速度為11 ms。
圖10 不同情形的人臉識別算法檢測效果
進(jìn)一步對機(jī)器人監(jiān)控報警效果進(jìn)行測試,無人時機(jī)器人正常巡邏,可通過客戶端查看機(jī)器人的電量、運(yùn)行速度等信息[見圖11(a)];當(dāng)有人出現(xiàn)時,機(jī)器人利用檢測識別算法檢測出人臉與已建立的工作人員信息庫比對,當(dāng)判定為非工作人員時觸發(fā)報警系統(tǒng),在客戶端上出現(xiàn)入侵警告標(biāo)識[見圖11(b)]。工作人員可通過控制機(jī)器人對入侵者進(jìn)行進(jìn)一步追蹤。
圖11 客戶端監(jiān)控顯示效果
本文設(shè)計并搭建了一款智能安防機(jī)器人,結(jié)合實際應(yīng)用條件對其識別算法進(jìn)行優(yōu)化設(shè)計。網(wǎng)絡(luò)的運(yùn)算速度比之前提升了2. 322 倍;檢測最高準(zhǔn)確率為0.90,最低檢測準(zhǔn)確率為0. 87,最快檢測速度為11ms;可隨時利用ORB特征點匹配算法進(jìn)行環(huán)境定位等操作,并在硬件部分留有PWM,UART,IIC 等接口,可外接煙霧探測器、溫濕度傳感器等對機(jī)器人功能進(jìn)行拓展,具有良好的應(yīng)用前景。