CN111950341B - 一种基于机器视觉的实时手势识别方法及手势识别系统 - Google Patents
一种基于机器视觉的实时手势识别方法及手势识别系统 Download PDFInfo
- Publication number
- CN111950341B CN111950341B CN202010565003.5A CN202010565003A CN111950341B CN 111950341 B CN111950341 B CN 111950341B CN 202010565003 A CN202010565003 A CN 202010565003A CN 111950341 B CN111950341 B CN 111950341B
- Authority
- CN
- China
- Prior art keywords
- hand
- layer
- gesture
- network
- joint point
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V40/00—Recognition of biometric, human-related or animal-related patterns in image or video data
- G06V40/10—Human or animal bodies, e.g. vehicle occupants or pedestrians; Body parts, e.g. hands
- G06V40/107—Static hand or arm
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/017—Gesture based interaction, e.g. based on a set of recognized hand gestures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/084—Backpropagation, e.g. using gradient descent
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V40/00—Recognition of biometric, human-related or animal-related patterns in image or video data
- G06V40/20—Movements or behaviour, e.g. gesture recognition
- G06V40/28—Recognition of hand or arm movements, e.g. recognition of deaf sign language
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Health & Medical Sciences (AREA)
- Health & Medical Sciences (AREA)
- Human Computer Interaction (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Data Mining & Analysis (AREA)
- Molecular Biology (AREA)
- Computational Linguistics (AREA)
- Biophysics (AREA)
- Biomedical Technology (AREA)
- Evolutionary Computation (AREA)
- Software Systems (AREA)
- Artificial Intelligence (AREA)
- Multimedia (AREA)
- Life Sciences & Earth Sciences (AREA)
- Social Psychology (AREA)
- Psychiatry (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Image Analysis (AREA)
Abstract
本发明公开了一种基于机器视觉的实时手势识别方法及手势识别系统,根据人体和手部的特点,提出了基于人体关节点识别实现手部定位、基于手部定位实现手部关节点识别、基于手部关节点识别实现手势识别的“人体关节点识别、手部定位、手部关节点识别、手势识别”四个步骤的手势识别思路,针对人体关节识别、手部关节识别、手势识别的任务特点设计了神经网络结构,同时在手部关节点识别实现手势识别环节中,设计了一种手势训练数据生成方式并通过迁移学习实现了手势识别,最后通过对网络的轻量化设计和系统的数据传输结构的设计使系统能够达到实时的手势和手部关节识别。
Description
技术领域
本发明涉及人工智能与计算机图形学技术领域,具体涉及一种基于机器视觉的实时手势识别方法及手势识别系统。
背景技术
手势,是一种相当自然的表达方式,与需要物理接触才能实现交互的触摸相比,手势允许非接触式的交互,且可以表达丰富的语义和诸如情感和态度等语境信息。研究表明,语言和手势在脑内共享同一套系统,并且手势的产生直接与记忆相关联。由于手势是交流的自然媒介,因此非常适合进行人机交互。与传统的键盘、鼠标、触摸屏等需要使用者适应机器输入输出模式的交互方式相比,由计算机适应使用者的交互方式不仅更自然,对使用者更友好,而且还可以实现以往难以实现的操作,对三维空间及物体的操作。所以,其意义包括但不限于以下几个方面:
(1)对于失语人士来说,手势识别能帮助这些失语人士和计算机进行交流;
(2)控制机器人,例如控制机器人在三维空间的动作。
(3)某些场景(如VR),手势是相对有效的表达方式。
由于上述优点,手势识别一直是一个热门研究方向,按输入设被可以将手势识别方式分为基于接触式设备和基于机器视觉两大类,基于佩戴式设备的方法手势采集较为准确,但需要佩戴,丧失了手势识别带来的方便性,设备专业且昂贵,难以普及。基于机器视觉的方式又分为基于深度图的方式和基于二维图像的方式,其中基于深度图的方式需要特质的设备(如Kinect摄像头)对深度图像进行采集。基于二维图像的方式只需要普通摄像头作为采集设备,非常易得,但算法开发极其困难,需要克服两个问题:手部定位需要克服自身相似性和背景混淆问题,手势的识别需要克服手部结构复杂和分辨率低、自身遮挡严重的问题。
发明内容
本发明目的:本发明提供了一种基于机器视觉的实时手势识别方法及手势识别系统,使用基于机器学习的关节点识别提取算法解决基于二维图像的手势识别算法实现困难的问题,在获得手部位置之后,检测手部关节点,再使用手部关节点信息解决手部形态复杂、手部分辨率低导致的手势识别困难问题。
技术方案:一种基于机器视觉的实时手势识别方法,包括以下步骤:
S100:获取原始彩色图片Iorigin,并为其创建副本Tinput;
S200:将副本Tinput输入至人体关节点提取网络,得到特征图FMbody_keypoint;
S300:从特征图FMbody_keypoint上得到人体关节点坐标,利用人体关节点坐标定位手部位置,根据手部位置裁剪原始彩色图片Iorigin得到手部输入图片Thand;
S400:将手部输入图片Thand输入至已训练好的手部关节点识别神经网络中,得到特征图FMhand_keypoint和特征图FMhand,从FMhand_keypoint中计算得到手部关节点坐标;并将特征图FMhand输入已训练好的手势识别网络,得到手势分类结果;
S500:将手部关节点坐标、手势分类结果合并成可视化结果并返回结果。
进一步的,所述S200中的人体关节点提取网络由一层卷积网络层、四层残差网络层、两层反卷积层和一层卷积层串联形成。
进一步的,所述S400中的已训练好的手部关节点识别神经网络的训练步骤包括:
构建手部关节点识别神经网络;
输入手部图片至已构建好的手部关节点识别神经网络中,得到特征图FMhand_keypoint,从FMhand_keypoint中计算得到手部关节点坐标;
对FMhand_keypoint根据损失函数计算损失值,最小化损失函数对已构建好的手部关节点识别神经网络参数进行迭代训练,得到已训练好的手部关节点识别神经网络。
进一步的,所述的对特征图FMhand_keypoint根据损失函数计算损失值中的损失函数计算方式为:
构建正确标注特征图;
计算特征图FMhand_keypoint与正确标注特征图之间的L2正则化损失;
其中,所述正确标注特征图的构建步骤为:
设手部每个关节点对应坐标为(ui,vi),其中,i为关节点序号,对每个关节点生成二维特征图,第i个二维特征图上每点的值为:
其中,u,v为关节点在特征图上对应坐标,σ参数控制关节点在特征图上标注的形态,G(xi,yi)为在第i张正确标注特征图上坐标为(x,y)的点的值;
所述的L2正则化损失的计算方式为:
其中,Yi为正确标注特征图上第i个点的目标值,f(xi)为神经网络输出的特征图上第i个点的值,S为总损失。
进一步的,所述已构建好的手部关节点识别神经网络包括:
由一层卷积层和四层残差神经网络层级联而成的特征提取网络;
由四层反卷积层和一层卷积层构成的特征图生成网络;
三个长连接层,其中,第一个长连接层将第一层残差神经网络层输出的特征图与第三层反卷积层输出的特征图合并为特征图输入第四层反卷积层;第二个长连接层将第二层残差神经网络层输出的特征图与第二层反卷积层输出的特征图合并为特征图输入第三层反卷积层;第三个长连接层将第三层残差神经网络层输出特征图与第一层反卷积层输出特征图合并为特征图输入第二层反卷积层中;
所述已构建好的手部关节点识别神经网络,以手部输入图片Thand为输入,以最后一层卷积层输出的特征图FMhand_keypoint和第四层残差网络层输出的特征图FMhand为输出。
进一步的,所述S400中的已训练好的手势识别网络的训练步骤包括:
S410:构建手势识别网络;
S420:将输入图像转换为HSV色彩空间,并从中分离得到H分量,从H分量中以皮肤颜色为参考,将H分量中分离像素值在指定范围内的区域作为前景遮罩Maskhand;
S430:对前景遮罩Maskhand计算连通区域,并将非最大连通区域值全部置为0,得到新生成的遮罩值,将新生成的遮罩值取反,再次计算连通区域,将非最大连通区域值全部置为0,得到新生成的遮罩值,将新生成的遮罩值取反,得到新生成遮罩,采用该新生成遮罩替换原前景遮罩Maskhand;
S440:从背景图库中随机选择一张不包含人体的背景图片,并对该背景图片缩放得到背景图Tbackground;
S450:根据S430最终得到的前景遮罩,将副本Tinput中的前景区域与背景图Tbackground合成为一张图片,对合成图片进行数据增强预处理得到手部输入图片Thand;
S460:将手部输入图片Thand输入至已训练好的手部关节点识别神经网络中,得到特征图FMhand_keypoint和特征图FMhand,从FMhand_keypoint中计算得到手部关节点坐标;将特征图FMhand输入已构建好的手势识别网络中,得到手势分类结果,所述手势分类结果为手部姿势为每种可能的手势的概率[x1,x2,...,xp],其中xi为手势识别分支网络预测输入为第i种手势的概率;
S470:对手势分类结果根据损失函数计算损失值,并根据反向传播算法和设定学习率,最小化损失函数对已构建好的手势识别网络参数进行迭代训练,得到已训练的手势识别网络。
进一步的,所述S470具体包括:
对手势分类结果使用归一化损失函数计算分类损失,冻结手部关节点识别神经网络的参数,并根据反向传播算法和设定学习率,最小化归一化损失函数对已构建好的手势识别网络参数进行迭代训练,得到已训练的手势识别网络;
所述归一化损失函数表示为:
xi=xi-max(xi,...,xn) (5)
L=-log(pk) (7)
其中,k为正确的手势类别,xi为网络输出手势为第i类的概率,n为所有的手势类型数,pi为求得的为第i种手势的概率归一化后的值,L为总损失。
进一步的,所述的已构建好的手势识别网络由一个残差网络层、三层卷积层和两层全连接层级联而成。
进一步的,所述S300中的从特征图FMbody_keypoint上得到人体关节点坐标和S400中的从FMhand_keypoint中计算得到手部关节点坐标,具体包括:
对于每个人体关节点/手部关节点对应的特征图,计算最大值对应点的坐标,并计算原始图像上对应坐标值,即为人体关节点/手部关节点坐标。
本发明还公开了一种基于机器视觉的实时手势识别系统,包括:
视频采集模块,用于采集手部的视频流,并逐帧上传至流媒体服务器;
流媒体服务器,用于对视频流进行编码和压缩,并传送至GPU服务器;
GPU服务器,用于对视频流进行解码,并基于权利要求1至9任意一项所述的一种基于机器视觉的实时手势识别方法对解码后的视频流进行处理,得到结果元组和可视化结果;
结果显示终端,用于将可视化信息和结果元组进行显示。
进一步的,所述视频采集模块固定以30Hz的速率从采集到视频源中抽帧;
所述流媒体服务器上维护一个先进先出缓冲队列,当每一帧从视频采集模块到达流媒体服务器中时,流媒体服务器对该每一帧视频流进行编码和压缩;
若GPU服务器空闲,则流媒体服务器直接向GPU服务器转发已编码和压缩好的视频流;
若GPU服务器忙碌,则将已编码和压缩好的视频流存入缓冲队列尾部,若缓冲队列长度超过1则丢弃队首未处理帧;当GPU服务器从忙碌变为空闲状态时,流媒体服务器向GPU服务器转发缓冲队列队上的首帧。
有益效果:本发明使用人体关节点识别解决手部定位困难问题,大幅缓解了手部与自身其他部位混淆的问题;使用手部关节点识别算法得到手部关节点信息,再基于手部关节点识别得到的信息进行手势识别以解决手部形态复杂导致的手势识别困难问题;手部关键点识别网络设计中同时包含了长连接层和短连接层,提高手部关键点识别的准确率;使用迁移学习和手部关节点识别网络中的隐含信息进行手势识别;本发明还对网络进行了轻量化处理,并设计了一整套关节点和手势识别检测系统,系统包括视频流采集、上传、检测、结果可视化和结果回传等功能,实现了实时手部关节点和手势识别功能。
附图说明
图1为本发明的流程图;
图2为本发明的手势识别网络训练流程图;
图3为本发明的手部关节点识别神经网络的训练流程图;
图4为本发明的合成训练数据的过程展示示意图;
图5为本发明通过识别人体关节定位手部的过程示意图;
图6为本发明手部关节识别网络的结构示意图;
图7为本发明中手部关节识别网络和手势识别网络的整体结构示意图;
图8为本发明的手部关节点识别和手势识别的可视化效果示意图;
图9为本发明的系统交互界面展示图。
具体实施方式
现结合附图和实施例进一步阐述本发明的技术方案。
实施例1:
通过人体关节点识别解决手部定位困难问题,在获得手部位置之后,检测手部关节点,再使用手部关节点信息解决手部形态复杂、手部分辨率低导致的手势识别困难问题。但是同时,关节点提取算法的困难之处在于以下几点:
(1)局部区分性很弱,例如,很难定义“脖子”或是“大拇指最后一个关节”的精确位置;
(2)有些关节是被遮挡或不可视的,比如被衣服,人体自身,或是被背景遮挡,且人体自身某些部位具有相似性;
(3)周围的环境,光照,需要进行关节提取的目标相对于图像的大小和分辨率都会影响关键点提取的效果。
为克服这些问题需要精心设计相关算法中神经网络结构、设计多个算法之间的衔接、扩增数据集,本实施例的一种基于机器视觉的实时手势识别方法,用以检测手部关节点并进行手势识别。
实际应用中,需事先构建人体关节点提取网络、手部关节点识别神经网络和手势识别网络。
人体关节点提取网络由一层卷积网络层、四层残差网络层、两层反卷积层和一层卷积层串联形成。
如图6所示,本实施例的手部关节点识别神经网络包括三个部分:
由一层卷积层和四层残差神经网络层级联而成的特征提取网络,特征提取网络的输入为Thand,四层残差网络层输出的特征图尺寸分别为:56*56*64,28*28*128,14*14*256,7*7*512;
由四层反卷积层和一层卷积层构成的特征图生成网络,四层反卷积层输出的特征图尺寸分别为14*14*256,28*28*128,56*56*64,112*112*32,卷积层包含20个尺寸为1*1的卷积核,卷积层输出特征图尺寸为112*112*20;
三个长连接层,其中第一个长连接层将第一层残差神经网络层输出的特征图(尺寸为56*56*64)与第三层反卷积层输出的特征图(尺寸为56*56*64)合并为56*56*128的特征图输入第四层反卷积层。第二个长连接层将第二层残差神经网络层输出的特征图(尺寸为28*28*128)与第二层反卷积层输出的特征图(尺寸为28*28*128)合并为28*28*256的特征图输入第三层反卷积层。第三个长连接层将第三层残差神经网络层输出特征图(尺寸为14*14*256)与第一层反卷积层输出特征图(尺寸为14*14*256)合并为14*14*512的特征图输入第二层反卷积层中。
整个网络对外输出两个特征图,分别是由特征图生成网络中最后一层卷积层输出的特征图FMhand_keypoint(尺寸为112*112*20)和特征提取网络中第四层残差网络层输出的特征图FMhand(尺寸为7*7*512);
如图7所示,手势识别网络实际上是在手部关节点识别网络中添加结构,具体表现为:在保持手部关节点识别网络结构不变的情况下,构建一个由一个残差网络层、三层卷积层和两层全连接层级联而成的手势识别网络,该手势识别网络的输入是手部关节点识别网络中特征提取网络中第四层残差网络层输出的特征图FMhand,手部关节点识别网络输出是每种手势的分类概率[x1,x2,...,xp],其中,xi为手势识别分支网络预测输入为第i种手势的概率。
参见图3,对已构建的手部关节点识别神经网络进行训练得到训练好的手部关节点识别神经网络备用,具体训练过程为:
输入手部图片至已构建好的手部关节点识别神经网络中,得到特征图FMhand_keypoint;
对特征图FMhand_keypoint根据损失函数计算损失值,并根据反向传播算法和设定学习率对网络参数进行更新;损失函数计算方式为手部关节点识别神经网络输出的尺寸为112*112*20特征图与正确标注特征图之间的L2正则化损失。
正确标注特征图构建方式为:
手部共有20个关节点(每根手指4个关节点),每个关节点对应坐标为(ui,vi),其中i为关节点序号,对每个关节点生成112*112的二维特征图,第i个二维特征图上每点的值为:
其中,u,v为关节点在特征图上对应坐标,σ参数控制关节点在特征图上标注的形态,G(xi,yi)为在第i张正确标注特征图上坐标为(x,y)的点的值。
L2正则化损失的计算方式为:
其中,Yi为正确标注特征图上第i个点的值(目标值),f(xi)为神经网络输出的特征图上第i个点的值,S为总损失。
参见图2,对已构建的手势识别网络进行训练,得到训练好的手势识别网络,具体训练过程为:
S420:将输入图像转换为HSV色彩空间,并从中分离得到H分量,从H分量中以皮肤颜色为参考,将H分量中分离像素值在指定范围内的区域作为前景遮罩Maskhand;
S430:本实施例中,需要对两种噪声进行降噪,一种是在全1的区域上有零星的值为0的噪声,另一种是在全0的区域上有零星的值为1的噪声。连通图可以选出值为1的区域,因此,第一次使用连通图选出所有值为1的区域,并根据面积将较小的值为1的区域的值改为0(处理掉全0的区域上有零星的值为1的噪声),但是这种方式无法选出全1的区域上有零星的值为0的噪声,所以要经过一次取反,让全1的区域上有零星的值为0的噪声变为0的区域上有零星的值为1的噪声才能处理。因此具体降噪步骤为:对前景遮罩Maskhand计算连通区域,并将非最大连通区域值全部置为0,得到新生成的遮罩值,将新生成的遮罩值取反,再次计算连通区域,将非最大连通区域值全部置为0,得到新生成的遮罩值,将新生成的遮罩值取反,得到新生成遮罩,采用该新生成遮罩替换原前景遮罩Maskhand;
S440:从背景图库中随机选择一张不包含人体的背景图片,并对该背景图片缩放得到背景图Tbackground;
S450:根据当前前景遮罩Maskhand,将副本Tinput中的前景区域与背景图Tbackground合成为一张图片,根据Maskhand中前景区域生成标注框,对合成图片进行数据增强预处理得到手部输入图片Thand;如图4右下所示;其中:
标注框是辅助信息,可以根据标注框对合成的图片进行进一步的裁剪,使手部位于合成图片的中心,也可以根据标注框信息进行仿射变换,移动手部在图片中的位置,从而进一步进行数据扩增。这一步是可选的。
该步骤中的数据增强预处理包含以下步骤:
对合成图片随机90度双向翻转,坐标变换由以下公式给出:
或对合成图片随机180度翻转,坐标变换公式如下:
以上的公式中,xmin,ymin分别表示标注框的左下角的横坐标和纵坐标,xmax,ymax分别表示标注框右上角的横坐标和纵坐标;
对经过翻转后的合成图片进行一定程度的随机对比度变化、饱和度随机变化、亮度随机变化、图像RGB通道随机调换,在合成图片的基础上进一步扩增样本数量。
S460:将手部输入图片Thand输入至已训练好的手部关节点识别神经网络中,得到特征图FMhand_keypoint和特征图FMhand,从FMhand_keypoint中计算得到手部关节点坐标;将特征图FMhand输入已构建好的手势识别网络中,得到手势分类结果,所述手势分类结果为手部姿势为每种可能的手势的概率其中xi为手势识别分支网络预测输入为第i种手势的概率;
S470:对手势分类结果根据损失函数计算损失值,并根据反向传播算法和设定学习率,最小化损失函数对已构建好的手势识别网络参数进行迭代训练,得到已训练的手势识别网络。
由于手势识别网络输入依赖于手部关节点识别网络,因此需要通过迁移学习训练网络,具体做法为将Thand输入手部关节点识别神经网络中,得到特征图FMhand_keypoint和特征图FMhand,丢弃FMhand_keypoint,将FMhand输入手势识别网络,使用归一化损失函数计算分类损失,冻结手部关节点识别网络的参数之后进行反向传播以更新网络参数。该归一化损失函数表示为:
xi=xi-max(xi,...,xn) (5)
L=-log(pk) (7)
其中,k为正确的手势类别,xi为网络输出手势为第i类的概率,n为所有的手势类型数,pi为求得的为第i种手势的概率归一化后的值,L为总损失。
使用Adam优化器,设置初始学习率为0.005,并设置了在80,100,120轮之后学习率衰减为原来的10%。最终模型在131轮左右到达最优点。
经过以上得到了可用的人体关节点提取网络、手部关节点识别神经网络和手势识别网络。
参见图1,本实施例基于上述网络实现实时手势识别,具体包括以下步骤:
步骤1:读取输入图像为m*n*3的原始彩色图片Iorigin,并创建尺寸为368*368*3的副本Tinput;
步骤2:将副本Tinput输入人体关节点提取网络,得到特征图FMbody_keypoint;
步骤3:从特征图FMbody_keypoint上计算人体关节点坐标,并利用手肘和手腕定位手部位置,根据手部位置裁剪原始彩色图片Iorigin得到手部输入图片Thand;
其中,从特征图FMbody_keypoint上计算人体关节点坐标方法为:
特征图FMbody_keypoint的形状为46*46*17,46*46为原始宽高为368*368的图片经过神经网络后得到的17个人体关节点每个关节点对应的特征图尺寸,对于每个关节点对应的特征图,计算最大值对应点的坐标,并计算原始图像上对应坐标值;
利用提取的手肘和手腕定位手部位置的方法如图5所示:
当手肘和手腕都存在时,手部位置为手腕向手肘的反方向延伸0.33倍小臂的长度,手部落在尺寸为0.8*max(l小臂长,0.9*l大臂长)的范围内,若该区域超出图片边界,则对该手部包围框进行裁剪,得到手部包围框之后,从原始图片Iorigin中裁剪包围框范围内的区域得到手部输入图片Thand;
若手肘和手腕中有一个部位不存在,则不进行后续步骤。
步骤4:将手部输入图片Thand输入手部关节点识别神经网络中,得到特征图FMhand_keypoint和特征图FMhand,从FMhand_keypoint中计算得到手部关节点坐标;
其中,从特征图FMhand_keypoint上计算手部关节点坐标方法为:
特征图FM的形状为112*112*20,112*112为原始宽高为224*224的图片经过神经网络后得到的20个手部关节点每个关节点对应的特征图尺寸。对于每个关节点对应的特征图,计算最大值对应点的坐标,并计算原始图像上对应坐标值;
步骤5:丢弃特征图FMhand_keypoint;
步骤6:将特征图FMhand输入手势识别网络中,得到手部姿势为每种可能的手势的概率[x1,x2,...,xp],其中,xi为手势识别网络预测输入为第i种手势的概率;
步骤7:返回手部关节点坐标、手势分类结果并合成可视化结果,可视化效果如图6所示。
实施例2:
本实施例在实施例1的基础上提出了一种基于机器视觉的实时手势识别系统,包括视频采集模块,流媒体服务器,GPU服务器和结果显示终端;该视频采集模块采集包含手部的视频流,并逐帧上传至流媒体服务器;流媒体服务器对视频流进行编码和压缩后通过网络传送至GPU服务器;GPU服务器对视频流进行解码后根据实施例1的识别方法处理每一帧,得到结果元组和可视化信息;结果显示终端获取可视化关节点信息和结果元组并显示。
为了解决视频采集、上传的处理速率(60Hz)和GPU服务器过程处理每一帧的速率(22Hz~28Hz)不匹配的问题,视频采集模块固定以30Hz的速率从采集到视频源中抽帧,并逐帧上传至流媒体服务器。流媒体服务器上维护一个先进先出缓冲队列,当每一帧从视频采集模块到达流媒体服务器中时,流媒体服务器对该帧进行编码和压缩,若GPU服务器空闲则直接向GPU服务器转发,若GPU服务器忙碌则存入缓冲队列尾部,若缓冲队列长度超过1则丢弃队首未处理帧。当GPU服务器处理完当前帧并从忙碌变为空闲状态时,向GPU服务器转发缓冲队列队首帧。当GPU服务器从流媒体服务器接收到新一帧后对该帧进行解码和处理,完成后下传可视化关节点信息和结果元组至结果显示终端。
由于轻量化的网络设计,因此能达到实时识别的速率。显示界面和效果如图9所示;构建实验硬件软件环境如下:
·CPU:AMD(R)Ryzen(R)3600CPU
·内存:16G
·GPU:Nvidia Geforce RTX2080Ti
·OS:Ubuntu 18.04LTS
·Python 3.7
·Pytorch 1.3.0
·CUDA 10.2
本实施例的识别系统使用实施例1中的网络识别人体关节点,并定位小臂,完成小臂定位后,以小臂为参照物,定位手部,完成手部定位后,使用神经网络识别手部关节点,并使用神经网络从手部关节点识别的中间信息中识别手势;结果显示终端获取可视化的关节点信息和手势信息并和结果元组同时显示。
综上,本发明根据人体和手部的特点,提出了基于人体关节点识别实现手部定位、基于手部定位实现手部关节点识别、基于手部关节点识别实现手势识别的“人体关节点识别、手部定位、手部关节点识别、手势识别”四个步骤的手势识别思路,针对人体关节识别、手部关节识别、手势识别的任务特点设计了神经网络结构,同时在手部关节点识别实现手势识别环节中,设计了一种手势训练数据生成方式并通过迁移学习实现了手势识别,最后通过对网络的轻量化设计和系统的数据传输结构的设计使系统能够达到实时的手势和手部关节识别。
Claims (8)
1.一种基于机器视觉的实时手势识别方法,其特征在于:包括以下步骤:
S100:获取原始彩色图片Iorigin,并为其创建副本Tinput;
S200:将副本Tinput输入至人体关节点提取网络,得到特征图FMbody_keypoint;
S300:从特征图FMbody_keypoint上得到人体关节点坐标,利用人体关节点坐标定位手部位置,根据手部位置裁剪原始彩色图片Iorigin得到手部输入图片Thand;
S400:将手部输入图片Thand输入至已训练好的手部关节点识别神经网络中,得到特征图FMhand_keypoint和特征图FMhand,从FMhand_keypoint中计算得到手部关节点坐标;并将特征图FMhand输入已训练好的手势识别网络,得到手势分类结果;
S500:将手部关节点坐标、手势分类结果合并成可视化结果并返回结果;
其中,所述S400中的已训练好的手部关节点识别神经网络的训练步骤包括:
构建手部关节点识别神经网络;
输入手部图片至已构建好的手部关节点识别神经网络中,得到特征图FMhand_keypoint,从FMhand_keypoint中计算得到手部关节点坐标;
对FMhand_keypoint根据损失函数计算损失值,最小化损失函数对已构建好的手部关节点识别神经网络参数进行迭代训练,得到已训练好的手部关节点识别神经网络;
其中,所述的对特征图FMhand_keypoint根据损失函数计算损失值中的损失函数计算方式为:
构建正确标注特征图;
计算特征图FMhand_keypoint与正确标注特征图之间的L2正则化损失;
其中,所述正确标注特征图的构建步骤为:
设手部每个关节点对应坐标为(ui,vi),其中,i为关节点序号,对每个关节点生成二维特征图,第i个二维特征图上每点的值为:
其中,u,v为关节点在特征图上对应坐标,σ参数控制关节点在特征图上标注的形态,G(xi,yi)为在第i张正确标注特征图上坐标为(x,y)的点的值;
所述的L2正则化损失的计算方式为:
其中,Yi为正确标注特征图上第i个点的目标值,f(xi)为神经网络输出的特征图上第i个点的值,S为总损失。
2.根据权利要求1所述的一种基于机器视觉的实时手势识别方法,其特征在于:所述S200中的人体关节点提取网络由一层卷积网络层、四层残差网络层、两层反卷积层和一层卷积层串联形成。
3.根据权利要求1所述的一种基于机器视觉的实时手势识别方法,其特征在于:所述已构建好的手部关节点识别神经网络包括:
由一层卷积层和四层残差神经网络层级联而成的特征提取网络;
由四层反卷积层和一层卷积层构成的特征图生成网络;
三个长连接层,其中,第一个长连接层将第一层残差神经网络层输出的特征图与第三层反卷积层输出的特征图合并为特征图输入第四层反卷积层;第二个长连接层将第二层残差神经网络层输出的特征图与第二层反卷积层输出的特征图合并为特征图输入第三层反卷积层;第三个长连接层将第三层残差神经网络层输出特征图与第一层反卷积层输出特征图合并为特征图输入第二层反卷积层中;
所述已构建好的手部关节点识别神经网络,以手部输入图片Thand为输入,以最后一层卷积层输出的特征图FMhand_keypoint和第四层残差网络层输出的特征图FMhand为输出。
4.根据权利要求1所述的一种基于机器视觉的实时手势识别方法,其特征在于:所述S400中的已训练好的手势识别网络的训练步骤包括:
S410:构建手势识别网络;
S420:将输入图像转换为HSV色彩空间,并从中分离得到H分量,从H分量中以皮肤颜色为参考,将H分量中分离像素值在指定范围内的区域作为前景遮罩Maskhand;
S430:对前景遮罩Maskhand计算连通区域,并将非最大连通区域值全部置为0,得到新生成的遮罩值,将新生成的遮罩值取反,再次计算连通区域,将非最大连通区域值全部置为0,得到新生成的遮罩值,将新生成的遮罩值取反,得到新生成遮罩,采用该新生成遮罩替换原前景遮罩Maskhand;
S440:从背景图库中随机选择一张不包含人体的背景图片,并对该背景图片缩放得到背景图Tbackground;
S450:根据S430最终得到的前景遮罩Maskhand,将副本Tinput中的前景区域与背景图Tbackground合成为一张图片,对合成图片进行数据增强预处理得到手部输入图片Thand;
S460:将手部输入图片Thand输入至已训练好的手部关节点识别神经网络中,得到特征图FMhand_keypoint和特征图FMhand,从FMhand_keypoint中计算得到手部关节点坐标;将特征图FMhand输入已构建好的手势识别网络中,得到手势分类结果,所述手势分类结果为手部姿势为每种可能的手势的概率[x1,x2,...,xp],其中xi为手势识别分支网络预测输入为第i种手势的概率;
S470:对手势分类结果根据损失函数计算损失值,并根据反向传播算法和设定学习率,最小化损失函数对已构建好的手势识别网络参数进行迭代训练,得到已训练的手势识别网络。
6.根据权利要求4所述的一种基于机器视觉的实时手势识别方法,其特征在于:所述的已构建好的手势识别网络由一个残差网络层、三层卷积层和两层全连接层级联而成。
7.根据权利要求1所述的一种基于机器视觉的实时手势识别方法,其特征在于:所述S300中的从特征图FMbody_keypoint上得到人体关节点坐标和S400中的从FMhand_keypoint中计算得到手部关节点坐标,具体包括:
对于每个人体关节点/手部关节点对应的特征图,计算最大值对应点的坐标,并计算原始图像上对应坐标值,即为人体关节点/手部关节点坐标。
8.一种基于机器视觉的实时手势识别系统,其特征在于:包括:
视频采集模块,用于采集手部的视频流,并逐帧上传至流媒体服务器;
流媒体服务器,用于对视频流进行编码和压缩,并传送至GPU服务器;
GPU服务器,用于对视频流进行解码,并基于权利要求1至7任意一项所述的一种基于机器视觉的实时手势识别方法对解码后的视频流进行处理,得到结果元组和可视化结果;
结果显示终端,用于将可视化信息和结果元组进行显示;
所述流媒体服务器上维护一个先进先出缓冲队列,当每一帧从视频采集模块到达流媒体服务器中时,流媒体服务器对该每一帧视频流进行编码和压缩;
若GPU服务器空闲,则流媒体服务器直接向GPU服务器转发已编码和压缩好的视频流;
若GPU服务器忙碌,则将已编码和压缩好的视频流存入缓冲队列尾部,若缓冲队列长度超过1则丢弃队首未处理帧;当GPU服务器从忙碌变为空闲状态时,流媒体服务器向GPU服务器转发缓冲队列队上的首帧。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010565003.5A CN111950341B (zh) | 2020-06-19 | 2020-06-19 | 一种基于机器视觉的实时手势识别方法及手势识别系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010565003.5A CN111950341B (zh) | 2020-06-19 | 2020-06-19 | 一种基于机器视觉的实时手势识别方法及手势识别系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111950341A CN111950341A (zh) | 2020-11-17 |
CN111950341B true CN111950341B (zh) | 2022-09-27 |
Family
ID=73337895
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010565003.5A Active CN111950341B (zh) | 2020-06-19 | 2020-06-19 | 一种基于机器视觉的实时手势识别方法及手势识别系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111950341B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114529949A (zh) * | 2022-03-18 | 2022-05-24 | 哈尔滨理工大学 | 一种基于深度学习的轻量级手势识别方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108932500B (zh) * | 2018-07-09 | 2019-08-06 | 广州智能装备研究院有限公司 | 一种基于深度神经网络的动态手势识别方法及系统 |
CN111209861B (zh) * | 2020-01-06 | 2022-03-18 | 浙江工业大学 | 一种基于深度学习的动态手势动作识别方法 |
-
2020
- 2020-06-19 CN CN202010565003.5A patent/CN111950341B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN111950341A (zh) | 2020-11-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11783496B2 (en) | Scalable real-time hand tracking | |
WO2021103648A1 (zh) | 手部关键点检测方法、手势识别方法及相关装置 | |
Zhou et al. | A novel finger and hand pose estimation technique for real-time hand gesture recognition | |
US20180186452A1 (en) | Unmanned Aerial Vehicle Interactive Apparatus and Method Based on Deep Learning Posture Estimation | |
Chen et al. | Real‐time hand gesture recognition using finger segmentation | |
Shenoy et al. | Real-time Indian sign language (ISL) recognition | |
Tian et al. | Gesture recognition based on multilevel multimodal feature fusion | |
CN103988150A (zh) | 用于初始化基于视觉的手跟踪器的快速指尖检测 | |
Chen et al. | Multiple-angle hand gesture recognition by fusing SVM classifiers | |
US20220262093A1 (en) | Object detection method and system, and non-transitory computer-readable medium | |
Qi et al. | Computer vision-based hand gesture recognition for human-robot interaction: a review | |
Chowdhury et al. | Gesture recognition based virtual mouse and keyboard | |
CN111199207A (zh) | 基于深度残差神经网络的二维多人体姿态估计方法 | |
Shin et al. | Hand region extraction and gesture recognition using entropy analysis | |
CN114445853A (zh) | 一种视觉手势识别系统识别方法 | |
CN111950341B (zh) | 一种基于机器视觉的实时手势识别方法及手势识别系统 | |
Amaliya et al. | Study on hand keypoint framework for sign language recognition | |
Shin et al. | Dynamic Korean Sign Language Recognition Using Pose Estimation Based and Attention-based Neural Network | |
Zhang et al. | Multi-Person Pose Estimation in the Wild: Using Adversarial Method to Train a Top-Down Pose Estimation Network | |
Abdallah et al. | An overview of gesture recognition | |
US20220050527A1 (en) | Simulated system and method with an input interface | |
Mesbahi et al. | Hand Gesture Recognition Based on Various Deep Learning YOLO Models | |
Krishnamoorthi et al. | Virtual Mouse Using YOLO | |
John et al. | Static hand gesture recognition using multi-dilated DenseNet-based deep learning architecture | |
Fuad et al. | Developing Human Hand Gesture Data |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |