基于改进NanoDet和GRU的交警手势识别研究①

2023-11-05 11:51马天祥
关键词:爬虫手势注意力

于 瓅, 马天祥

(安徽理工大学计算机科学与工程学院,安徽 淮南 232001)

0 引 言

手势识别可分为基于可穿戴设备的手势识别和基于计算机视觉的手势识别。前者需要让被识别对象穿戴上手势数据采集设备,再进行手势的捕获和识别[1],该方法可识别在时空中运动较为复杂的手势动作,同时识别的精度和速度也十分可观。后者则通过摄像头采集到的动作图像,并通过设计算法提取画面中的手势特征信息和分析不同特征对应的含义,从而实现手势的识别。

在当前的研究背景下,为了保障数据的共享性和使用的便携性,大多数研究者选择使用基于计算机视觉和机器学习的研究方法。机器学习在容错性、鲁棒性和抗干扰性上表现优秀,并且在自组织性和自学习性上也具备优势。当训练样本足够丰富时,模型所学到的“知识”具有一定的语义特征,在目标和行为识别的方面更加适合。

在使用计算机视觉的方式下已有了许多研究成果[2-7]。王玄[8]提出了一种结合时空运动分布和运动轨迹的多特征提取、特征融合并结合SVM而实现的交警手势识别方法。罗昆等[9]通过分析交警手势深度图片中像素点的变化实现了交警手势的识别。赵思蕊等[10]采用DTW搭配关键帧中的人体抽象骨架实现了交警手势的识别。方路平等[11]提出了一种通过骨架化特征模板匹配的交警手势识别方案,首先通过算法将交警的手势进行抽象和骨架化,并得到骨架化后的特征模板,再将获取的交警的骨架手势与模板库进行比较以实现手势的识别。周天彤等[12]使用Kinect提取出人物抽象的骨架,再利用unity构建出模拟现实的道路环境实现对交警手势识别和测试的方法。王新等[13]将改进后的YOLOv5应用到交警手势的识别中,得到平均精度为98.54的识别效果。刘阳等[14]提出了一种基于Kinect的骨架信息的交通警察手势识别方案,该方案将Kinect中提取到人体关键点的运动轨迹作为手势特征进行训练和测试,结合距离加权动态时间规划算法和K最邻近分类器进行识别。张备伟[15]等提出了一种基于DTW的交警指挥手势识别方法,首先使用Kinect设备提取出人体关键点,并通过进一步的预处理来建立手势的模板,最后通过分析对别比同类手势和不同类手势中的特性实现交警手势的识别。

综上,尽管前人对交警手势识别已有了不少的研究,但仍存在以下问题:(1)识别情景单一,无法在人群中定位交警;(2)运行效率及速度较低,无法较好满足实时的识别效果。针对以上待解决问题,拟通过改进轻量级目标检测网络NanoDet以及门控单元GRU,实现近实时的多人物场景下的交警手势识别。

1 关键技术

1.1 NanoDet

FCOS全卷积单阶段目标检测算法,该算法不同于著名的SSD和YOLOv5系列目标检测算法,FCOS采用无锚框的方式,剔除了锚框的预定义,使其避免了和锚框有关的一些复杂计算:(1)对于不同的数据需要使用聚类方法得到适用于该数据集的预定义锚框尺寸;(2)在使用预定义锚框时,还需要设置大量的超参数,在对其进行设置时费时费力;(3)在图像中设置的大量锚框中,正负样本分布十分不均,使得在训练过程中的正负样本不平衡问题加剧。FCOS采用无锚框的方式,其将特征图上的每个点映射回原图,判断映射回的点对应原图中物体的类别,以及是否在原图的目标框内,并通过训练逐渐更新网络参数。

