楊強強 宋子誠 姜凌昊 吳佳成



關鍵詞:智能跟隨小車;超聲模塊;攝像頭;哈希算法;卡爾曼濾波
1 引言
截至目前,我國的人口基數仍然較大,在普通的超市和購物商場中,消費和購物的流程比較復雜,時間花費長。放置商品是普通的購物車唯一能做到的功能,其應用過于單一[1]。據中國連鎖經營協會數據統計,預計到今年,無人零售商店交易額將達到1.8萬億元[2]。但在當前階段,中國的無人超市發展仍在探索,而且在發展過程中還存在一些問題,人與人之間一些必要的接觸很難避免[3]。若想提高購物的效率,減少顧客間的接觸,本文提出了以Jetson nano開發板為核心控制器的智能跟隨購物小車,小車可以在識別顧客后,進行無接觸跟隨,直到整個購物過程結束。并設計了超聲波避障功能,以避免突然出現的行人或者購物車之間發生碰撞。
2 智能購物車硬件設計
2.1 硬件系統總體設計
系統硬件主要需要實現兩個功能:①在起始階段,根據攝像頭和圖像學習的知識,提取出目標人物的特征,確定要跟隨的目標并在使用過程中全程保持跟隨;②通過超聲波模塊定位與小車有一定距離的物體,躲避突然進入路線中的物體,避免發生碰撞。智能購物小車結構框圖如圖1所示。
2.2 Jetson nano 主控
Jetson Nano由英偉達出品的,是一款體積較小,性能較強的智能芯片,這款芯片包含了四核Cortex-A57 處理芯片,配備了4GB LPDDR 內存以及128 核Maxwell GPU,支持多種算法和AI 框架,如Tensor?Flow、PyTorch、Caffe 等,支持NVIDIA JetPack,這就使得許多神經網絡可以在開發板上并行運行,進而可以實現圖像分類、人臉識別、目標檢測、語音處理及物體識別追蹤等功能,適用于開發小結構、低成本、低能耗的設備[4]。
Jetson nano優點很多,例如體型微小,性能強大,性價比較高,整體采用類似樹莓派的硬件設計。而且其專為AI而設計,性能相比樹莓派更強大,可為機器人終端、工業視覺終端帶來足夠的AI算力。
2.3 超聲波避障模塊
超聲波模塊是具有避障功能的硬件。此模塊是根據超聲波的方向性好、反射能力強的特點設計的[5]。本購物小車中超聲模塊采用HC-SR04,它可提供2~400cm的非接觸式距離測試,測距精度可高達3mm。此款超聲波模塊性能穩定,體積小[6]。在使用中Jet?son nano板子控制兩個模塊每隔2秒依次輪流發出超聲波,當一定距離之內有障礙物時,會觸發避障算法進行躲避障礙物的移動[7]。主控器會根據攝像頭傳來的畫面分析備選路線,選取路線進行避障。
由超聲波檢測小車周圍物體,如果距離小于特定距離,就啟動避障算法,由主控模塊傳輸信號給下位機的單片機,單片機用來控制小車底盤和調整小車姿態,達到躲避障礙物的目的。主控部分連接圖如圖2所示。
3 智能購物小車軟件程序設計
智能購物小車的程序采用YOLO算法檢測畫面中的行人,根據初始選中的人完成跟隨和避障工作。具體流程圖如圖3所示。
3.1 YOLO 檢測框
首先,模型的backbone替換為了shufflenetV2,相比原先的backbone,內存減少了一些,更加輕量,其次Anchor的匹配機制,參考的是YOLOv5,然后是檢測頭的解耦合,這個也是參考YOLOv5的,將檢測框的回歸,背景的分類以及檢測類別的分類有YOLO的一個特征圖解耦成3個不同的特征圖,其中前景背景的分類以及檢測類別的分類采用同一網絡分支參數共享。采用BN層能夠加快模型收斂速度,對于正則化效果會降低過擬合的負面影響。
在YOLOv2中,每個卷積層后面都添加了BN層,并且不再使用drop out。使用BN 層后,YOLOv2 的mAP略有提升。YOLOv1先在ImageNet(224 * 224) 分類數據集上預訓練模型的主體部分(大部分目標檢測算法),獲得較好的分類效果,然后再訓練網絡的時候將網絡的輸入從224 * 224增加為448 * 448。但是直接切換分辨率,檢測模型可能難以快速適應高分辨率。所以YOLOv2增加了在ImageNet數據集上使用448 * 448的輸入來finetune分類網絡這一中間過程(10 epochs) 。使用高分辨率分類器后,YOLOv2 的mAP提升了約4%。
YOLOv2引入了一個anchor boxes的概念,這樣做的目的就是得到更高的召回率,YOLOv2的邊界框可以達到1000多個(論文中的實現是845個)。輸入由448 * 448 改為416 * 416,下采樣32 倍,輸出為13 *13 * 5 * 25。采用奇數的gird cell 是因為大圖像的中心往往位于圖像中間,為了避免四個gird cell參與預測,我們更希望用一個gird cell去預測。為了更快的運算速度,盡管mAP下降,召回率的上升揭示著這個的模型有更大的提升空間。
3.2 pHash 算法
pHash 指感知哈希算法,其利用離散余弦變換(DCT) 降低圖片的頻率,相比aHash有更好魯棒性[8]。基本原理為縮小尺寸。將圖片縮小為8 * 8后灰度化處理縮小的圖片,然后計算DCT。DCT是一種特殊的傅里葉變換,并且DCT矩陣從左上角到右下角代表越來越高頻率的系數,只保留左上角的低頻區域。之后計算哈希值,將每個DCT值,與平均值進行比較。大于或等于平均值,記為1,小于平均值,記為0,由此生成二進制數組。(與aHash類似)最后通過圖片匹配,計算漢明距離。
3.3 卡爾曼濾波
卡爾曼濾波(Kalman Filtering, KF) 算法通過線性系統狀態方程,利用系統輸入輸出的觀測數據,對系統狀態進行最優估計的算法。卡爾曼濾波的一個典型實例是從一組有限的,對物體位置的,包含噪聲的觀察序列中預測出物體的坐標位置及速度[9]。卡爾曼濾波在動態系統中便于估計系統的最優狀態。即使系統中含有噪聲在系統狀態參數里,卡爾曼濾波也能夠完成對狀態真實值的最優估計。
卡爾曼濾波的原理是通過輸入輸出觀測數據對系統狀態進行最優估計,對于運動狀態頻繁變化運動行為的預測更加適用。卡爾曼濾波動態軌跡預測系統的狀態方程如下所示:
其中,X (k) 表示系統狀態向量,描述了在k 時刻下運動對象狀態矢量;A(k) 表示狀態轉移矩陣,用于描述由前一時刻到當下時刻下的運動狀態轉移方式;T (k)為干擾轉移矩陣;W (k)表示運動模型的系統狀態噪聲,其統計特性與白噪聲或高斯噪聲相似;Z (k)表示觀測向量,描述了k 時刻的觀測值;H (k) 為觀測矩陣,對于單測量系統,H (k)為1*1維的矩陣;V (k)為運動估計過程中產生的觀測噪聲[10]。
遞歸算法是整個卡爾曼濾波的核心,遞歸可以使算法達到最優狀態估計的估計模型,前一時刻的估計值與當前時刻的觀測值做動態變換,來更新當前狀態變量的估計,基于前k個觀測值得出k時刻下的最優狀態估計x'(k),計算最小方差計算的策略公式如下所示。
3.4 檢測框漏檢算法
在程序運行的過程中,發現視頻中會有檢測框漏掉某幾幀的情況,為了減輕運行內存,提高識別和檢測框的效率,加入了一個算法來去掉多余的檢測框。首先算法給每個框賦予生命值。生命值的大小就是每個檢測框可以最大漏檢數。下一幀框的信息與上一幀的做匹配,若匹配成功就更新框的信息,若匹配失敗就減小相應框的生命值。當生命值減小為0,就視為該檢測框信息應該被舍棄,然后進行刪除檢測框信息的操作。
4 實現與分析
小車實物圖4所示。
如圖5(a) 所示,程序運行后,手動畫出購物車要跟隨的主體,藍色的框是手動選取時的框體,目的是選擇其中一人進行跟隨。圖5(b) 為程序運行后的畫面,淺藍色框選取的是我們的目標人物,紅色框是畫面中其他的人物,是小車需要躲避的主體。當人物開始移動,小框會根據卡爾曼濾波的預測結果進行移動,保持所選人物在畫面中。如圖5(c) 中當兩人重合之后,小框會保持鎖定在我們最初選擇的人物身上,保持跟隨狀態。圖5(d) 展示的是當兩人分開之后,小框會保持鎖定在我們最初選擇的人物身上,繼續跟隨最初的目標,達到緊密跟隨,防止目標丟失。
5 結束語
本文以Jetson nano為硬件基礎,開發語言為Py?thon,超聲波模塊和攝像頭為輔助模塊,設計了一款具有圖像識別、自動避障的智能購物小車,實現了對行進路線、超市貨架及攝像頭拍攝范圍內障礙物及其方位的檢測,并對檢測的結果通過算法進行避障,從而實現智能小車可以自動跟隨人進行購物,減少不必要的接觸,提供一個較為安全的購物環境。