馬 晨, 蘇易衡, 張紫鈺, 楊昌儒, 馬玉凱, 李和洋
(北京信息科技大學儀器科學與光電工程學院,北京 100192)
隨著個人和企業安全意識的不斷提高,傳統安防體系已經難以滿足當今社會的智能化需求。近幾年,在國家政策的扶持下,催生了具有半自主、自主安全防護功能的安防機器人,用以解決企業或保密單位的安全隱患,巡邏監控和災情預警。
安防機器人現處于起步階段,但其廣闊的市場需求,有著巨大的發展潛力。國內研發用于測溫的5G巡邏機器人千巡F1[1],通過算法優化和系統校正,機器人可以在5 m內同時給10 人進行非接觸式測溫,并具有戴口罩智能識別等功能。新加坡的OTSAW Digital 將安防機器人和偵查無人機有機地整合在一起,通過先進的機器學習算法和3D SLAM 技術,OR3[2]的導航系統等技術設計的O-R3 能夠感知其周圍環境,具有極強的場景理解能力。安防機器人在特定的領域已取得較大進展,但針對傳統監控安防系統的預防報警能力差,監控范圍窄等諸多弊端,未給出有效解決方案。
針對機器人的監控報警、人臉識別功能,本文設計的智能安防機器人采用輕量化改進后的YOLOv5 檢測算法結合ArcFace 人臉識別算法方案對不同角度、不同距離的人臉進行識別檢測,通過FreeRTOS 操作系統[3]構建巡邏任務,對應用場所進行安防監控。為保證識別檢測的實時性,本文重新對YOLOv5 檢測算法Backbone層、Neck 層進行設計,并分別對輸入圖片進行卷積和最大池化操作,此外機器人移動部分采用4-Mecanum輪獨立懸掛結構[4],以保證機器人在崎嶇路面有較好的通過性。
智能安防機器人采用主從式(C/S)架構[5],監控平臺作為客戶端,可以下達最高優先級指令,機器人本體作為服務器,其機器人本體實物系統框架如圖1 所示。機器人與遠程客戶端通過圖傳模塊采集周圍環境信息,在5 GHz頻段無線傳輸給客戶端,實現對應用場所的視頻監控,同時可通過遠程客戶端使用D-BUS 通信控制機器人行為[6]。機器人模塊控制是通過FreeRTOS操作系統構建操作任務,處理機器人各硬件系統采集的數據,實現機器人人臉識別、自動避障、智能巡邏等功能。
智能安防機器人硬件結構如圖2 所示。機器人信息采集裝置工業相機使用型號為MER-039-860U3C數字相機,其鏡頭焦距8 mm,具有體積小,成像質量高等特點,上位機(HZHY-AL310UAV Nx)搭載Xavier NX核心板,采用6-core Carmel ARM 64 位CPU 其算力足夠滿足系統要求。下位機(STM32F407IG)采用高性能STM32 主控芯片,擁有IIC、CAN、UART 等多個接口,并集成高精度IMU 傳感器,滿足機器人的控制所需。GY-TOF10M紅外激光測距模塊通過IIC 接口連接到下位機上,用于機器人的自動避障,其在測量距離可達10 m,并在15 cm 到3 m 測量范圍內,精度可達±5 cm。導電滑環(MT0522)擁有6 路線材輸入輸出,其內徑φ5 mm,外徑φ22 mm,有效載荷電流0 ~2 A,云臺可以相對底盤360°旋轉,以助于機器人有較寬的視野。底盤運動電動機為直流無刷電動機M3508,其配備了C620 電調,能夠實時反饋電動機的旋轉角度、速度、溫度等信息。云臺電動機M6020 內部自帶編碼器、溫度傳感器等。電源管理模塊輸出為24 V穩定直流電壓,為整個系統提供動力。

圖2 智能安防機器人硬件結構
1.2.1 軟件系統框架設計
智能安防機器人主控板的軟件框架如圖3 所示,由上到下分為任務層、功能模塊層、底層配置3 個層級,下層級受上層級的調度。其中任務層分為巡邏任務、操作端控制任務、故障檢測任務和通信任務。通信任務主要完成上位機或者客戶端與控制板STM32F407 的信息傳輸,操作端控制任務主要是對云臺、發射機構、底盤的控制,在不同的模式下,操作系統對各任務有著不同的調度。此種設計不僅程序架構清晰、方便移植而且程序在后期維護時更加高效[7]。