如图1所示,标准的NanoDet是一种启发自FCOS的单阶段目标检测算法,其主要由三部分构成:Head、Neck和Backbone。在主干网络上的选择上,原作者使用ShuffleNetV2作为特征提取网。为了在保证精度的前提下去提高推理速度,其作者删除了ShuffleNetV2中的最后一个卷积层,并将8,16,32倍下采样得到的特征图输入到 PAN 中进行多尺度的特征融合。在损失函数的选择上,该网络使用的是由李翔等人提出的Generalized Focal Loss,使检测头中的计算开销得以减少,提高检测速率。边界框损失函数的选择上,NanoDet使用的是GIoU,相较于使用IoU而言最终的得到目标框更加准确。

图1 NanoDet的结构图

1.2 注意力机制

1.2.1 通道注意力

通道注意力机制最先在SeNet网络中提出,顾名思义该机制是为特征图的每个通道赋给一定的权值,从而达到加强有效特征,削弱无用特征的效果,结构见图2。该机制分为Squeeze和Excitation两个操作,前者是使用全局平局池化(GAP) 来压缩特征图的维度,如输入的C×H×W维度的特征图经过处理后将会变为C×1×1。后者的操作包含两个部分:其一是使用一个全连接层将输入的C×1×1维数据降维成C/r×1×1,其二仍是使用一个全连接层将C/r×1×1维的数据重新映射回C×1×1。最后再通过一个sigmoid函数得到各个通道的权值信息。

图2 通道注意力机制

1.2.2 Attention

注意力机制(Attention)最早由Bahdanau提出,并在机器翻译上取得了成功。随着该技术的发展,如今在图像处理、文本分析等多个领域都将其应用其中。Attention从其概念上可以理解为,有选择地把少量重要的信息从大量的信息中抽取出来,并增加对这些重要信息的关注度,对大多数不重要的信息进行忽略处理。该机制的体现主要就在“权重”的概念上,权重对信息的重要程度进行衡量,当某值对应的权重越大时,其重要程度也就越高,对后续分类任务的影响也就越大。

注意力机制Attention主要分为三个阶段,分别为:阶段一,根据query(交警手势类型)和key(人体关键点序列)计算两者的相似性,获得原始的注意力得分。其中计算相似度的方式有多种,常用的有计算两者的余弦相似性、或者计算两者间的相似点积、也可以通过使用另外的神经网络进行求解;阶段二,使用归一化的方式对阶段一中得到的注意力得分进行处理,处理方式可是使用softmax函数将结果映射到0~1上得到权重系数;阶段三,将阶段二中得到的权重系数对Value(等同于key,即人体关键点序列)进行加权求和。Attention结构如图3所示。

图3 Attention结构图

1.3 门控单元GRU

图4是门控单元中一个单元的结构。GRU(Gate Recurrent Unit)和LSTM都是RNN的改进型,是为解决在处理长序列的反向传递中梯度消失和梯度爆炸等问题提出的。

图4 GRU结构图

GRU和LSTM在很多情况下实际表现上相差无几,只有更新门和重置门两个控制门,相较于LSTM而言 GRU的参数较少,训练速度更快,GRU能降低过拟合的风险。

2 算法设计

2.1 数据集采集

2.1.1 交警和行人数据集构建

由于网络上不存在可供使用的公开交警和行人数据集,因此,通过编写网络爬虫的方式进行爬取和构建。首先编写爬虫从主流图片网站爬取交警和行人的图片两千多张,经过筛选后得到共计两千张图片。在爬取少量图片时,编写的爬虫脚本可正常执行获取图片,但由于访问速度过快且随着访问次数的增加,爬虫程序开始触发网站的反爬虫机制,即本机的IP暂时被网站封锁无法正常对其访问。为解决上述问题,使得爬虫程序能够获取到指定数量的图片,因此,为爬虫程序添加两个机制,使其尽量避免被侦测。首先,在爬取一页图片后会进行若干秒的暂停,模仿正常的浏览,避免触发反爬虫机制;之后,使用几十条可用的IP创建IP代理池,当爬虫程序每次进行访问操作时,都会随机地从代理池中选择一个可用IP进行替换,尽量减少同一IP连续多次访问同一站点的情况,降低爬虫程序被侦测的可能性,以实现正常的图片爬取操作。

2.1.2 交警行人数据集的扩充

