基于Jetson nano的跟随购物小车系统的设计与实现

2023-03-24 14:35杨强强宋子诚姜凌昊吴佳成
电脑知识与技术 2023年4期
关键词:卡尔曼滤波摄像头

杨强强 宋子诚 姜凌昊 吴佳成

关键词:智能跟随小车;超声模块;摄像头;哈希算法;卡尔曼滤波

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,超声波模块和摄像头为辅助模块,设计了一款具有图像识别、自动避障的智能购物小车,实现了对行进路线、超市货架及摄像头拍摄范围内障碍物及其方位的检测,并对检测的结果通过算法进行避障,从而实现智能小车可以自动跟随人进行购物,减少不必要的接触,提供一个较为安全的购物环境。

猜你喜欢
卡尔曼滤波摄像头
我起不来呀
浙江首试公路非现场执法新型摄像头
摄像头连接器可提供360°视角图像
改进的扩展卡尔曼滤波算法研究
基于太赫兹技术的新一代摄像头及其在安防领域的应用探讨
基于递推更新卡尔曼滤波的磁偶极子目标跟踪
基于模糊卡尔曼滤波算法的动力电池SOC估计
基于扩展卡尔曼滤波的PMSM无位置传感器控制
基于EMD和卡尔曼滤波的振荡信号检测
基于卡尔曼滤波的组合导航误差补偿