基于MobileNet-V2眼镜虚拟试戴


     基于MobileNet-V2眼镜虚拟试戴 Base on MobileNet-V2 Virtual glasses to try 摘要 随着互联网的不断发展,人们在商品时的选择变得不再单一,可以在实体店中购买,也可以在网上购买,网上购买商品成为更多人的选择,虚拟试戴技术应运而生。在当今社会全球近视患者占全球人口比例达到22%,中国是近视眼患病大国,近视人群比例达到47%,眼镜成为拯救近视患者的方法之一。基于这一现状人们对于眼镜的需求量是巨大的。根据产品销售的区域特性,某些地区的人们难以在实体店中购买到自己心仪的眼镜,但在网上购买眼镜亦受到无法试戴的困扰,造成认知偏差,产生大量退货的情况。运用虚拟试戴技术可以极大程度上减小用户对产品外观适配的偏差,虚拟试戴技术在未来的互联网时代将有巨大的发展空间,也将促进计算机视觉方面的快速发展。 本文以特征点回归为基础,通过深度学习神经网络训练,得到模型用来回归产生人脸双眼的坐标。计算双眼坐标的倾斜角度,根据仿射变换将图片旋转,将眼镜与人脸进行图片融合实现动态的虚拟试戴。 关键词:特征点回归;眼镜虚拟试戴;图片融合;仿射变换 Abstract With the continuous development of the Internet, people's choice of commodities has become no longer single, they can buy in physical stores or online. Online shopping of various products has become the choice of more people, and virtual trial technology emerges at the right moment. In today's society, the proportion of myopia patients in the world is up to 22% of the world's population, China is a major country with myopia disease, and the proportion of myopia people reaches 47%.Glasses has become one of the ways to save myopia patients. The demand for glasses is huge. According to the regional characteristics of product sales, it is difficult for people in some areas to buy their favorite glasses in physical stores. However, when buying glasses online, they are also troubled by the inability to try them on, resulting in cognitive bias and a large number of returns. The application of virtual try-on technology can greatly reduce the deviation of users on the appearance of the product. Virtual try-on technology will have a huge development space in the future Internet era, and will also promote the rapid development of computer vision. Based on the regression of feature points, the model is trained by deep learning neural network to return the coordinates of generating face and eyes. The tilt Angle of binocular coordinates was calculated, the image was rotated according to affine transformation, and the image was fused with the face to realize dynamic virtual trial. Key worlds: Feature Regression; Virtual glasses try on; Image Fusion; Affine Transformation 目录 摘要 Abstract 第1章 绪论 1 1.1 开发背景及意义 1 1.2 发展及现状 2 1.3 项目简介 4 第2章 眼镜虚拟试戴开发工具和技术简介 5 2.1 开发工具介绍 5 2.2 模型训练数据处理 5 2.3 眼镜虚拟试戴开发技术介绍 8 2.3.1 卷积神经网络介绍 8 2.3.2 MobileNetV2网络介绍 12 2.3.3 神经网络模型训练 15 2.3.4 仿射变换 18 2.3.5 图像融合 20 第3章 需求分析 24 3.1 功能需求 24 第4章 系统模块详细设计 25 4.1 PyQt5事件处理机制 25 4.2 界面设计 26 4.3 图片传入试戴设计 27 4.4 摄像头接入试戴设计 30 结论 32 参考文献 33 致谢 34 第1章 绪论 人们在认识一种事物时候,总是会在下意识的将自己认知中的形象赋予给所描述的事物。这种认知上的偏差会造成极大影响,如何解决这种在人们认知与现实差距的问题,已经成为人们最迫切的任务。对于这一问题的研究同样能适用在解决互联网购物的认知矛盾上,近十几年互联网发展催生了各种电商平台,节约了很多社会资源,提供了极大的便利。互联网的发展也推动了电商平台不断推出新的手段吸引用户,虚拟试穿、试戴在一定程度上减小了人们的认知偏差,同时也减少了不必要的退换货等操作,节省了社会资源,提升了人们的网络购物体验。本课题从网络购物中眼镜外观偏差的问题出发,研究眼镜试戴的开发技术和实现。 1.1 开发背景及意义 从第一台计算机到互联网的诞生再到现在,在不到100年的时间里所有事情都在发生着翻天覆地的变化。计算机的发明者约翰·冯·诺依曼也不会想到现在的计算机能做这么多事情,能小到可以装进口袋里,美国国防部也不会想到原本用于军事用途的互联网会将全世界连通起来。一切的事情都在变化。人们在追求便捷的购物体验时,电商平台出现了,早期的网络购物平台满足了人们对于单纯购物的需求。目前为止家电、服饰鞋帽等网络销售模式已经有一套成熟的销售模式,因为眼镜需要测量度数,所以在网络平台上受限严重。试戴技术广泛运用的时候,顾客只需提供配眼镜所需参数,就可以在网上购买到比实体店实惠很多,而且称心的眼镜。之后发展人们不再满足以能够看清东西,同时也在意眼镜的外观、品牌、材质等其他外在表现。在繁多的眼镜产品中找到合适自己的一款也变得越来越困难,电商平台提供更丰富产品的同时,也增加了消费者筛选到满意产品的时间成本。 现在各行各业都在进行着更新换代的转型升级,眼镜实体店在当下只能服务于很小的一片区域,这样的经营模式显然很难在互联网产业快速发展的当下占得先机。因此眼镜行业需要积极的将自己与互联网结合,实现从线下到线上的过渡。目前电商平台的眼镜商家还不能够很好的满足用户的体验需求,在用户追求快捷购物的同时,能够虚拟试戴体验眼镜的真实佩戴效果。顾客结合商家提供的眼镜数据和试戴效果,全方位的了解商品的特性,让顾客如身临实体店般选购,这种销售模式为不愿去眼镜实体店,但有购买需求的人提供了很好的机会。 同时也避免了以往的网络销售模式造成的大量的退货、换货等操作,浪费社会资源消耗双方时间成本。 当前虚拟穿戴的研究在服饰方面的研究比较多,但在眼镜试戴方面的研究应用还是比较少的。对于试戴效果不够动态化,有些是因为采用较多复杂的技术导致处理时间过长,有些则为自动化程度低需要用户较多的手动操作。因此需要投入大量时间去研究,本文研究如何自动化、动态、高效的虚拟试戴方法,满足当前消费者对于眼镜虚拟试戴的需求。 当前经济全球化,社会朝着万物互联的方向发展,网络购物为人们提供了全新的购物模式,但社会总是在前进,走在发展前端引领的人总是会得到奖励。互联网+X总能焕发出惊人的能量,为从业者提供创新与竞争的必要条件。根据上面描述的眼镜虚拟试戴的背景与应用价值和意义的详细分析,我们可以看出现在对于眼镜虚拟试戴的投入在未来将有巨大的收益与价值予以回馈。 1.2 发展及现状 互联网技术的飞速发展,人们对于在家购物的意愿愈来愈强烈,逐渐习惯利用空闲来完成购物。针对近视人口与日俱增的现状,结合人们对于眼镜的需求不再只满足与解决视力问题困扰,以及互联网的发展,对于眼镜虚拟试戴技术的发展巨大的发展契机。眼镜虚拟试戴技术的研究硕果累累,下面将对眼镜虚拟试戴技术的研究现状作讲述。 眼镜虚拟试戴中涉及到的人眼检测技术,在很多领域被广泛运用比如人脸识别、AI换脸、商业支付、人机交互、访问控制、视频控制、特效生成、智能机器人等多个领域。在经历了几十年的科学研究。现在已经出现非常多的人眼检测办法。 人眼定位的运用非常广泛,除了眼镜虚拟试戴外,还在支付安全、安全驾驶,面部表情分析等方面有广泛应用。在支付安全方面要求采集用户面部信息,包括面部轮廓信息,以及眨眼动作。人眼定位最初应用在支付安全上时,仅靠面部轮廓信息,这就容易造成通过照片就能“骗”过机器。眨眼动作在一定程度上降低了这个风险,照片是静态的,在系统提示眨眼是不可能做出眨眼动作的,当机器检测到眼镜没有进行眨眼动作那么就不允许通过。 在现在的很多相机App上都会有一个检测面部表情的功能,作为人类众多生物特征之一,眼睛与口鼻、嘴巴、耳朵的位置关系包含了丰富的信息。人们的喜怒哀乐都会通过眼睛,以及其他面部器官的位置变化显现出来,是愤怒,喜悦或是其他。情绪化的外在表现是表情,在进行刑事案件审理时,犯罪嫌疑人的肢体动作,面部表情都会隐藏着大量信息。捕捉犯罪嫌疑人的细微面部表情,以及眨眼频率,对于案件审理都会有巨大帮助。 人眼定位在电子商务方面的发展,主要趋向于眼睛虚拟试戴方面,为在线眼镜销售提供支撑。在互联网+时代消费者通过网上商城,能够随时随地的浏览商品。将眼镜这种平时需要去实体店才能购买到的商品投放在网上商城上销售,这是在积极拥抱互联网的结果,眼镜虚拟试戴的研究也是在为其提供助力,改变了传统的眼镜销售模式和用户体验模式。 模板匹配的人眼定位方法,主要有人眼灰度信息定位,统计信息定位。灰度图像的方法是将图像进行二值化操作,连通区域,凸显五官特征的轮廓。设置阈值用于判定所选特征,将所选物体以外的区域排除。 搜索最近连通区域 眼睛区域 连通区域提取 二值化 原始 图像 图1.1模板匹配 基于灰度投影函数的最多的是积分投影函数(Integral Projection Functions,IPF),孟春宁提出一种基于尺度不变梯度积分投影函数的人眼分割方法,该方法充分考虑到人眼区域图像局部灰度变化丰富的特点,并继承了投影方法计算量小的优点[1]。积分投影函数先灰度化处理原始图像,然后将灰度图像进行垂直或者水平方向上的灰度值积分,分析投影积分结果,得到所想要的图像特征。 深度学习的方法提取特征,属于统计类的方法。利用大量包含非人眼和包含人眼的图像对神经网络进行训练,在经过学习后得到学习模型,运用学习模型构建分类器用于目标检测。基于深度学习方法训练的模型在分类项目的准确率非常高。卷积神经网络(Convolutional Neural Networks, CNN)是深度学习的代表算法之一,可以进行监督学习和非监督学习。在二十一世纪随着计算机的发展以及深度学习理论的提出,卷积神经网络取得了巨大的进步,被广泛运用于自然语言处理、计算机视觉方面。高法灯采用基于Haar特征的AdaBoost级联分类器算法进行人脸检测,在检测出人脸的基础上,通过模板匹配的方法在人脸区域内定位人眼和检测人眼状态[2]。胡峰松等人提出一种基于特征检测的多视角眼镜试戴算法,采用级联分类器检测方式,检测出人眼位置备选区域,在约束条件下选出人眼的正确位置[3]。Schapire提出了最初的AdaBoost算法,为强弱两种学习算法的等价性给出了答案[4]。黄亨利等人利用OpenCV中集成的Haar-like特征、AdaBoost算法的人脸检测技术检测出人脸位置,然后根据“三庭五眼”的理论以及集合特征知识完成人眼定位,再将眼镜与人脸融合实现虚拟试戴的目的,对抗遮挡、表情变化都能有比较好的效果[5]。刘成、汪丰等人采用了单目摄像头(Charge Coupled Device,CCD)捕捉图像,提出一种跟踪标识物与人脸特征完成眼镜模型与人脸叠加的试戴方法[6]。张景森提出一种基于MCT(Modified Census Transform)变换和HIK SVM分类器的人脸检测方法。采用Haar特征训练SVM线性分类器作粗检测,再通过训练基于MCT的HIK SVM作细分类器对粗检测提取的结果确认,该方法具有良好的抗光干扰性[7]。Mean Shift算法在分割、聚类、图像平滑等方面应用范围很广。石华伟,夏利民提出一种基于Mean Shift算法和粒子滤波器的人眼跟踪算法[8]。SVM算法由Vapnik等人研究发展而来,在经过长久的发展到目前的SVM算法[9]。Pan G等人采用正方形的扫描窗口,将眼睛和眉毛当作一个整体对象,这样做减少了眉毛的干扰[10]。Qiong Wang等人提出一种在脸部背景图像中检测人眼睛的方法[11]。Viola等人采用AdaBoost方法选取人脸的类Haar特征结构来构建人脸检测器[12]。Juan Li等人提出了一种基于Poisson方程的眼镜虚拟试戴方法,总结了一种结合改进的主动形状的模型特征提取算法和图像合成算法,可以为指定的顾客图像进行眼睛虚拟试戴[13]。Wan-Yu Huang等人提出一种基于计算机视觉的虚拟眼镜试戴系统,通过电脑摄像头将人脸图像传入系统,用户可以观看虚拟试戴眼镜的效果[14]。 1.3 项目简介 本文主要对基于MobileNet-V2神经网络的眼镜试戴进行研究,涉及人眼特征点回归(基于深度学习人眼定位),主要为了改善眼镜虚拟试戴的自动化和动态化效果。以下是本文的组织结构: 第1章阐述眼镜虚拟试戴的意义和研究背景和发展前景,对研究的现状进行总结和介绍,对本文的研究的主要内容进行概述。 第2章详述眼镜虚拟试戴的开发工具以及开发技术基本原理,详细介绍MobileNet-V2模型,以及模型训练、图片融合、仿射变换等相关技术。 第3章分析眼镜虚拟试戴的功能特点,对功能需求进行分析。 第4章眼镜虚拟试戴各个功能模块的描述,以及各模块功能的详细设计。 最后对本文所做的主要内容和工作进行总结,并指出接下来有待研究的内容。 第2章 眼镜虚拟试戴开发工具和技术简介 在关于眼睛虚拟试戴的研究中,要将图像处理和特征点检测紧密结合,并且这些内容之间不是相互独立的,它们之间有非常多的联系,之间的一些关联形成了基本的原理。本章对于眼睛虚拟试戴开发的工具及其技术作详细分析和阐述。本文阐述的眼睛虚拟试戴开发技术主要包括人眼位置定位和人像与眼镜融合的两大部分,其中包括MobileNet-V2神经网络的复现和解读,回归模型的训练,图片融合以及PyQt5功能封装编码。 2.1 开发工具介绍 开发语言:Python 3 集成开发环境:PyCharm Community Tensorflow-GPU版本:1.9.0 2.2 模型训练数据处理 训练数据集采用的是Caltech_WebFaces数据集,该数据集的包含7092张人脸图像,以及一份人脸特征点标记的文本文件(文本中包含有10524条数据,因为有部分的图片中不单单标记了一个人物的特征点坐标)。该份人脸特征点标记文件的内容包含对应图片名称、左眼、右眼、鼻子、嘴的二维坐标。 图2.1数据集的说明文件 图片原始数据如下,这里的图片尺寸各不相同,在后续工作中需要将其转换为相同尺寸的图片即224*224。 图2.2原始数据据图像 人脸特征点标记原始数据如下,此处的特征点坐标数据类型为浮点型,同时这里还未将坐标与对应图片缩放比例尺寸转换。 图2.3人眼原始坐标 查看原始特征点标记数据是否有缺失,这里可以看到原始特征点坐标数据有10524维,其中真实会使用的数据维度为7092维,各特征点的坐标的数据并没有缺失。 图2.4数据完整度展示 原始特征点坐标在原始图片上的标记效果展示: 图2.5原始数据标点展示 上述结果可以得出,在各特征维度上数据保持了很好的完整度。需要处理的是将特征点数据数量缩减为7092(图片数量)维,这里处理的方法是去重,保留相同图片名称的第一条数据。针对MobileNet-V2神经网络的训练数据要求,输入图片的大小需要处理成224*224,以及坐标点需要根据对应图片的缩放比例转换成整数,将原始坐标数据(x, y)乘以图片,因此这里也需要对特征点标记文件进行预处理,处理效果如下。 图2.6处理完成后的坐标数据 特征点数据坐标分布情况如下,可以看出四个特征的数据坐标呈簇分布,不存在各特征点有相对于其他特征点固定的位置分布。换句话说就是图片中人脸的位置不是固定在一个位置,而是相对自由的,分布在图片中的各个位置。这样的数据分布对于训练神经网络是很适合的,增强了模型的泛化能力。 图2.7数据分布 用于训练的图片的数据处理如下,通过补齐宽和高中的最短者,使图片尺寸变成宽高相等的正方形,补充的边框使用色调为黑色。此时再通过使用OpenCV中的resize()模块,将正方形图片缩放至224*224大小。使用这个方法可以有效避免,图片在使用resize()模块时发生较大的形变。 图2.8图片尺寸转换 修正结果如下所示,原图片尺寸为252*180,通过使用黑边补齐高度使得宽和高相等,得到宽高相等的训练使用图片。 图2.9图片缩放展示 2.3 眼镜虚拟试戴开发技术介绍 整个项目的开发流程如下,一是使用MobileNet-V2神经网络训练出能回归人眼关键点坐标位置的神经网络模型,二是眼镜图片与人脸图片的融合,三是实时视频试戴下保证视频输出的流畅度,四是将逻辑代码使用PyQt5封装成可操作界面。 2.3.1 卷积神经网络介绍 在了解MobileNetV2之前需要先了解卷积神经网络(Convolutional Neural Networks,CNN),卷积神经网络是由Yann LeCun提出的,是第一个利用卷积神经网络解决MINIST手写数据集问题的人。卷积神经网络也是属于层级网络架构,与传统的神经网络很相似,在最后一层也是采用全连接层进行输出。卷积神经网络由输入层(Input Layer)、卷积层(Conv Layer)、ReLU激活函数(ReLU Layer)、池化层(Pooling Layer)、全连接层(Fully Connected Layer)组成。输入层所做的工作是对输入的原始图像数据进行预处理,如去均值、归一化、降维等,归一化是将特征范围以某一比例转换到一个指定区间如0-1的范围。降维则是按照某种映射方式将原始数据映射到不同维度上,达到筛选特征的目的。在数据模型的训练中过多的特征数据会使得模型复杂度升高,导致模型泛化能力差。降维的好处在于数据维度的下降,使得计算方面节省了很多的资源,提高了模型的泛化能力和鲁棒性(一个系统抵抗和防御异常危险情况的能力)。去除了特征之间的共线性,优化了模型,降低了模型的复杂度。 卷积层是卷积神经网络中非常重要的一层,它是使用深度与输入图像深度(即通道数,R、G、B)的卷积核进行特征提取,卷积核的尺寸通常为3*3或者5*5。卷积的过程就是让卷积核以规定步长(stride)在图像上滑动,输入图像与卷积核重合位置的元素先相乘再求和即进行矩阵的内积运算,然后加上偏置值b(Bias)就得到输出特征矩阵的一个元素。例如下图,有两个卷积核w0,w1,蓝色矩阵是输入图像,粉色矩阵是卷积核。输出矩阵标出的1的计算过程为:1-2+1+1=1,图中蓝色矩阵外有一圈灰色的框(内值都为0),称为填充值。填充值的出现是因为卷积核尺寸、输入图像尺寸以及卷积核滑动步长之间的关系。下图中输入图像尺寸为5*5,卷积核尺寸为3*3,卷积核滑动步长为2,即跳两格完成滑动。当卷积核完成第一次内积运算后,滑动两格后会出现卷积核右侧一列没有对应数值,这是就需要对原先的矩阵进行边界填充,填充值对于卷积会产生影响。完成以上卷积过程就能产生一个3*3*1的特征图。 图2.10卷积运算 关于输出特征图的尺寸的计算,上述过程涉及的超参数有卷积核个数(k)、卷积核大小(f)、步长(s)、边界填充(p),输入图像的尺寸数据宽(w1)、高(h1)、通道数(d1)。确定以上这些参数便能计算输出特征图的大小:输出特征图宽(w2)=(w1 – f + 2p)/ s + 1,高(h2)=(h2 – f + 2p)/ s + 1,深度(d2)= k。卷积层中还有一个参数共享机制,当一个卷积核在输入图像矩阵上进行卷积运算的时候,卷积核内参数是与整张图像共享的,单个卷积核只关注图像的一个特性,这样可以使得参数个数大大减少。 激活函数(activation function)的作用其实对卷积层的输出结果做了一次非线性映射,没有激活函数的作用神经网络所有层的输出都是线性的(方程为y = w*x +b),无法拟合一些非线性数据,激活函数就是为了解决线性不可分问题。在神经元中对输入的数据进行加权求和,值再被输入到一个函数中,这个函数就是激活函数。 图2.11神经元中的激活函数 大部分卷积神经网络中激活函数使用的是ReLU函数,公式为y = max(0,x),求导后得到y= 0 x≤0x x>0。ReLU函数相较于其他激活函数,在SGD中能够快速收敛。ReLU函数为网络提供了稀疏性,最大可能的保留数据特征,用大多数元素为0的稀疏矩阵表示。ReLU函数比较脆弱,在训练时当x<0时反向传播会产生神经元死亡,权重无法更新。 池化层(Pooling Layer)是用来压缩数据量的,减小过拟合。池化层往往是处于卷积层之后的,对于图像输入数据,池化层的工作就是对特征图进行压缩,降低卷积层输出的特征向量,消除冗余信息提取主要特征。 图2.12池化层工作原理 池化层用的最多方法的是Max Pooling,与卷积层类似,同样使用卷积核按照指定步长在输入的特征图上滑动,在划过的区域寻找最大值,提取得到压缩后新的特征图。如下图中矩阵左上角四个元素最大的为6,所以这个区域提取6,以此类推得到其他3个数值组成新的特征图。 图2.13 Max Pooling 全连接层(Fully Connected Layer)之前的各层网络都是为了提取特征,全连接层则是起到分类作用,其核心操作就是矩阵向量的乘积y = W * x全连接层很大程度上减小特征所处位置对于分类结果的影响。大部分的全连接层都是两层或以上,这是为更好的解决非线性问题。全连接层是忽略了空间特征的,对于在空间位置上分割图案是不适用的。如下图,对于两张图像卷积的结果是一致的,而对于空间位置的因素是忽视的。 图2.14全连接层对于空间敏感度 全连接层在将之前提取到的特征整合后就能进行分类任务,判断这个是什么物体。 图2.15全连接层输出 2.3.2 MobileNetV2网络介绍 本文中用于回归预测人眼坐标位置的模型训练架构,采用MobileNet-V2神经网络。该网络是一种轻量型的神经网络,在2018年由谷歌公司提出,相较于其他大型神经网络而言,具有参数少,结构轻量化等明显优势。MobileNet-V2在语义分割、目标检测、分类方面都有不错的表现,MobileNet-V2网络相比于MobileNet-V1网络,模型更小,准确率更高。参数方面对比MobileNet-V1要减少了30%左右,但是速度却快了30%左右。MobileNet-V2是适用于移动端设备的神经网络,手机以及其他嵌入式设备都可以使用。MobileNet-V1的发布改变了以往神经网络参数过多,运算耗费过多资源的问题,在降低少许精度的同时减少大量参数,减小了模型体量。MobileNetV1相较于常规的卷积神经网络,提出了深度可分离卷积(depthwise separable convolution),在参数量方面MobileNetV1使用深度可分离卷积大大减少了参数量。这样的小型的网络提高了移动设备的使用灵活性,提升了用户体验。眼镜虚拟试戴最广阔的应用场景是在移动端,轻量型网络的训练,也使得很多硬件设备不足以支持大型网络训练的人能够进行实验。 MobileNetV2中继承了MobileNetV1中引入的深度可分离卷积(Depthwise Separable Convolution),深度可分离卷积是将传统的卷积运算分成Depthwise Conv(DW卷积)与Pointwise Conv(PW卷积)两个部分进行。在传统卷积过程中,卷积核的深度与输入的特征矩阵深度是一致的,输出特征矩阵的深度是与卷积核的个数相同的。在DW卷积中,卷积核的深度是为1的,输入特征矩阵的深度是与卷积核个数以及输出特征矩阵深度相等的。在DW卷积中一个卷积核负责输入特征矩阵的一个channel,这是传统卷积不同的。 图2.16普通卷积 图2.17 DW卷积 PW卷积在实质上是与普通卷积一致的,卷积核深度与输入特征矩阵深度以及输出特征矩阵一致,卷积核的深度都是为1的,这是与普通卷积不同的。 图2.18 PW卷积 普通卷积与深度可分离卷积在参数数量上的对比如下,DF(输入特征矩阵的高和宽)、DK(卷积核的大小)、M(输入特征矩阵的深度)、N(输出特征矩阵深度)。普通卷积参数计算公式:DK∙DK∙M∙N∙DF∙DF,深度可分离卷积核参数计算公式:DK∙DK∙M∙DF∙DF+M∙N∙DF∙DF。深度可分离卷积参数量与传统卷积参数量的比值为1N+1DK2= 1N+19(传统卷积核的深度DK一般为3),由此可以粗略推算,传统卷积的参数量是深度可分离卷积参数量的8到9倍。 MobileNetV2提出了两个创新点:Inverted Residuals(倒残差),Linear Bottlenecks(线性瓶颈)。倒残差结构中对于特征矩阵的处理,首先采用1*1卷积核进行升维,然后利用3*3的DW卷积核进行卷积,最后使用1*1的PW卷积进行降维操作,呈现低维-高维-低维的结构。 图2.19倒残差结构 倒残差结构中使用的激活函数是relu6,原本的relu激活函数对于大于0的值是加限制的,即在大于0的部分是正无穷的。Relu6在大于0部分进行了处理使其最大值为6,这就避免了输入值在激活后过大,造成模型不稳定的影响。 图2.20 relu6函数代码 Relu6的表达式为relu6(x) = min(max(x, 0), 6),函数图像如下: 图2.21 Relu6 倒残差结构中,最后一层1*1的PW卷积使用的是线性激活函数。使用不同维度的矩阵T对输入的矩阵进行升维,然后使用relu激活函数得到输出矩阵,再使用T的逆矩阵对输出矩阵还原回输入矩阵维度,会发现对于低维信息损失严重,高维数据损失较小。在倒残差结构最后一层使用线性激活函数替代线性激活函数,是为了防止非线性因素丢失太多的信息。 2.3.3 神经网络模型训练 模型训练中使用的是从keras.Applications包中导入MobileNetV2神经网络模型,获取模型的中间层输出,增加全连接层数量,再进行线性输出。涉及到的调整有损失函数的选择、全连接层的数量。 本文损失函数的选择测试和有MSE(Mean Squared Error,均方误差),MAE(Mean Absolute Error,平均绝对误差)。 均方误差又称L2损失是回归模型中最常用的一种损失函数,本质是真实值与预测值差值的平方和的均值,即计算每个batch中的预测值与真实值差值的平方和的均值,随着误差减小梯度也在减小便于收敛。表达式定义如下: MSE(y,y`) = i=1n(yi−yi`)2n 均方误差损失与预测值之间的函数图像如下: 图2.22 MSE损失与预测值关系 上图中真实值为100,预测值的范围为[-10000, 10000],损失范围[0, +∞]。可以看出在预测值在偏离真实值之后,MSE损失是非常迅猛的。这是由于平方运算导致的,当真实值与预测值相差小于1时,损失较小,当两者差值大于1时会有较大的损失。对于异常值会给予较高的权重,因此MSE容易受异常值的影响,从而牺牲正常值数据,进而影响整个模型的性能。 MAE(Mean Absolute Error,平均绝对误差)又称L1损失,同样也是回归模型中常用的损失函数。实质为真实值与预测值差值的绝对值之和的均值,定义如下: MAE = i=1n|yi−yi`|n MAE的学习率大部分时候是固定的,梯度较大,不适合模型的学习和函数的收敛,但是因为相对固定的学习率所以不会引起梯度爆炸。 图2.23 MAE损失 由此可知,在处理异常值的时候MAE稳定性更好,但是学习率相对固定不利于模型学习与收敛。MSE对于异常值敏感,会给予异常值较高权重,影响模型性能。对于MAE与MSE两者谁更适合,本文将继续探讨。 以下为两个损失函数、batch size(每批次训练样本大小)、epochs(训练次数)、学习率相同,但全连接层数目不同的模型训练结果。 图2.24 MAE损失函数训练展示 在上述对比中两者的测试集误差与训练集误差,在下降的总趋势上是一致的。4层全连接层测试误差在前期下降明显,先行趋于稳定,三层全连接层在下降过程中比较缓慢。但在实际数据中全连接层数为3时,无论是测试误差还是训练误差都比4层全连接层小,但是差距较小。上述在缩小训练次数的情况下,增加全连接层数目是有效果的。 针对损失函数的改变对于模型性能影响,采用MAE与MSE进行对比。在Batch size、epochs相同的情况下进行,相较于使用MAE的测试损失和训练损失都比较大。 图2.25 MSE损失函数训练展示 本文训练了多个模型,并选取其中一些模型试戴效果进行对比展示,如图2.26和图2.27所示。 图2.26 MSE损失函数模型效果展示 图2.27 MAE损失函数模型效果展示 在上述光照条件相同的情况下,比较可以发现对于屏幕中央部位,两个模型的试戴效果接近,左侧的试戴效果中MAE略胜MSE一筹,右侧的效果同样是MAE表现较好。 针对图2.24左侧4层全连接层、MAE损失函数模型进行试戴测试,如图2.28所示。 图2.28 全连接层数4 图2.30 训练与测试数据损失 根据试戴效果可知,在除全连接层数不同外其他条件一致,数据上看训练与测试数据在epochs减半的情况下,都达到了次数为20的水平,但是展示结果却不尽人意。全连接层的数目会影响模型的性能,显然4层的全连接层的模型效果不尽人意。 综合上述展示结果比较,选定全连接层数目为3、epochs为20、batch size为14、损失函数为MAE的模型。 2.3.4 仿射变换 仿射变换,是指在几何中,一个向量空间在进行了一次线性变换后并接上一个平移,从而变换到另一个向量空间。仿射变换是在二维坐标到二维坐标的线性变换,而且保持了二维图片的“平行性”以及“平直性”。仿射变换是可以通过一系列变换复合来实现的,其中包括缩放(scaling)、平移(translation)、反射(reflection)、旋转(rotation)以及剪切(shear)。平移变换和旋转变换两者的组合,被称为欧式变换(Euclidean transformation)。一般图像由RGB三个通道组成,对于图像本质而言就是由一些数字组成的矩阵,在进行图像的旋转、平移等处理时处理时实质上,就是对矩阵的内容元素进行矩阵变换操作。 一个集合X的仿射变换表达式为: fx=Ax+b,x ∈X 平移量为0或者没有进行平移的所有仿射变换,都可以用以下变换矩阵表示。x'y'为变换完成后的坐标,xy则为变换前的坐标。abcd为变换矩阵,目的就是将原始坐标变换成x'y',二维图像变换中,一般表达为: x'y' = abcd xy 排除了平移变换之后的所有仿射变换都为线性变换。引入齐次坐标,使用3*3矩阵M来表示这一类变换。增广这里最后一行为(0,0,1),这样就能涵盖到平移变换了,示例如下。 x'y'1 = abcdef001 xy1 对于不同的仿射变换相对应的a、b、c、d会有不同的约束: (1)缩放变换,将每一个原始坐标的纵坐标缩小(扩大)ty倍,以及将横坐标缩小(扩大)tx倍,使原本的二维坐标变为三维坐标,此时变换矩阵M呈现如下: 10tx01ty001 (2)旋转变换,将目标图像以(x,y)为中心顺时针旋转α弧度,转换矩阵M可以表示为如下 M = 10−x0−−y001 cosα−sinα0sinαcosα0001 10x01y001 M = cosα−sinαx−x∙cosα+y∙sinαsinαcosαy−x∙sinα+y∙cosα001 所有的变换矩阵只要记住一个点:坐标系的变化,即原点和基向量的变化。坐标系中的点会随着坐标系的变化,跟着做同样的变化。 在放射矩阵abcdef001中,ad以及be是新的基向量,cf则为新坐标系的原点。 实际使用中,我们可以使用OpenCV中的仿射变换。进行旋转变换计算变换矩阵的操作时,使用OpenCV 中的cv2.getRotationMatrix2D(center, angle, scale)计算。其中提供需要旋转的图像中心点坐标(center),旋转角度(angle)正值时为逆时针旋转,负值时为顺时针旋转,缩放因子(scale)即缩放比例。进行图像的旋转时使用cv2.warpAffine(Image, M, (nW, nH), borderValue)这里需要提供原始图像(Image),旋转矩阵M,新图像的宽高(nW,nH),borderValue为旋转后造成的缺失内容的填充,默认值为(0,0,0)即黑色,此处更改为白色,使用OpenCV具体实现的代码如下。 图2.31图像旋转代码 2.3.5 图像融合 在眼睛虚拟试戴的实现过程中,如何将眼镜与人脸的融合是一个非常值得研究的技术问题。常见的图像重叠操作有三种,一是图像重叠。二是图像融合,三是按位操作。 图像叠加是属于一个加法操作,会造成图片颜色的改变。前面的小节有提到过,图像是有RGB三个通道数据组成的一个矩阵。两张图片之间的叠加在本质上,就是对两个矩阵进行加法操作。图片叠加的可以使用numpy中的矩阵加法来实现,但是这个矩阵的加法不是饱和操作,会对结果取模,cv2.add()将两个图像叠加使用的加法操作是饱和操作,也就是有上限值的。使用cv2.add()要保证两个图像的类型大小必须一致,又或者第二个图像是一个标量,cv2.add()操作效果如下,色彩失真明显。 图2.32 cv2.add()融合效果 按位操作有多种形式如:AND、OR、NOT、XOR等,在我们需要提取一部分图像,ROI(兴趣区域region of interest)区域为非矩形时上述操作会非常有效,但这一方法的缺点在于无法使用二维坐标进行精确粘贴。在进行按位操作前,需要将粘贴图片进行二值化(制作黑白掩膜)以及反色的黑白掩膜,即将图像的像素点的灰度值设置为255或者0,使得整张图片的轮廓由黑白两色呈现。可以使用OpenCV进行所涉及到的操作,示例效果如下。 图2.33黑白掩膜与反色黑白掩膜 将反色黑白掩膜与被粘贴图像进行与运算,再将原图片和黑白掩膜进行与运算,最后将所得图像和被粘贴图像进行与运算,效果如下。 图2.34按位操作融合效果 图像融合在本质上也是一种加法操作,但是在处理完成后图片呈现的细节上会有很大的不同。OpenCV中使用cv2.addWeighted图片融合可以将两张图片按照比例混合起来,两张图片在新图片上有不同的权重,给新图片的呈现提供了多种多样的选择。在使用OpenCV的cv2.addWeighted模块时,依旧是无法按照二维坐标点将两张图像进行精确融合。 图2.35 addWeighted融合效果 泊松融合是由Patrick Pérez,Michel Gangnet,Andrew Blake等人在《Poisson Image Editing》论文中提出的,也是本次眼睛虚拟试戴使用的图片融合技术,在实际实现上会使用OpenCV中seamlessClone模块。泊松融合能够做到无缝融合,即将融合边界中底图和目标图像的差异平滑的扩散到融合后的图像中,经过融合后底图与目标图像能够无缝连接,其中的色调等与底图一致。 关于泊松重建其实质就是求解一个方程组,在求得系数矩阵A,散度b后便可解得融合图像的像素通道值x: Ax=b 泊松融合所做的工作描述,现有图像g(待克隆区域ROI),背景图S,我们希望把待克隆区域(图片g)粘贴融合到背景图S中,并且保证两者的融合过渡边界呈现最自然的效果。 图2.36泊松融合示意图 算法所做的具体步骤:首先求出图g的梯度场V,使用Sx,Sy两个卷积核计算x,y方向导数值,分别与图g进行卷积。得到,∂f∂y = Sy U f,将运算所得值组合在一起得到图像梯度向量∇f=∂f∂x∂f∂y ,各像素点的梯度向量组合后便得到了图像的梯度场。同理亦可以求得背景图S的梯度场,在两张图像的梯度场都求解完成后,直接把图像g的梯度场替换上背景图S的梯度场上即可。因此在上述步骤求解背景图的梯度场时,要与感兴趣区域(ROI)梯度场重合位置的梯度场无需求解,即Ω区域,减少运算量。 图2.37 Ω区域 在得到融合图像的梯度场后,开始求解融合图像的散度。在上述的计算中我们已经得到了融合图像每个像素点的梯度值,组合之后便是待重建图像的梯度场,对梯度求偏导后就得到了融合图像的散度。求得系数A后,再求得A的逆矩阵便可求得x(融合图像的每个像素三个通道值)。本文使用OpenCV中的无缝克隆(cv2.seamlessClone)其中克隆类型选择了混合克隆(MIXED_CLONE),需要提供待融合图像、背景图、遮罩、融合位置坐标、融合类型。 MIXED_CLONE融合效果如下所示: 图2.38融合效果 NORMAL_CLONE融合效果如下所示: 图2.39普通克隆效果 普通克隆的遮罩与背景图的融合效果并不好,细节方面并未达到预期,基于这一效果选择混合克隆是一个明智的选择。 第3章 需求分析 3.1 功能需求 眼睛虚拟试戴开发的目的,在初始目标上是为用户在线选购眼镜提供一定程度上的帮助。在平常的用户购买眼镜行为上,用户主要注重的三个方面,一是眼镜度数是否与自己眼镜度数是否适合,二是眼镜的外观与本人是否搭配,三是镜片以及镜框的材质。上述关注点中眼镜度数只需提供在医院测量的数据即可,材质方面可以通过商品详情获悉,只有眼镜外观是否与本人搭配这是一个难以确定的因素。眼睛虚拟试戴提供了用户动静两种试戴功能体验,一种是基于图像试戴,另外一种为基于视频实时试戴。在试戴过程中用户可能会需要清除已经添加的眼镜,更换其他眼镜,可以使用清屏功能,还原原始屏幕。用户在试戴后满意试戴效果,如果处于图片试戴状态可以皆使用保存功能,保存试戴照片。对于眼镜试戴效果呈现视频实时试戴是比较令人满意的,当用户处于视频实时试戴时,可以进行截取视频的当前帧并保存,对于截取不满意的亦可以返回重新截取。 第4章 系统模块详细设计 4.1 PyQt5事件处理机制 在PyQt5中为开发者提供了两种对于事件的处理机制,一种是事件,另外一种是信号(signal)和槽(slot)。事件是一个有始有终的行为过程,在整个过程中有三个参与者分别是:事件来源、事件目标、事件对象。事件来源是指行为发起者,发生改变状态的对象。事件目标即事件的通知对象,事件对象封装了事件源的状态和变化。 在PyQt5中采用了信号和槽机制来处理时间,事件中对象之间的通信采用信号-槽进行传输。当一个指定事件发生,传递这个事件信息的信号就会被发射,对应连接槽的信号就会被发射后,这个槽就会被调用来执行相关内容。信号和槽之间有多种特性,比如多个可以连接到同一个信号,信号与信号之间可以彼此连接,信号的参数类型对应的Python的所有参数类型槽与信号的通信方式可以是异步连接,也可以是同步连接等。 事件源 槽1 触发生成 槽2 信号1 调用 信号2 发射信号 事件目标 连接 图4.1信号通信图 在PyQt5中信号主要分为两大类:自定义信号,内置信号。内置信号是指QObject对象自定义的信号,内置槽函数是QObject对象自定义的槽函数。还有一种高级自主的信号和槽定义,指的是开发者根据自身需求的考量定义的信号和槽。自主定义信号和槽的步骤一般如下:1.定义信号、2.定义槽函数、3.连接槽函数与信号、4.发射信号。自主定义信号通过pyqtSignal()参数类型可自定义也可以无参数,槽函数的定义与其他方法定义类似。信号和槽使用connect方法连接,例如self.ch_img.img_signal.connect(self.open_img)。发射信号使用emit()方法,参数类型与信号参数类型保持一致,信号和槽工作流程如下。 槽函数 发送者 信号 调用 接收者 连接 接收 图4.2信号槽的工作流程图 4.2 界面设计 眼镜虚拟试戴界面使用PyQt5搭建,在设计布局上主要分为三大部分。界面左侧纵向排列的眼镜图案为不同的眼镜选择按钮,用户在打开摄像头或者已经打开图片的情况下,若想佩戴眼镜点击对应按钮即可佩戴对应的眼镜,更换则直接点击对应眼镜。界面中心白色正方形(screen)部分为显示屏,用于显示图片以及视频。界面下方横向排列是按钮为功能性按钮,依次为清屏、选择图片、拍照、保存图片、打开相机,用户可以使用这些按钮实现相关内容操作。 图4.3界面UI 左侧眼镜缩略图设计上使用的是QToolButton,它是继承自QAbstractButton的。它一般用来显示图标,不显示文字,这是与QPushButton最大的不同点。使用setGeometry()可以设置按钮位置与大小,setIcon()与setIconSize()则可以设置显示图片以及图片显示的大小。 图4.4眼镜图片设置 用于显示图像与实时视频的控件使用的是QLabel标签,该标签具有多种功能可作用为占位符、显示文本、显示图片、播放视频、GIF动图等。由于此处的QLabel标签是用于显示作用,所以不设置文本内容,将背景色调至白色突出在界面的位置及所占比例。 图4.5 QLabel标签设置 界面下方的功能操作按钮,使用的是QPushButton按钮,它同样继承自QAbstractButton。使用其中的Clicked信号可以与槽函数进行通信,完成槽函数的调用。 图4.6照片保存 以上为整体界面设计的主要内容。 4.3 图片传入试戴设计 图片的传入试戴用户方面主要操作流程:点击选择照片,打开文件夹选定图片→等待图片在白色矩形区域显示→点击左侧眼镜缩略图按钮→佩戴成功 图4.7图片试戴操作流程 在开发逻辑设计上分为一下几个步骤:图片显示→人眼特征点回归模型启动,得到人眼坐标→计算两眼的倾斜角度→旋转眼镜→融合眼镜和人脸→显示。 在整个试戴过程中,最为重要的就是人眼特征点回归。在逻辑代码中人眼特征点的回归封装在Regression_Point()方法中,可以在图片试戴与实时视频试戴中被调用,在调用前会判断是处于图片试戴状态还是实时视频试戴状态。在对图片进行人眼特征点回归之前。需要将传入的图像进行尺寸变换,调用之前讲述过的resize_image()方法,以适应模型要求的224*224的宽高比例。在经过模型回归后得到的4对坐标组成的列表,分别是左眼、右眼、鼻子、嘴唇。得到的这4对坐标是基于224*224的基础上的坐标数值,要进行眼镜试戴需要将坐标转换为原始图像尺寸的数值。将X轴上的坐标除以224与原始图像的宽的比值,将Y轴上的坐标除以224与原始图像的高的比值,得到对应原始图像的坐标。 图4.8人眼位置处理代码 回归人眼坐标的用途有两个,一是计算两眼的倾斜角度,二是获取两眼中心点坐标。在计算两眼的倾斜角度前,计算两眼坐标在X轴和Y轴方向的距离X2−X1和Y2−Y1。使用math模块中的atan()计算弧度,再使用math模块中的degrees将弧度转换为角度,计算两眼的中心点坐标M(X2−X12, Y2−Y12 )较为简单。在这里我们需要计算两眼的距离,为下一步眼镜缩放做准备。 (X2Y2) 中心点坐标M(X2−X12, Y2−Y12 ) (X1Y1) α 图4.9双眼中心位置 眼镜试戴的编码采用了多线程编程,避免了在功能切换时出现界面卡死的现象。将所有线程都写在MyThread()类中,需要进行某项功能操作时开启该线程。 图4.10线程类代码 图4.11线程开启 试戴过程中点击界面眼镜按钮,开启对应线程执行佩戴任务。这里开启的线程处理的任务是,将用户打开的照片与对应的眼镜进行旋转融合,显示在控件screen上。融合方法内同时有控制眼镜尺寸的代码,由于眼镜的原始图像大小为1417*1417,QLabel(screen)尺寸为640*480,所以眼镜图片只需要缩小。这里缩小比例的确定会使用需要知道两眼之间的距离, 即distance = (x2− X1)2+(Y2− Y1)2,根据眼镜图片尺寸与人眼距离distance的关系,所以这里将眼镜图片的尺寸缩小为distance的2倍。缩小后的眼镜图像传入rotate()中执行仿射变换,再传入mix()方法中进行泊松融合,最后返回融合图像。 图4.12图像旋转代码 图4.13图像融合代码 返回的融合图像不能直接显示在QLabel控件(screen)上(OpenCV读取图像时格式为BGR格式,与QLabel上显示图像的格式不符合),需要对返回图像进行类型转换,将原本的BGR格式图像转换为RGB格式,再转换成QLabel上能显示的格式。返回的QtImg即为最终显示的图像。 图4.14图像类型转换 4.4 摄像头接入试戴设计 实时视频试戴设计涉及到了,摄像头读取视频抓取固定时间间隔内的帧显示、图像的仿射变换、泊松融合、拍照保存。 摄像头的开启采用的是定时器控制,这样可以使摄像头的开启以及关闭流畅,对基于摄像头开展的试戴任务也更方便。将摄像头的正常开启参数CAM_NUM初始化为0,开启成功则开始以30毫秒为间隔捕捉视频帧显示,同时将开放“拍照”按钮,并将原本文本内容为“打开相机”更改为“关闭相机”。 图4.15定时器代码 实时视频试戴的实现中,为了方便更换试戴的眼镜,代码设计上以每一副眼镜为设计中心。初始化眼镜参数(GlaNum)为0,即没有佩戴眼镜。在需要试戴眼镜时,点击对应眼镜按钮连接发送信号连接对应槽函数,将眼镜参数赋值为对应数值。 图4.16眼镜参数设置 实时视频试戴其实是将捉取的每一帧图像进行特征点回归,等一系列图像试戴的操作,再将返回的每一帧图像播放。在抓取到图像后需要对图像进行水平翻转,以达到镜像效果。 图4.17镜像反转图像 为了可能的模拟真实的使用场景,在按钮变化上做了一下改变。在打开摄像头的状态下,接触“拍照”按钮的禁用,点击“拍照”按钮后更改QPushButton按钮文本内容为“返回”,此时“保存照片”按钮解除禁用,用户可以选择返回重拍或者进行下一步操作保存图片。 图4.18实时视频试戴效果 结论 互联网时代万物都以便捷为制胜法则,从线下实体店到线上平台,人们为节约时间和资源不断寻求进步。人们对于外在装扮认知越来越清晰,线上平台为满足用户的需求极力寻求解决办法,需求的日益高涨引起计算机视觉领域的关注。基于计算机视觉的试穿、试戴应运而生,眼镜试戴便是其中之一。本文针对眼镜虚拟试戴进行研究,即使人们在家也可以试戴眼镜。 1. 本文工作重点总结 介绍了眼镜虚拟试戴的意义和研究背景,以及研究现状。分析了本文的眼睛虚拟试戴所使用的技术和原理,对卷积神经网络和MobileNet-V2神经网络进行了详细讲解。对于眼镜试戴中所需的仿射变换、图像融合等处理技术进行了分析。模型训练中的参数调整、隐含层的调整变化,对于模型精度的影响。具体实现过程中使用了深度学习模型对人眼关键点进行回归预测,将眼镜图像进行仿射变换与人眼位置融合,使用PyQt5进行封装时使用到多线程编码,防止界面在使用过程中卡死。 2. 后续工作与展望 模型对于大幅度倾斜的人脸佩戴效果不好,需要丰富训练数据的多样性。对于试戴环境的干扰,需要增强模型的泛化能力。提高关键点的检测速度,只有提高了检测速度才能在实时试戴中发挥更强大的作用。 参考文献 [1] 孟春宁.人眼检测与跟踪的方法及应用研究[D],2013. [2] 高法灯.基于图像的机车司机疲劳检测系统研究[D],浙江大学,2010. [3] 胡峰松,宋先普,钱飞帆. 一种多视角眼镜试戴算法的研究与实现[J]. 小型微型计算机系统,2017-03,38(3),605-609 [4] Schapire R E.The strength of weak learnability[J]. Machine learning, 1990,5(2),197-227 [5] 黄亨利,梁艳,陈靖宇,刘文双.一种基于人脸检测的虚拟眼镜试戴技术[J].信息通道,2017-06,2017(6),63-66 [6] 刘成,汪丰,祁长红,倪舟,姜伟,邹亚,王丽根.一种基于增强现实的虚拟眼镜试戴的方法[J],工业控制计算机,2014-12,2014(12),66-68 [7] 张景森.基于视觉的虚拟眼镜试戴系统开发[D],杭州:杭州科技大学,2015-03 [8] 石华伟,夏利民.基于Mean Shift算法和粒子滤波器的人眼跟踪[J],计算机工程与应用,2006,2006(19),45-47 [9] Vapnik V N. An overview of statical learning theory[J],Neural Networks, IEEE Transaction on,1999-10,1999(10),988-999. [10] Pan G, Lin W, Wu Z, et al. Eye detection system based on SVM filter[J]. Photonics Asin, Internation Society for Optics and Photonics, 2002, 326-331 [11] Wang Q, Yang J. Eye detection in facial images with unconstrained background[J]. Journal of Pattern Recognition Research,2006-1, 2006(1), 55-62 [12] ViolaP,Jones M,Rapid object detection using a boosted cased of simple features[J],In:Computer Vision and Pattern Recognition,Proceedings of the 2001 IEEE Computer Society Conference on. IEEE, 2001, 2001(1), 511-518 [13] Li J, Yang J. Eyeglasses try-on based on improved Poisson equations[J]. In: Multimedia Technoloogy (ICMT), International Conference on. IEEE, 2011, 3058-3061 [14] Huang W Y, Hsieh C H, Yeh J S. Vision-based virtual eyeglasses fitting system[J]. In: Consumeer Electionics (ISCE), IEEE 17th International Symposium on. IEEE, 2013, 45-46 本文档由香当网(https://www.xiangdang.net)用户上传

    下载文档到电脑,查找使用更方便

    文档的实际排版效果,会与网站的显示效果略有不同!!

    需要 120 香币 [ 分享文档获得香币 ]

    下载文档

    相关文档

    基于VRTK的虚拟仿真乒乓球运动项目的设计与实现

    随着5G的到来和VR技术的改革,各类的VR产品涌入人们的视野当中,其中包括众多的体育类虚拟仿真项目,在人们因为天气的问题而不能出外运动或者周边没有运动设施的时候就会感到懊恼。

    2个月前   
    102    0

    基于LabVIEW的虚拟频谱仪的设计与实现毕业论文

    本科毕业论文(设计)题 目 基于LabVIEW的虚拟频谱仪的设计与实现 指导老师 职称 学生姓名 学号 ...

    1年前   
    393    0

    眼镜行业离职信

    眼镜行业离职信  尊敬的陈总:  我很遗憾自己在这个时候向公司正式提出辞职。   自从XX年4月入职以来,我一直都很享受明视这份工作。转眼3年多过去了,正是在这里我完成了自己从一个男孩到男人的...

    9年前   
    144    0

    眼镜店春联

    眼镜店春联  眼镜店春联      秋毫明察      胸中存灼见      日月重光      眼底耕秋毫    悬将小日月      春风常识面    照彻大乾坤      秋水惯传神好句...

    9年前   
    227    0

    眼镜店实习总结

    眼镜店实习总结  实习是一项综合性的、社会性的活动,是一个由学校向社会接轨的环节,是学校学习向社会工作转型的一大模块。搞好社会实习工作是很关键的,对一个学生来说是很重要的,从一个学生的成长过程...

    8年前   
    134    0

    虚拟项目管理- 虚拟项目团队问题的解决

    虚拟项目管理: 虚拟项目团队问题的解决  在《虚拟项目管理:虚拟项目团队存在的问题》一文中,笔者指出了虚拟项目团队这种组织形式所存在的一些问题,这些问题可以说是与虚拟形式形影相随的。也就是说,...

    9年前   
    205    0

    虚拟项目管理:虚拟项目团队的组织形式

    虚拟项目管理:虚拟项目团队的组织形式在《虚拟项目管理:虚拟项目的特征》中,笔者简单地介绍了虚拟项目的概念和特征。我们知道,虚拟项目事实上是一个实实在在的项目,只不过参加项目开发的人员或部门分布...

    8年前   
    242    0

    虚拟现实技术论文

     2014-2015学年第1学期期末考试 论 文 考试科目: 虚拟现实技术 学 院:专 业: 班 级:班内序号:学 号:姓 名:手 机:任课教师: ...

    9个月前   
    429    0

    构建你的虚拟团队

    构建你的虚拟团队想象一下这样的一个情景:你的纽约旅行社公司与几个电信运营商合作升级一套新的在线预订系统。应用程序提供商位于加利福尼亚州,与你建立业务联系的酒店和航空公司合作伙伴遍及全球。你在整...

    8年前   
    246    0

    虚拟股协议

    甲方:xxxx公司   乙方:   鉴于乙方以往对甲方的贡献和为了激励乙方更好的工作,也为了使甲、乙双方进一步提高经济效益,经双方友好协商,双方同意甲方以虚拟股的方式对乙方的工作进行奖...

    6年前   
    6287    0

    虚拟语气的用法

    虚拟语气用法及动词形式从句主句与现在事实相反If+主语+did(be动词were)WCMS主语+should/would/could/might+do与过去事实相反If+主语+had done...

    10年前   
    275    0

    如何构建你的虚拟团队?

    如何构建你的虚拟团队?团队运作协议(team operating agreement)可以避免团体陷入困境,因为它清晰地描述了组织预期团队成员与他们自己工作的关系以及他们对团队的责任,这种稳定...

    9年前   
    187    0

    服务器虚拟化

    服务器虚拟化 1. 提高服务器电脑的效率       虚拟化可以让一台电脑干多台电脑的事。以一个学校为例,随着学校规模的扩大和时代的发展需求。不可避免会增加新的运用比如:教务管理,设备管理...

    10年前   
    12035    0

    小议虚拟团队的管理

    小议虚拟团队的管理  购买了福特汽车的顾客不会了解是一个虚拟设计工作室在负责福特汽车的款式设计,它通过电子手段将世界各地的设计人员组合在一起。这些人员实际上分属福特的7个设计中心。越来越多的航...

    8年前   
    240    0

    在眼镜商会会员大会上的讲话

      在眼镜商会会员大会上的讲话   尊敬的会员同志们,大家好!     很有幸受邀参加眼镜商会年终会员大会,%%%%%眼镜起源于二十世纪六十年代末期,经过四十年的发展、整合,现已形成了...

    5年前   
    3793    0

    参加上海眼镜展会心得报告

    参加上海眼镜展会心得报告   2月26日至28日,上海眼镜展会三天,汇聚了来自国内外的几百家展商,给我最大的感受就是不简单,通过这次展会我对眼镜行业有了初步的了解,从镜片、镜架、镜盒镜布、验...

    8年前   
    9469    0

    《天才眼镜狗》观后感

    《天才眼镜狗》观后感第一篇:天才眼镜狗观后感天才眼镜狗观后感星期五春游,我们去电影院看了电影《天才眼镜狗》。世界上最有成就的狗皮博迪先生发明了许多东西,其中有一台时光机。皮博迪先生收养了人类孩...

    8年前   
    177    0

    华丰眼镜有限责任公司简介

    华丰眼镜有限责任公司简介 华丰眼镜有限责任公司1981年成立于****,是一家以经营各类眼镜产品为主的眼镜零售连锁企业。公司现拥有六家门店,总营业面积达1000多平方米,员工100多人。通过...

    9年前   
    12258    0

    眼镜公司圣诞晚会流程(精选多篇)

    眼镜公司圣诞晚会流程(精选多篇)第一篇:眼镜公司圣诞晚会流程眼镜公司圣诞晚会流程晚会主题:主题:迎新年、贺圣诞、企业文化建设;助兴:整个活动提供抽奖、竞赛等众多的活动及节目让员工乐在其中;二、...

    10年前   
    250    0

    2018年眼镜实习报告3篇

    2018眼镜实习报告3篇本文目录1. 2018眼镜实习报告2. 10月大学生眼镜店实习报告范文3. 眼镜店销售实习报告  以往假期将至,我们都会筹划着各种旅游的地点,游戏的点子;然而,这个暑假...

    3年前   
    126    0

    文档贡献者

    平***苏

    贡献于2021-09-12

    下载需要 120 香币 [香币充值 ]
    亲,您也可以通过 分享原创文档 来获得香币奖励!
    下载文档

    该用户的其他文档