由于NanoDet是轻量级目标检测网络,自身并不带有数据集增强功能,因此无法向YOLOv5一样通过较少的数据集就可进行训练并得到不错的效果。使用Mosaic、色彩变换、平移反转以及缩放等方式对数据集进行增强,效果如图5所示。

图5 数据集增强

2.1.3 交警手势数据集构建

为了便于后期的处理,采用自行录制的方式构建交警手势数据集。首先规定动作采集人员站在固定的动作采集点处,使得人员的头部和脚部尽量接近画面的边界部分进行录制。之后让测试人员按照如下的顺序做出相应的交警指挥手势:左转弯信号、左转弯待转信号、停止信号、减速慢行信号、变道信号、示意车辆靠边停车信号、右转弯信号、直行信号。为便于后期的数据处理,对于每个动作会固定采集50帧的画面,重复上述流程100次,得到整套交警指挥手势视频片段集合。

2.2 改进的NanoDet

原始NanoDet具有很高的运行速度,在本机上可达每秒50帧,但在实际训练和测试过程中的识别错误情况也较为明显。为了在保障识别速度的前提下提高识别精度,对该目标检测网络进行了如下改进。

修改主干特征提取网减少非必要参数:首先,经分析在主干网ShuffleNet的Block中的branch2分支上使用了两次1×1卷积,而该卷积仅仅是为了融合DW卷积上的通道间信息,因此,删除DW卷积后的1×1卷积,减少不必要的参数堆叠;分析ShuffleNetV2网络中的参数分布,在实际中DW卷积相较于1×1卷积而言,其所占的运算量相对较小,增加卷积核大小,将其由原来的3×3改进为5×5,同时将特征图的边缘填充由1增加为2,保障输出特征图的尺度不变。修改前后的ShuffleBlock见图6。

图6 修改前后的ShuffleBlock模块对比

增添通道注意力机制进一步提高精度:在NanoDet的主干特征提取网中融合了通道注意力机制,使得在提取特征时能够更加专注于有区分度的部分。经过上述在DW卷积中使用大卷积核,扩大感受野,融合通道注意力机制,提高网络信息获取和特征抽取能力,同时去除一层1×1卷积降低参数量,使得NanoDet在保证检测实时性的情况下尽可能地提高识别的精度。

2.3 改进的GRU

为进一步提高GRU捕捉序列中特征的能力,将Attention模块融合进GRU网络的末端,使得其在训练过程中能够动态地为特征赋予不同的权重提高识别精度,融合进Attention机制后的网络结构如图7所示。

图7 改进后的GRU架构

2.4 并行的运行架构

使用传统的串行运行方式虽可达到识别的效果,但运行速度大打折扣,无法充分发挥计算机的多核优势。因此,设计并行的运行方式,提高计算机资源的利用率和算法的运行速度。重新设计的并行运行架构如图8所示。

图8 并行化的运行架构

3 实验与结果分析

NanoDet目标检测网络改进前后的训练过程如图9所示,可见经过改进的NanoDet相较于原始网络,在使用的数据集以及训练轮次相同的情况下,训练损失更低。在实际测试中原来的识别错误情况也有所改善,同时识别的速度也得到了保证,接近每秒50帧。

图9 改进前后NanoDet的训练过程对比

4 结 语

相较于原始网络,在使用的数据集以及训练轮次相同的情况下,经过改进的NanoDet训练损失更低。在实际测试中,原来的识别错误情况也有所改善,同时识别速度也得到了保证,将注意力机制和GRU相结合,提高了该网络对交警手势的识别精度。设计并行的运行架构,提高了交警手势智能识别系统的整体执行效率。

猜你喜欢
爬虫手势注意力
利用网络爬虫技术验证房地产灰犀牛之说
让注意力“飞”回来
基于Python的网络爬虫和反爬虫技术研究
挑战!神秘手势
V字手势的由来
利用爬虫技术的Geo-Gnutel la VANET流量采集
“扬眼”APP:让注意力“变现”
胜利的手势
大数据环境下基于python的网络爬虫技术
A Beautiful Way Of Looking At Things