图像识别系统在数据大屏展示系统中的应用
2022-05-20董志勇李方方徐志恒
董志勇,李方方,徐志恒
(南京信息职业技术学院,江苏 南京 210043)
0 引言
大屏数据展示系统能解决具体应用场景下的实时数据展示与分析,通过对市场调查研究发现,目前大部分大屏数据展示系统只有标准的键盘鼠标输入。随着人工智能技术的发展,计算机视觉越来越多的应用在各个行业,本文主要介绍图像识别系统在数据大屏中的应用。本系统通过手势识别与人脸识别等功能,帮助用户脱离传统键盘鼠标的交互,具有一定的创新性。
1 本系统实现的主要功能
本文主要介绍图像识别技术包括手势识别、人脸识别等技术在数据大屏中的应用,其中手势识别系统是根据站在大屏前面的人所伸出的不同手势来进行数据的切换,可以不通过硬件就可以更改页面,查看数据等,可以有效帮助工人脱离硬件完成数据的切换与显示;人脸识别系统是根据每个站在屏幕前面人物的不同来自动转跳到不同人物想要看的界面,可以有效节省切换数据的时间,还可以减少数据的泄露;手机遥控系统是根据手机扫描大屏的二维码来进行对大屏的操控与转换,可以通过手机来进行远距离的操控与更改,更符合智能工厂中的大屏战术。
2 系统的开发工具
本文开发的数据大屏展示系统前端采用Vue-Element-admin,Element UI,Vue,Vant,Jquery等框架,后端是基于SpringCloud+Django+Tomcat+Nginx负载均衡+Java的云端服务器搭建+MySQL数据库技术。
本系统主要使用的物理部件如下:(1)树莓派3B以及支持树莓派的摄像头;(2)智能手机一部;(3)本地Linux系统的服务器若干台;(4)本地实体显示器一台。
3 基于树莓派的物联网技术
本系统基于树莓派与物联网技术开发的人机交互的图像采集智能系统。通过树莓派上的Linux与python技术来实现硬件获取大屏实时图像,并进行相应的分析与保存,将分析后的数据上传到后端服务器中进行进一步的处理。
树莓派外形是一个只有信用卡大小,却具有PC功能的卡片式计算机,它诞生于2012年3月英国剑桥大学Eben Epton之手。树莓派一经诞生就受到了各个计算机的强烈欢迎。主要是其本身拥有很多其他大型计算机并不具有的属性。其中,微小性以及可扩展性就是本系统选用作为线下数据采集的重要考虑因素。
本系统使用的树莓派型号为3B+,在实际生产中可以用其他可以搭载Python 环境以及可以接收摄像头的数据的物理微型操作硬件代替。树莓派在本地主要作用是给实际场景下的人脸识别与手势识别提供物理的技术支持,多用于放到实体显示器上面以方便实际场景下的人脸信息的获取以及手势信息的获取。
4 OpenCV技术
OpenCV是一个基于开源的挂平台计算机数据库,它主要实现计算机视觉方面的通用算法,目前是计算机视觉领域最通用以及最有力的研究工具。OpenCV由C/C++类构成,拥有500多个C函数写成的跨平台API。OpenCV可以根据需求选择依赖与不依赖外部库。更重要的是OpenCV还提供了MLL(Machine Learning Library)机器学习库,该功能为本系统手势识别与人脸识别的信息预处理提供了帮助。
本系统通过Python来进行OpenCV的加载与使用,树莓派中Python的Camera函数来获取实时的线下生产环境的生产数据,并使用OpenCV进行初步的人脸识别与手势识别,将收集到的信息转化成Json数据发送到服务器后端进行进一步操作[1]。
5 手势识别系统
在实际的生产环境当中,传统的数据输入设备有很多局限性,比如要物理上接触才能够进行修改,不能远距离操控等。为了解决这一问题,本文设计出了图像识别系统中的手势识别系统,通过图像识别系统中的手势识别系统来进行对大屏系统的远程操控。
手势识别是图像识别的一个重要子集。手势识别技术是通过基于视觉手势系统来完成,主要有图像采集,预处理,特征提取以及选择,分类器设计,手势识别。有3个步骤是识别系统的关键技术,它们分别是预处理时手势的分割技术,特征提取以及选择技术,手势跟踪技术,最后还有手势识别所采用的算法。
人的手势其本身就具有丰富的形变,运动还有纹理特征。所以选取合理的特征对于手势识别起着举足轻重的作用。目前常用的手势特征有:轮廓、边缘、图像炬,图像的特征向量、区域直方图特征等。
在进行特征选取时应该考虑结合多个特征图,在《基于计算机视觉的手势识别研究中》中有提到多度模型与矩描绘子相结合的相关算法,其将指尖和重点进行连线,采用了距离公式计算各个指尖到重心的距离,再采用了反余弦公式来计算各个指尖与重心连线之间的夹角,并将距离和夹角来作为选择的特征,从而提高了识别的正确率,并减少了识别所用的时间。在《基于几何特征的手势识别算法研究》中采用的识别算法是几何矩和边缘检测,手势图像在经过二值化处理之后,提取手势图像中的几何矩特征,取出其中的几何矩特征中7个特征分量中的4个分量,形成了手势的几何矩特征向量。在灰度图的基础上直接进行检测图的边缘,利用其直方图中表示图像的边界的方向特征。在最后,通过系统设置两个特征的权重来比较计算图像之间的距离,再对手势进行分析与识别[2]。
从上述结论中可以看出采用多种特征结合的算法,能够在计算的复杂度与精确性上有所提高。手势检测主要的影响因素有复杂背景、遮掩、外部的反射、直线光源亮度的变化等。手势识别训练过程如图1所示。
图1 手势识别训练过程
5.1 基于算法的手势识别
手势识别系统有许多实现的算法,其中最著名的有3种:基于算法的手势识别,基于神经网络的手势识别,基于样本的识别。
每个手势识别算法都需要有不同的参数,比如阈值,时间间隔等。尤其是在根据流程识别特定的算法时则更明显。开发者需要不停地测试以及实验才能够确定这一合适的参数。这个过程则是要耗费许多时间以及人力才能够完成。
5.2 基于神经网络的手势识别
当用户在做手势的时候,有一些手势并不能单纯地使用对或错的二值化进行判断。识别程序会错误地认为此手势会变成其他手势。使得一部分手势的定义会变得模糊。同时,如果一个程序要同时进行多个手势的识别任务,会让此程序变得混乱难以调试。
基于神经网络的手势识别主要步骤是先采集样本手势,然后提取样本特征,通过神经网络建立模型并且训练得到一个合适的模型。神经网络中的每个神经元都对应着不同的算法,根据数据结构进行信息处理,用来判断不同的手势,因此基于手势识别的神经网络处理速度很高。但是缺点就是计算比较复杂,每个神经元都需要进行参数配置和调优[3]。
5.3 基于样本的识别
基于样本的手势识别主要有两种方法,一种是基于模板库的,根据模板库计算手势之间匹配的精密程度,这种是属于规范化的识别,但是缺点是受限于模板库的大小;第二种方法是使用类似的Kinect SDK中的骨骼追踪系统,这种含有骨骼数据以及景深帧数据,并使用统计方法对产生的影像帧数据进行匹配从而识别出已知的帧数据[4]。
这种方法一般都会高度依赖机器学习。所产生的数据,往往都会根据时间的加长而增多,手势识别精度也会因此而变得更加准确。此类方法能够比较快捷地辨别出新手势,并且与其他两种方法对比起来,可以更好地识别出复杂的手势。但是构建该系统并非一件简单的事,系统需要大量的样本数据进行训练。随着数据的争夺,识别精度也会变得越来越高。因此系统需要海量资源和处理器以及时间进行手势的匹配。
6 在本系统中的应用
选择手势识别的方法通常是依赖于项目的需要,如果手势比较简单,并且数量不多,就可以采用基于算法或者基于神经网络的手势识别。但是本文面对的场景是大屏数据展示系统,面对的手势较多,因此本文采用基于样本和算法的手势识别,算法采用的是高斯混合模型(GMM)算法。本系统采用此功能是在树莓派上实现的,通过树莓派上Python语言开发出的识别系统,能够获得站在大屏前面手势的信息。
算法步骤具体为:(1)首先获取一张背景图;(2)用树莓派的摄像头实时获取大屏前人的手势;(3)把获取到的图像跟背景图进行对比;(4)剪出不一样的地方进行进一步分析(使用高斯混合模型分析算法);(5)为了减少多余的性能消耗,我们将裁剪出来的图片去掉RGB颜色转化成黑白图(使用二分法);(6)最后用一根线描出图像的外轮廓,用另个颜色的线描绘出图像的形状,(7)根据外轮廓与形状角度的对比,根据手指之间的角度来分辨出手势,手势识别的演示效果如图2所示。
图2 手势识别界面
其中高斯混合模型(GMM)算法的关键代码详细实现如下:
// 采集到的RGB像素数据转变
//转变原始的样本数据
int i= 0;
for (int row = 0;row < height;row++){
for (int col = 0;col < width;col++){
index = row ∗ width + col;
Vec3b rgbPic = src.at
points.at
points.at
points.at
}
}
em_model->setTermCriteria(TermCriteria (TermCriteria::YFS+ TermCriteria::1,100,0.1));
// 对图像中每个像素点进行标记颜色并且显示
Ptr
Ptr
em_model->setClustersNumber(C);
Emwg3_model->setC(EM::5);
6.1 人脸识别系统
设计完手势识别系统之后,又考虑到一种情景,那就是当用户因某些特殊的原因无法腾出手来进行远程操控,所以本系统又开发出了人脸识别系统来解决此问题。系统可以通过人脸来识别站在大屏前面的人物,当多名人物出现时,系统会寻找出权值最高人的人脸并显示画面。人脸识别算法主要是包括3个模块:人脸识别、人脸对齐以及人脸特征表征。
6.2 在本系统中的应用
本系统主要使用的是FaceNet来进行人脸的识别。FaceNet是一个通用人脸识别系统,主要采用深度卷积神经网络(CNN)学习将图像映射到欧式空间。空间距离直接和图片相似度相关。一个人的不同图像在空间距离很小,不同人的图像在空间中有较大的距离,可以用于人脸验证、识别和聚类。目前FaceNet在LFW数据集上测试的准确率达到了99.63%。人脸识别的主要过程是首先采集到所有用户的人脸数据录入数据库,接着判断大屏前面有几张脸,如果只有一张脸,就提取特征码,与人脸库进行一一对比,找出相似度最大的角色,然后根据系统设置的角色权限来修改大屏系统;如果大屏前面有多张脸,那就分别提取各个人脸的特征码,与人脸库进行一一比对,找出相似度最大的角色,进而登录大屏系统。
7 结语
本文将手势识别系统、人脸识别系统、手机遥控系统应用在数据大屏展示系统上,让用户脱离鼠标和键盘对大屏进行操作,有效提高了用户体验,具有一定程度的创新。