圖3 安防機器人軟件系統框架
1.2.2 巡邏任務結構設計與分析
基于FreeRTOS 操作系統建立巡邏控制任務[8],巡邏任務控制流程如圖4 所示。可通過客戶端設置機器人的控制模式。在巡邏控制模式下,機器人云臺以固定增量360°旋轉,底盤按照固定軌跡運動,實現保密單位或軍事領地的無死角監控。當機器人檢測識別到非法入侵者或可疑人員時,運算平臺NX 將坐標轉換后的目標位置信息通過UART 通信發送到控制板,控制板得到角度增量后通過雙閉環PID 算法[9]使云臺到達目標角度。同時機器人觸發報警系統,通過客戶端切換控制模式為手動控制,可進一步對可疑人員進行追蹤與觀察,必要時,可使用云臺上的發射裝置進行非致命性攻擊。

圖4 巡邏任務控制流程
人臉識別與檢測設計的流程如圖5 所示。首先利用相機獲取圖像,將圖像存于緩沖隊列中,讀取隊列中的圖像利用YOLOv5 算法檢測行人與人臉;再利用快速最近鄰算法將行人與人臉進行匹配;最后用ArcFace算法[10]提取特征與數據庫信息匹配實現人臉識別。整個檢測識別流程完成后,用ORB 特征點匹配算法[11]進行環境定位、人臉數據保存等操作。

圖5 人臉識別與檢測系統流程
YOLOv5[12]雖然具有很強的實時性,但不能在資源受限的前端設備(ARM)運行,這就導致調用它非常麻煩。針對這個問題,本文重新對Backbone進行了設計,對輸入的圖片進行多次卷積和最大池化操作,對于下采樣的特征結果,采取分2 路的方法得到2 個張量,然后采用拼接的方法把將2 個張量合并到一起,在減小模型參數量的同時能夠獲得更深的特征圖語義信息。Neck層依然沿用PAN 結構,通過“快速下采樣”的方法,對其卷積通道和殘差結構進行了剪枝操作,實現在運行卷積網絡的時候減小參數。并保持YOLOv5的3 層Head輸出。
2.2.1 Backbone層優化設計
Backbone的結構設計如圖6 所示,在Backbone初始階段,為實現對圖像進行“快速下采樣”,提高效率并且提取深層語義特征,分別對輸入的圖片進行多次卷積和最大池化操作,并將二者的結果張量相合并傳入下一階段,其結構如圖7 所示。對于輸入為H×W×3(H為高度,W為寬度)的圖片,首先使用大小為3 ×3 的卷積核對圖片進行卷積操作,以2 個步長對原始輸入的圖像進行特征提取,初步提取C(C為通道)個維度特征,得的圖片,采用OpenCV中的雙曲線插值的方法將特征尺寸縮小了一版[13]。對于下采樣的特征結果,分2 路進行,一路使用1 ×1 的卷積核進行卷積操作運算得的圖片,以增加特征數量和增強網絡的非線性能力,采用一個大小為3 ×3 的卷積核,以2 個步長對特征圖像進行卷積操作,得的圖片;另一路采用一個大小為3 ×3 的卷積核以2 個步長對特征圖像進行卷積操作和最大池化(Max Pooling)并行操作后得到的圖片。這2 路運算分別得到一個張量,采用拼接的方法將2 個張量合并到一起,再使用大小為3 ×3 的卷積核對合并的特征圖像進行卷積操作,得到尺寸為的輸出特征圖像,以進一步提取特征并減小特征圖像的大小。這種方法在降低網絡的運算量的同時,還可以有效地保證卷積網絡的特征提取能力。最后,再通過3 個Resnet模塊[14]繼續進行語義特征提取,并分為3 層輸入到Neck層中進行特征融合。

圖6 Backbone結構

圖7 卷積和最大池化結構
2.2.2 Neck層優化設計
為了在運行卷積網絡的時候減小參數,對Neck的卷積通道數和殘差結構進行了剪枝,操作流程圖如圖6 所示。根據運算數據顯示,卷積網絡優化之前的運算速度為72 ms,而優化之后的運算速度為31 ms,比優化之前的速度提升了大約2.322 倍,有效提高了卷積網絡的運行效率,增強了Neck層的魯棒性。本文的Neck層由FPN +PAN 組成,在FPN 的后面添加一個自底向上的金字塔。這樣的操作對FPN進行了補充,將低層的強定位特征傳遞上去,FPN 可以把深層的語義特征傳到淺層,從而增強多個尺度上的語義表達。而PAN則相反把淺層的定位信息傳導到深層,增強多個尺度上的定位能力。
Head的損失函數為Bounding box 損失函數。由于IOU_loss沒有辦法呈現出預測框距離真實框有多遠,損失函數不可導,導致無法進行優化,所以YOLOv5 采用的是CIOU_Loss,其表達式為:
式中:Distance_2 為預測框的中心點和真實框的中心點的歐氏距離;Distance_C 為預測框和真實框之間的距離;IOU為2 個邊界框(bounding box)的交集與并集之比;ν為長寬比影響因子;gt為真實框;p為預測框。
CIOU_Loss考慮了重疊面積,長寬比和中心點距離。接著利用NMS非極大值抑制,把置信度(預測這個網格里是否有目標的置信度)最高的網格的邊界箱作為極大邊界箱,計算極大邊界箱和其他幾個網格的邊界箱的IOU,如果超過一個閾值,就認為2 個網格實際上預測的是同一個物體,就把其中置信度比較小的刪除。然后根據需要對數據格式進行reshape,同時對原始格點坐標做相應的激活。
2.3.1 ArcFace算法
本文人臉識別算法采用ArcFace 算法。ArcFace算法[15]由于處理光照、姿勢和表情的巨大變化的能力強,其比傳統的人臉識別方法更準確、魯棒性更高。并且在多個基準人臉識別數據集(如LFW、IJB-C 和MegaFace)上實現了最先進的精度,并還可以使用大規模數據集進行高效訓練,使其適用于具有大量人臉的真實場景。圖8 所示為ArcFace 人臉識別過程[16],其使用深度神經網絡計算給定人臉圖像的歸一化嵌入后,應用softmax 損失函數來提高嵌入的判別能力。本文采用遷移學習[17]的方式重新訓練ArcFace,以提高模型精度,進而改善識別結果。

圖8 Arcface人臉識別過程
2.3.2 ORB模型提取檢測人臉的特征
識別到人臉后,利用ORB模型提取檢測到的人臉的特征,提取過程如圖9 所示。為確保取出來的點具有一致性,本文重新建立坐標系,使新的坐標系可以跟隨圖片的旋轉而旋轉。

圖9 ORB特征點提取過程
通過矩法來計算特征點以r為半徑范圍內的質心,特征點坐標到質心形成一個向量作為該特征點的方向。矩的計算式為
式中:I(x,y)為圖像顏色深度表達式;x,y分別為的是像素坐標;p,q為圖像中的像素點。該矩的質心為
假設角點坐標為O,則向量的角度(即該特征點的方向)為
式中,m01、m10、m00為矩。
利用余弦相似度算法可知,余弦值越接近1,2 個向量越相似,余弦值越接近0,2 個向量越不相似,其計算式為
式中:i=1,2,…,n;n為向量x的維度,向量x和向量y維度相同;a,b分別為向量空間中的2 個向量。
本實驗利用widerface開源數據集,根據實際的工作環境,對以不同角度、不同距離出現在機器人視野范圍內的人進行檢測,并給出其檢測準確率(該準確率是被正確檢測出人臉占檢測出人臉的比例)。如圖10所示,當距離為3 m,偏轉角度為45°時,檢測準確率為0.87;當距離為3 m,偏轉角度為0°時,檢測準確率為0.90;當距離為6 m,偏轉角度為0°時,檢測準確率為0.88;當距離為9 m,偏轉角度為0°時,檢測準確率為0.87。其中當距離為3 m,偏轉角度為45°時檢測速度最快,檢測速度為11 ms。

圖10 不同情形的人臉識別算法檢測效果
進一步對機器人監控報警效果進行測試,無人時機器人正常巡邏,可通過客戶端查看機器人的電量、運行速度等信息[見圖11(a)];當有人出現時,機器人利用檢測識別算法檢測出人臉與已建立的工作人員信息庫比對,當判定為非工作人員時觸發報警系統,在客戶端上出現入侵警告標識[見圖11(b)]。工作人員可通過控制機器人對入侵者進行進一步追蹤。

圖11 客戶端監控顯示效果
本文設計并搭建了一款智能安防機器人,結合實際應用條件對其識別算法進行優化設計。網絡的運算速度比之前提升了2. 322 倍;檢測最高準確率為0.90,最低檢測準確率為0. 87,最快檢測速度為11ms;可隨時利用ORB特征點匹配算法進行環境定位等操作,并在硬件部分留有PWM,UART,IIC 等接口,可外接煙霧探測器、溫濕度傳感器等對機器人功能進行拓展,具有良好的應用前景。