基于人脸识别的动态识别签到系统设计与实现_第1页
基于人脸识别的动态识别签到系统设计与实现_第2页
基于人脸识别的动态识别签到系统设计与实现_第3页
基于人脸识别的动态识别签到系统设计与实现_第4页
基于人脸识别的动态识别签到系统设计与实现_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

摘要目标检测(ObjectDetection)是近年来计算机科学的研究重点,他可以通过识别目标的几何特征,将复杂的场景分割并针对特定的目标进行识别,关键点在于准确度以及实时性。人脸识别(Facerecognition)则是目标检测中,让人最为看重的一个子类。一旦我们的人脸识别技术足够成熟,意味着我们不再需要其他物理的钥匙或者是数码的密钥,而是用一张脸,就可以满足日常生活中的一切。世界上可能有很多相似的人脸,但是绝对没有完全相同的两个人。当人脸识别技术足够成熟,我们完全可以将人脸识别作为身份分类的一个重要指标。 在深度学习的刺激下,人脸识别有了巨大突破,机器也变得会“思考”。这意味着人脸识别的安全等级将会提高,可以适用于更多安全要求更高的场景,同时人脸识别的研究也可以推动更多神经网络、图像处理等的领域发展。关键词:□目标检测□人脸识别□深度学习Abstract□ObjectdetectionistheresearchfocusofComputerScienceinrecentyears.Itcanrecognizethegeometriccharacteristicsofthetarget,segmentthecomplexsceneandrecognizethespecifictarget.Thekeypointistheaccuracyandreal-time.Facerecognitionisoneofthemostimportantsubcategoriesintargetdetection.Onceourfacerecognitiontechnologyismatureenough,itmeansthatwenolongerneedotherphysicalkeysordigitalkeys,butwithaface,wecanmeeteverythinginourdailylife.Theremaybemanysimilarfacesintheworld,butthereareabsolutelynotwoidenticalpeople.Whenfacerecognitiontechnologyismatureenough,wecantakefacerecognitionasanimportantindexofidentityclassification.Underthestimulationofdeeplearning,facerecognitionhasmadeagreatbreakthrough,andmachineshavebecome"thinking".Thismeansthatthesecurityleveloffacerecognitionwillbeimproved,whichcanbeappliedtomoresceneswithhighersecurityrequirements.Atthesametime,theresearchoffacerecognitioncanalsopromotethedevelopmentofmoreneuralnetworks,imageprocessingandotherfields.Keywords:□objectdetection□facerecognition□recognitionspeed目录第一章:绪论 第一章:绪论1.1研究背景及意义传统的目标检测技术主要是通过几何特征对图像进行切割,进而对切割出的素材进行几何分析,根据特征将其分类。但是实际使用中,各种物品杂乱无章重叠摆放,部分物品特征会被覆盖导致目标检测准确率较低,实用型并不高。而人工智能的到来,为我们展示了不一样的世界。目前,各种人工智能设备早已被大众所接受,各种IOT设备也已经被量产。物联网完全可以凭借AI这杆利刃,更上一层楼。人工智能所带来的不仅仅是全新的人机交互体验,同时他也带来了更多技术工种的就业机会,人工智能可以跨越多行业相结合,也就意味着需要更多的人才去进行智能训练,人工智能就如同当初的自动化革命一般为我们的社会注入新的血液。人脸识别技术早在几十年前的科幻电影中就已经出现,跟着机器学习的脚步,它也走出电影来到了我们的生活中。传统的物理密钥、密码都存在被盗取的风险,而人脸不一样,就算是双胞胎之间也不存在一摸一样的五官角度,因此人脸识别是我们进行身份管理最安全的一项技术。当人脸识别技术越来越普及,我们的数据集会越来越丰富,通过更多的训练,可以让机器更加的智能,更好的适应我们的生活所需。在机器学习研究前期,机器算法都比较简单。在处理较为单一的场景下,有很优秀的表现。但当涉及到较为复杂的数据衍变时,简单的算法结构的输出结果准确率极低。例如处理自然信号。在1980年,深度学习出现了。它的概念是在对\t"/item/%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/_blank"人工神经网络的过程中所提出的,它的设计出发点在于建立一个机器人脑,通过模拟人体大脑的工作过程,来研发出一整套神经网络来处理和解析获取的复杂数据,例如影、视、音等。深度学习是通过对输入信号分解并组合低层次的特征,然后用来表示目标的特征或者是类别,并将特征输出。由于各种外界因素的影响,人脸识别的准度和精度还是不能满足所有场景的需求。人脸识别在二维上的发展可能比较完善,但是我们还可以通过三维图像综合识别,也可以通过引入时间概念,通过对不同时间段的识别来确定识别对象的身份。因此,人脸识别的道路,还有很长。1.2如何实现人脸识别1.2.1基于几何特征的人脸识别几何特征主要为五官的模型差距以及五官之间的距离以及几何关系。该算法在理论上容易理解,识别的速度快,原理简单,所占用的内存相对较少,遗憾的是识别率较低,不够准确。1.2.2基于特征脸(PCA)的人脸识别方法 特征脸方法是基于K-LT所提出的人脸识别方法,K-LT全称是Karhunen-Loèvetranslation,他是一个最优正交变换,此前用于压缩图像文件。通过对N维图像进行K-LT变换,获取到一组低次分量。在其中选取重要的分量,然后扩张为线性空间并进行投影,所投影出来空间的即为我们判定是否为相同人脸的一个特征量。特征脸方法的缺点在于它需要大量的训练样本,才能保证识别精度的一个准确性,并且完全是通过图像灰度对特征进行统计的。特征脸方法也有许多不同的版本,适应在不同要求的场景下,但大体上原理都是一致的。1.2.3神经网络的人脸识别方法神经网络的特点在于输入变量类型更多,他会根据输入值的不同,通过不同的智能算法进行分析,不同于传统的识别方法一般都需要完整的人脸,但是神经网络可以通过部分人脸进行分析,并得出结论。当然,结论可能无法直接利用,却可以筛选掉一些不符合的人,从而减少我们投入的人工。同时,缺点也十分明显,需要较多的训练样本来对神经网络进行适应性学习,训练样本的数量跟识别的精准度是成正比的。1.2.4弹性图匹配的人脸识别方法弹性图匹配的思路是从生物学的角度出发,定义基本脸型,通过二维拓扑表现出来。同时,该拓扑上图像所有顶点都作为该脸图的特征量,可以用来表示该点周围的线性关系。其中弹性二字的意思是,允许图像对比时具有一定的弹性变法,这样可以克服微表情变化所带来的识别障碍。通过几何因素与灰度化特征相结合,弹性图匹配被广泛应用在流式处理的在线识别产品上。更重要的是,它并不需要大量的训练样品进行适应性训练。1.2.5LHD的人脸识别方法LHD是一群心理学家所提出的识别方法,他们认为人类对于轮廓线条的识别精准度以及速度上并不差,因此他们提出了LHD。它从灰度化的人脸图中,提取其中的轮廓线,用LDH来表示不同线条之间的距离关系。更重要的是,LDH没有建议两个线段之间的唯一对应关系,因此它可以从多个方面验证单一线段是否发生了某种可容忍的变化,用来表示对不同人脸之间的相似程度。从结果来看,LHD绕过了光照条件以及姿态变化,因此在这方面他显示了较良好的识别性能,但是由于轮廓无法体现人脸表情,因此它在表情处理方面识别效果并不如人所意。1.2.6SVM的人脸识别方法SVM中文名是支持向量机,在近几年,他也进入了智能识别领域的研究者眼中。通过支持向量机,用学习机的泛化能力换取更高的计算性能。SVM在识别过程中可以帮助我们将识别人脸分解为多个特征变量,进而根据特征变量来对人脸特征进行比对得出人脸识别的结果。通过SVM可以提高人脸识别的识别率,但同大多数识别方法一样,SVM需要大量的训练样本,而在实际应用中训练样本数量往往不足。并且SVM的训练过程耗时长,算法种类也有各有千秋,因此该方法并没有一个统一的定论。1.3本文的主要工作本文从目标检测出发,针对人脸识别进行研究,讲述了人脸识别的研究意义以及发展方向。着重介绍了深度学习对于人脸识别研究的巨大帮助,深度学习让人脸识别能够更加智能的识别,增加识别的速度以及精度。人脸识别目前已经广泛应用在企业打卡签到以及部分智能家居产品上了,但部分特殊的场景还是没有采用人脸识别,而是利用更精密的识别手段诸如瞳孔或者物理密钥这种形式。这主要是由于人脸识别的缺点比较显而易见,它存在被欺骗的可能性。同时,针对脸部丰富的表情变化以及外界环境光照等不可预见的因素,人脸识别可能会受到影响、或许是识别速度过慢或者是无法正常识别等问题。 本文简单地实现了一个动态人脸识别的签到系统,识别流程大抵是先对素材库中的人脸预处理,以包含人脸特征的二维数组这种形式缓存下来,在打开摄像头进行识别的时候提取关键帧的人脸并处理为测试数据,将其与缓存中的素材集进行对比,根据相对应的阈值找到素材库中对应的人名,保存在签到名单中。当摄像头关闭时将签到名单保存为TXT在项目根目录中。对于预处理素材库中的素材这一步,被处理过的素材会缓存在内存中,因此当素材过多时对内存资源要求较高。本文一共分为四个章节:第一章:绪论,针对人脸识别与深度学习的结合,人脸识别焕发了活力,介绍了人脸识别的多种方式及其效率以及人脸识别对科技生活的巨大帮助。第二章:拥有深度学习新特性的人脸识别与传统的人脸识别相比的优势所在。第三章:通过face_recognition实现了一个动态的人脸识别签到系统,拥有在线添加素材、实时人脸识别、导出签到人员表等功能。第四章:如何突破现在人脸识别效率与准确率无法并取的现状。第五章:结论与展望。第二章:人脸识别的新特性-深度学习2.1深度学习我们将深度学习分为“深度”“学习”两个过程来理解:学习的词义解释是指通过阅读、听讲、思考、研究、实践等途径获得知识或技能的过程。在深度学习中,其实也差不多,只是我们的输入值不再是通过听讲、思考等动作,而是换成了机器能够读取的一个个数据集。而深度的意思是,从输入值到输出值这个过程中,所要经历的各个计算过程,它们各自联系,由浅入深,最终输出我们想要的数据。而这个计算过程,有好有坏,有的效率高输出值缺不准确;有的效率低,输出值却准确。因此,我们可以形象的称这个过程为“学习策略”,好的学习策略虽然需要花费大量时间去规划,但是他的结果是足够准确的;不好的学习策略会导致错误,会让学习过程走更多的弯路。学术界尝试模拟人脑,完成一套计算机能够理解的学习策略,他被称之为“神经网络”。在人的大脑皮层中,是由一个一个神经元所组成的一个大的神经网,所以神经网络也是模仿这个概念去设计。如图中的输入值,x1、x2、x3,在经过包括输入层的四层结构之后,输出了我们所期望看到的结果,这就是一个简单的神经网络。其中L1跟l4分别是输入层和输出层,l2、l3则是隐藏的处理层,越是复杂的运算,所需要的处理层就越多,同时每个处理层所包含的参数也就越多,因此也就导致整个神经网络的规模呈现一个非线性的扩大。总结一下,深度学习就是是通过多层次的计算以及分析,通过由浅入深,获取所需要的输出值的过程。而神经网络,则是我们通过分析整个运算,所规划的由各种参数与处理层所组成的一个大型的计算网络,我们可以通过这个计算网络实现输入值到输出值的一个转变。2.2深度学习与人脸识别的二次结合传统的人脸识别模型一般为图2-2,通过对比提取到的cnn特征作为判断的依据,而当深度学习与人脸识别二次结合,人脸识别走出了另一条全新的道路。深度学习可以在通过多次训练后,训练出一种类人脑的一种思维方式,只要样本数足够多的,理论上可以像大脑一般准确分析思考。他会根据多个数据集的结果,微调每个数据对于最后结果的判定占比。如图2-2-2,图像之间的数值就是欧式空间中的距离,该数据越低,证明两张照片为同个人的可能性越高,训练的样本数越高,照片之间的距离参数也会改变,趋近于真相。图2-2-1图2-2-22.2.1VGG模型最初VGG并不是用作为图像分类识别训练的神经网络,它是由牛津大学科学工程系发布,用来探究图像分类过程中网络深度是如何影响识别的准确率以及精度的。最初的VGG-16(VGG-Very-Deep-16CNN),从全称中我们也可以看出发布者对于VGG-16的研究深度标准之高,VGG不同于传统的卷积网络模型,他的卷积层与池化层并不是一一对应的关系,规定整个模型中有5个池化层,他们分别与一部分卷积层相关联,可以从图2-2-3中看到池化层的分配关系。VGG按卷积层的数量划分命名,最少的由3个全连接层+8个卷积层组成,命名为VGG11;最多则由3个全连接层+16个卷积层组成,命名为VGG19。图2-2-3当然,作为一个曾在ImageNet上大放光彩的模型,它并没有那么简单。它的结构设计也并不是一成不变,我们完全可以用全卷积网络的概念对他进行改造,将首个全连接层改为7x7其余的全连接层改为1x1。在VGG之前,没有其他的神经网络模型能够做到在突破10层的情况下,保证效果良好,不受影响。VGG虽然突破了网络深度,却没有彻底解决网络深度所带来的一系列问题。当网络层数过多以后,同样会出现梯度性能下降等问题。总的来说VGG在刚提出的时候也是受到推崇,但是随着时间的流逝,越来越多的更加优秀的训练模型被提出,VGG也就不那么耀眼了。2.2.2优图祖母模型祖母模型提出之初,就已经决定了要成为一个百宝箱,它并不特别指代一种深层的神经网络模型,它是一个具有相同结构特征的神经网络模型的集合。在不同的应用场景下,优图祖母模型可以提供不同的神经网络模型,完成所需要实现的效果。因此,也有人叫它优图祖母模型族。目前,最流行的深层神经网络模型(图2-2-4)从结构上划分一共有三种:1.单支型(如AlexNet,VGGNet);2.双分支型(如ResNet);3.多分支型(如GoogleNet)。直线型结构设计最为简单,但当网络深度过深会出现性能爆炸或性能消退等问题,同时由于结构单一,他也缺乏改造性。局部多分支型具有较强的计算能力和较高的计算效率,但其设计也最为复杂,设计所耗费的人力物力较多。结合以上两点,祖优图最终采用双分支型这种折中的架构来构建祖母模型族。双分支型本身具有很强的学习能力,也有许多采用该结构的训练集在比赛中获奖;其次他的结构设计较为简单,前期人力消耗可控,最大的特点之一就是识别能力与神经网络的深度是一个正相关的一个关系,这意味着我们在针对不同的应用场景的多个模型进行识别训练的时候,完全可以通过控制网络深度来应对不同的需求。为了满足用户的识别需求,一般会要求获取用户最大的数据集进行训练,以保证神经网络模型的可用性。图2-2-4祖母模型在近期也在识别流程上进行了一次较大的变动:流程的变更主要是由于迁移学习的提出,迁移学习是人工智能领域所提出,用来解决不同的处理场景下训练时长过长的问题,而神经网络模型完全可以通过迁移学习,减少训练所花费的时间。简单点来讲,就是将整个训练过程分为:1、预训练(pre-train);2、精细化调整(fine-tune)。针对人脸识别场景,咱们只要将已被训练完成的优图祖母模型针对新场景上的新数据进行精细化调整,就满足新场景的一个识别需求。2.3本章总结本章介绍了VGG以及优图祖母模型两种人脸识别模型,VGG和优图祖母模型。VGG是由牛津大学科学工程系发布,用来探究图像分类过程中网络深度是如何影响识别的准确率以及精度的。在研究过程中,人们用其进行识别训练,凭借着VGG结构清晰简洁的优点,取得了不错的成效。同时,通过使用多个小型滤波器代替正常的滤波器,获得了更好的性能,这也就印证了:通过不断加深网络结构可以提升性能。但是VGG对计算资源的要求是非常高的,由于使用了大量的参数,它比其他的深度学习模型需要占用更多内存。其中,大部分参数来自全连接层。但是,根据部分实验结果的效果看来,就算去除掉所有的全连接层,他的性能也没有太大的影响,这样就显著的降低了参数的数量。优图提出的祖母模型在我看来,是未来深度学习的一个主流。优图祖母模型的核心,就是通过大量的,各式各样的样本,来训练出一个庞大的数据集集合。该集合可以用于多处使用(如人脸识别、目标检测、动态跟踪、自动驾驶等),并且近年迁移学习提出让祖母模型族成型的可能性大大提升,进行基础模型的预训练,在特定任务上对模型进行精细化调整。这样一来,大大优化了祖母模型对于特定场景训练的流程,减少训练时长,可以完成更多的训练。目前,优图祖母模型也已经投入应用中,并且取得了不错的成果,我们可以在腾讯云的AI人脸识别产品中对第三代优图祖母模型进行测试。:动态人脸识别签到系统实现3.1实现思路首先,一个可以上线的签到系统最少要有以下三个功能:1、人像素材上传2、通过摄像头设备对比素材库进行识别3、保存签到成功的人像名单其中1、3我通过Python的一些自带库实现了,核心的识别功能我选择了github上的一个开源项目FaceRecognition,通过对其进行二次开发实现了动态人脸识别签到系统实现。3.2算法实现3.2.1环境依赖 根据FaceRecognition的开发文档,该项目的运行环境支持linux/树莓派,但是我的设备系统环境为win10,通过查找资料后,我找到了一个可以在win10上运行的安装方式:1、安装Anaconda2、通过Anaconda安装CMake3、安装dilb4、成功安装facerecognition3.2.2实现普通的人脸识别 想实现人脸识别,首先要解决的就是如何找到画面上的所有人脸。在人脸识别的初期,这个问题是第一个被提出的,一时间有出现了许多识别的算法。 根据不同的知识体系出发,大抵上可以分为人工智能、神经网络、图像处理、模式识别等多种识别方法,虽然出发点并不一致,但最终都是采用了特征脸方法来实现人脸识别。 特征脸方法利用分析法,将人脸图像分解并提取特征样本。它实际上就相当于将人脸化为一组组向量,然后将提取的特征样本与参考库中所提取的特征样本进行比对,根据匹配的特征样本数取最高来找到识别度最高的人脸。由于特征样本在返回时,还具有人脸的一定特征,因此我们也叫特征样本为“特征脸”。图3-2-1 从图3-2-1中我们可以看到,我们可以将一副人脸图像分解成一组权值向量,然后利用向量为单位找到距离最小对应的人脸图像的身份作为测试人脸图像的身份。这如同派出所使用的素描画嫌疑人画像的过程,以一个基础脸型为出发点,然后画出不同的眼睛、嘴巴等五官给目击者确认,逐渐拼凑出一张疑似嫌疑人的一张图像。电脑实现的过程大抵是一致的,只是他的五官是以特征样本的抽象形式体现的。 而在faceRecognition中,通过load_image_file()函数,可以把实现图片导入,而后只需要把导入的图片数据传入face_locations()识别图片中的人脸的位置,该函数的返回值为一个列表,其包含多个元组,代表着人脸的位置信息。接下来,我将展示演示所用到的图片素材:素材3.2.1实现的代码如下:importface_recognition

image=face_recognition.load_image_file("素材3.2.1.jpg")

face_locations=face_recognition.face_locations(image)

print(face_locations)让我们来看下执行的结果: 我们可以观察到,执行结果返回了六个元组,每个元组中的数据代表的正是每张脸的位置信息,四个像素级的位置点把人脸圈起来了。这样一样,我们也就成功的找到了所有的人脸。 接下来的问题,就在于如何进行人脸比对。而人脸识别的实现则是依赖“弹性图匹配”这种方法。弹性图匹配的思路是忽略人与人之间五官特征的角度和长度,更多的将关注点放在图像变换后的不变性,所以它还有另一个名字“橡皮泥几何学”。它以一个人脸拓扑概括所有的人脸,根据这个拓扑结构划分基准点。图3-2-2 每次进行识别,我们需要对识别图像人脸进行拓扑建模,获取特征向量。同时,读取素材库中已有的人脸所对应的特征向量进行比对,找到相似程度最高的一张图。然后以此图建立拓扑,进行更多特征向量的比对,进而找到测试人脸的身份。 在faceRecognition中,只需要将需要对比的两张照片所对应的编码作为参数传入face_pare_faces(),该函数会返回值的类型为boolean,该值为TRUE则证明大概率为同个人,为FALSE则大概率不是同一个人。该函数的判定阙值可以在传入编码时使用tolerance关键字加上阙值限制作为第三个参数进行修改,目前合理的阙值大概为0.73左右,可以尽可能的做出准确的判断。接下来,我展示下演示所用的素材:实现的代码如下:importface_recognition

known_image=face_recognition.load_image_file("素材3.2.2.jpg")known_image=face_recognition.load_image_file("unknown.jpg")

unknown2_image=face_recognition.load_image_file("unknown2.jpg")

lhf_encoding=face_recognition.face_encodings(known_image)[0]

unknown_encoding=face_recognition.face_encodings(unknown_image)[0]

unknown2_encoding=face_recognition.face_encodings(unknown2_image)[0]

results=face_pare_faces([lhf_encoding],unknown_encoding)

results2=face_pare_faces([lhf_encoding],unknown2_encoding)

print(results)

print(results2)执行的结果如下:我们可以看到,第一次对比的结果集为TRUE素材的选取一张为我高二时的相片、一张为我大三时的照片,经过五年时间的成长,依旧可以识别成功;而第二次对比的结果集为FALSE,素材的选取为明星吴彦祖,对比的结果也是正确的。 至此,已经成功实现了静态的人脸检测、识别的功能。3.3完善动态人脸识别签到系统3.3.1从视频流中取帧进行识别 在这个方面,我选用了opencv处理视频流流,之后通过获取视频流的每一帧通过3.2中的人脸识别相关代码进行识别,在原帧中圈出检测到的人脸并且在框中标出识别的结果,具体实现的代码如下:defaction():

video_capture=cv2.VideoCapture(0)

#引用素材库生成流

addpeople.Reading()

addpeople.change()#测试根据list生成流

known_face_encodings=addpeople.known_face_encodings#赋值

known_face_names=addpeople.known_face_names#赋值

#Initializesomevariables

face_locations=[]

face_encodings=[]

face_names=[]

process_this_frame=True

s=set()

arrivename=[]

whileTrue:

#Grabasingleframeofvideo

ret,frame=video_capture.read()

#Resizeframeofvideoto1/4sizeforfasterfacerecognitionprocessing

small_frame=cv2.resize(frame,(0,0),fx=0.25,fy=0.25)

#ConverttheimagefromBGRcolor(whichOpenCVuses)toRGBcolor(whichface_recognitionuses)

rgb_small_frame=small_frame[:,:,::-1]

#Onlyprocesseveryotherframeofvideotosavetime

ifprocess_this_frame:

#Findallthefacesandfaceencodingsinthecurrentframeofvideo

face_locations=face_recognition.face_locations(rgb_small_frame)

face_encodings=face_recognition.face_encodings(rgb_small_frame,face_locations)

face_names=[]

forface_encodinginface_encodings:

#阙值设置在这里

matches=face_pare_faces(known_face_encodings,face_encoding,tolerance=0.75)

name="Unknown"

ifTrueinmatches:

first_match_index=matches.index(True)

name=known_face_names[first_match_index]

face_names.append(name)

process_this_frame=notprocess_this_frame

#Displaytheresults

for(top,right,bottom,left),nameinzip(face_locations,face_names):

#Scalebackupfacelocationssincetheframewedetectedinwasscaledto1/4size

top*=4

right*=4

bottom*=4

left*=4

#Listidentifiedq

ifname!="Unknown":

s.add(name)

arrivename.append(name)

else:

pass

#Drawaboxaroundtheface

cv2.rectangle(frame,(left,top),(right,bottom),(0,0,255),2)

#Drawalabelwithanamebelowtheface

cv2.rectangle(frame,(left,bottom-35),(right,bottom),(0,0,255),cv2.FILLED)

font=cv2.FONT_HERSHEY_DUPLEX

cv2.putText(frame,name,(left+6,bottom-6),font,1.0,(255,255,255),1)

#Displaytheresultingimage

cv2.imshow('Video',frame)

#按Q推出ifcv2.waitKey(1)&0xFF==ord('q'):

print(s)

savelist.save(arrivename)

break

#Releasehandletothewebcam

video_capture.release()

cv2.destroyAllWindows()实现的效果如下:其中lhf为我上传的图片名,通过扫描素材库文件名获取。3.3.2实现上传素材、导出签到表通过selectPath读取素材的路径之后通过提交按钮对原素材进行素材提交,相关代码如下:defsubmit():

str=path.get()

addr2=str.replace('/',r'\\')

print(addr2)

f=open(addr2,'rb')

f_str=base64.b64encode(f.read())

f.close()

str=f_str

file_str=open('Materialbank\\%s.jpg'%TEXT.get(),'wb')

file_str.write(base64.b64decode(str))

file_str.close()将识别的列表进行去重之后保存在TXT文件中,实现了签到表的导出,相关代码如下:defsave(arrivename):

arrivename2=list(set(arrivename))

data=open("text.txt",'w+')

print(arrivename2,file=data)

data.close()3.3.3使用演示 运行项目,我们可以看到使用的UI界面(图3-3-1),填写完上传的资料后,可以通过路径选择按钮对想要上传的原图像进行上传(图3-3-2),上传的新文件的名字为资料的名字,后缀为JPG格式,完成素材上传后,点击打开摄像头后即可开始签到过程,需在摄像头前等待1~2s后在人像脸上标注出名字后(图3-3-3),完成签到。等到所有成员完成签到后,按“Q”退出摄像头界面后,系统会将成功签到的人员列表存放在根目录中,名字为text.txt(图3-3-4),至此整个程序的演示结束。图3-3-1图3-3-2图3-3-3图3-3-43.4本章小结本章主要展示了我在开发过程中的思路以及所利用的一些demo测试,并最终实现了一个简单的人脸识别项目。程序是利用python进行开发,使用了facerecognition项目。从最初的环境搭建到整个开发过程中,所遇到的一些问题以及解决方案都在本章中有体现。在视屏处理方面,我使用的是opencv,利用截取关键帧来实现从视屏流到人脸截图这种形式的转变,最终利用人脸图进行识别并返回结果,标出人脸身份。整个流程思路好还是比较清晰的,最终实现的效果比较简陋,但基础的功能也还可以。由于素材库缓存的原因,该程序对内存资源有一定的要求,因此如果有复现的需求,需要保证内存在8G,并且素材库素材不可过多;如果有大型应用场景,建议采用分布式的架构,将素材分布于不同的节点上,这样既能保证性能又能满足使用的需求。目前,市面上的大型IT企业都有自己的人脸识别产品,并且已经投入使用了。我的程序无法与他们相提并论,但是对于初学者来说,可以经由这个项目入手,对于理解人脸识别或者是深入学习更多的物品识别等会有一定的好处。开发所利用的Demo以及项目使用的代码在本章中都有展示,UI界面较简陋,可以自行改进。第四章:总结与展望4.1论文总结人脸识别技术是一种生物识别技术,自二十多年前的科幻剧中就有了它的出现,相对于其他生物识别技术,他的效果更直观、使用更简便,并且相对于物理密钥或者是电子密钥来说,他不具备有被盗窃的可能性。但人脸识别技术在提出之初也被种种问题所环绕:1、相似的人脸是否会解锁;2、拿着图片解锁;3、会不会因为化妆或者年龄变大而无法解锁等。这些问题截至目前,也基本上已经解决了。因此,现阶段的研究方向更多的是从两方面出发:1、提高识别的精准度;2、在复杂环境下保证识别可行性。目前的检测方法有许多,但是整体的安全等级还是不足以满足特定场景的需求,因此我们需要将更多的识别因素加入到人脸识别中,如:时间,空间等。更多的因素的加入会导致资源占用更高,但是随着云计算的发展,计算资源并不是一个难以解决的问题,通过深度学习模型来训练一套安全系数更高的人脸识别体系。我们的人脸识别系统会越来越智能,我们可以通过人脸识别完成更多的身份管理,在未来的世界中,我们不再需要一个身份证,脸就是我们的通行证。本文介绍了VGG模型,现在我们下载VGGface模型中,已经具备有一个较为成熟的识别体系了,在经过特定图片集的训练后,其的识别准确率也不低。但是我们在使用时,还是应该根据自己的使用环境,对其进行适应性训练,这样可以满足我们更高的精准度需求。本文还介绍了优图祖母模型族的宏图,当前优图祖母模型已经第三代了,满足大多数场景下的应用了,我们可以在腾讯云的AI栏目里测试祖母模型,感受百宝袋的各种智能算法。本文使用了一个简单的开源项目face_recognition,实现了一个动态识别人脸的签到系统,通过摄像头输入视频流,以帧为单位与素材库中的图片进行对比,当匹配几率高于0.75时,则系统认证为同一个人。在素材库不多时,该系统在一定程度上是可信的。但是一旦素材库过多,就会导致识别结果可信度降低。因此,在人脸识别的道路上,该项目还做不真正的普及使用,但是在机器学习的帮助下,我相信有朝一日可以真正的实现智能化识别人脸。4.2展望本文通过探讨传统目标检测和基于深度学习的人脸识别算法展开,在开发过程中学习到了不少的东西,但程序还是存在不少的缺点,为了解决这些问题,今后将从以下几个方面对程序进行改进:1、寻找和替换更合理的算法,改善识别的精准度以及速度。 2、尝试替换视频流的输入格式,以2S为间隔,同时将在该区间内的所有帧与素材库进行对比,当所有对比的结果加起来达到某个阈值时,才认为两者匹配。这样一来,可以大大加强识别的可信度。3、设计合理的UI界面,提升用户的视觉效果体验。随着云计算等计算平台的发展,计算资源已经不再成为难题,未来会有更多优秀的识别算法被提出,一“脸”行天下,就在不远的未来。参考文献基于深度学习的人脸识别技术研究钱程基于神经网络学习的统计机器翻译研究杨南基于局部特征和进化算法的人脸识别李根优图祖母模型的「进化」/jjjndk1314/article/details/80579552VGG卷积神经网络模型解析/gloomyfish/2105427计算机到底是怎么识别人脸的腾讯科技致谢四年前,我对大学迷茫而恐惧;四年后,我如红日初升,意气风发;四年前,觉得求学异乡是离亲别友;四年后,我和志同道合的伙伴谈笑风生;四年前,我认为小安是福、随遇而安;四年后,我身似山河,敢问天地试锋芒;斗转星移,大学四年似乎改变了一切。唯一不变的,是我对“改变”的追求。一谢师长,言传身教。大学四年,学的东西杂且多,虽无法做到样样精通,时至今日也敢于出口说自己大都有所涉猎。对我影响最大的是赵元成老师,是他引领我接触到云计算这个行业,并在我蹒跚学步的过程中引领我前行。时至今日,我也决定在这个行业继续往下走。恩师于我,授我渔鱼,高山景行,师之范者。二谢亲友,予我欢情。在我最不懂事的时候,家人的鼓励让我我成为一名大学生。我曾以为大学也不过是求学的四年,与六年小学三年初中三年高中并无大区别。但是,经历过才知道,大学四年求学并不是最重要的,作为与社会接壤的最后一站,大学教会了我更多。我在大学有过电脑维修工作室,为校友上门维修;也曾为部署云计算环境熬夜到四点;更重要的是大学让我间接的接触到了一些实际的项目,为我踏入社会做铺垫。这一切的一切,都启于我父母、姐姐们的鼓励以及支持。至亲恩情,大爱无疆。同窗志远,自有使命。时光荏苒,四年已过。时间会带走一切,时间也会赋予一切,愿我与母校以及亲爱的老师们青山不改,绿水长流。

附录:face_recognition主要模块详解1.1face_recognition.api.batch_face_locations(imagesnumber_of_times_to_upsample=1,batch_size=128)使用cnn人脸检测器返回图像中人脸边界框的2d数组。如果您使用的是GPU,由于GPU可以一次处理一批图像,因此可以更快地获得结果。如果您不使用GPU,则不需要此功能。参数: images–图片列表(每个图片为一个numpy数组)number_of_times_to_upsample–对图像进行脸部上采样的次数。数字越大,面孔越小。batch_size–每个GPU处理批次中要包含多少个图像。返回值: 以css(上,右,下,左)顺序找到的脸部位置的元组列表1.2face_pare_faces(known_face_encodings,face_encoding_to_check,tolerance=0.6)将面部编码列表与候选编码进行比较,以查看它们是否匹配。参数: known_face_encodings–已知面部编码列表face_encoding_to_check–与列表进行比较的单一面部编码容差–认为相匹配的两张脸之间的距离。越低越严格。0.6是典型的最佳性能。返回值: 真/假值列表,指示哪些known_face_encodings与面部编码匹配以进行检查1.3face_recognition.api.face_distance(face_encodings,face_to_compare)给定面部编码列表,将其与已知的面部编码进行比较,并获得每个比较面部的欧式距离。距离告诉您面孔的相似程度。参数: face_encodings–要比较的人脸编码列表face_to_compare–要比较的人脸编码返回值: 一个numpyndarray,每个面的距离与“faces”数组的顺序相同1.4face_recognition.api.face_encodings(face_image,known_face_locations=None,num_jitters=1)给定图像,返回图像中每个面部的128维面部编码。参数: face_image–包含一个或多个面部的图像known_face_locations–可选-每个面的边界框(如果您已经知道的话)。num_jitters–计算编码时对面部重新采样的次数。越高越准确,但越慢(即100慢100倍)返回值: 128维面部编码列表(图像中的每个面部一个)1.5face_recognition.api.face_locations(img,number_of_times_to_upsample=1,model='hog')返回图像中人脸边界框的数组参数: img–图片(以numpy数组形式)number_of_times_to_upsample–对图像进行脸部上采样的次数。数字越大,面孔越小。模型–要使用的人脸检测模型。“hog”精度较低,但在CPU上更快。“cnn”是经过GPU/CUDA加速(如果可用)的更准确的深度学习模型。默认值为“猪”。返回值: 以css(上,右,下,左)顺序找到的脸部位置的元组列表1.6face_recognition.api.load_image_file(file,mode='RGB')将图像文件(.jpg,.png等)加载到numpy数组中参数: file–图像文件名或要加载的文件对象mode–将图像转换成的格式。仅支持“RGB”(8位RGB,3通道)和“L”(黑白)。返回值: 图像内容为numpy数组

怎样提高电脑系统运行速度WindowsXP的启动速度比Windows2000要快30%左右,但相对于Windows98仍然要慢了不少,不过,我们可以通过优化设置,来大大提高WindowsXP的启动速度。加快系统启动速度主要有以下方法:尽量减少系统在启动时加载的程序与服务;对磁盘及CPU等硬件进行优化设置;修改默认设置,减少启动等待时间等。这些方法大部分既可减少系统启动的时间,又可以节省系统资源,加快电脑运行速度。1.加快系统启动速度WindowsXP的启动速度比Windows2000要快30%左右,但相对于Windows98仍然要慢了不少,不过,我们可以通过优化设置,来大大提高WindowsXP的启动速度。加快系统启动速度主要有以下方法:尽量减少系统在启动时加载的程序与服务;对磁盘及CPU等硬件进行优化设置;修改默认设置,减少启动等待时间等。这些方法大部分既可减少系统启动的时间,又可以节省系统资源,加快电脑运行速度。(1)MsconfigWindowsXP的启动速度在系统安装初期还比较快,但随着安装的软件不断增多,系统的启动速度会越来越慢,这是由于许多软件把自己加在了启动程序中,这样开机即需运行,大大降低了启动速度,而且也占用了大量的系统资源。对于这样一些程序,我们可以通过系统配置实用程序Msconfig将它们从启动组中排除出去。选择“开始”菜单中的“运行”命令,在“运行”对话框中键入“Msconfig”,回车后会弹出“系统配置实用程序”对话框,选择其中的“启动”选项卡(如图1),该选项卡中列出了系统启动时加载的项目及来源,仔细查看每个项目是否需要自动加载,否则清除项目前的复选框,加载的项目越少,启动的速度就越快。设置完成后需要重新启动方能生效。(2)BootvisBootvis是微软提供的一个启动优化工具,可提高WindowsXP的启动速度。用BootVis提升WindowsXP的启动速度必须按照正确的顺序进行操作,否则将不会起到提速的效果。其正确的操作方法如下:启动Bootvis,从其主窗口(如图2)中选择“工具”菜单下的“选项”命令,在“符号路径”处键入Bootvis的安装路径,如“C:\ProgramFiles\Bootvis”,单击“保存”退出。从“跟踪”菜单中选择“下次引导”命令,会弹出“重复跟踪”对话框,单击“确定”按钮,BootVis将引导WindowsXP重新启动,默认的重新启动时间是10秒。系统重新启动后,BootVis自动开始运行并记录启动进程,生成启动进程的相关BIN文件,并把这个记录文件自动命名为TRACE_BOOT_1_1。程序记录完启动进程文件后,会重新启动BootVis主界面,在“文件”菜单中选择刚刚生成的启动进程文件“TRACE_BOOT_1_1”。窗口中即会出现“CPU>使用”、“磁盘I/O”、“磁盘使用”、“驱动程序延迟”等几项具体图例供我们分析,不过最好还是让BootVis程序来自动进行分析:从“跟踪”菜单中选择“系统优化”命令,程序会再次重新启动计算机,并分析启动进程文件,从而使计算机启动得更快。(3)禁用多余的服务WindowsXP在启动时会有众多程序或服务被调入到系统的内存中,它们往往用来控制Windows系统的硬件设备、内存、文件管理或者其他重要的系统功能。但这些服务有很多对我们用途不大甚至根本没有用,它们的存在会占用内存和系统资源,所以应该将它们禁用,这样最多可以节省70MB的内存空间,系统速度自然也会有很大的提高。选择“开始”菜单中的“运行”命令,在“运行”对话框键入“services.msc”后回车,即可打开“服务”窗口。窗口的服务列表中列出了系统提供的所有服务的名称、状态及启动类型。要修改某个服务,可从列表双击它,会弹出它的属性对话框(如图3),你可从“常规”选项卡对服务进行修改,通过单击“启动”、“停止”、“暂停”、“恢复”四个按钮来修改服务的状态,并可从“启动类型”下拉列表中修改启动类型,启动类型有“自动”、“手动”、“已禁用”三种。如果要禁止某个服务在启动自动加载,可将其启动类型改为“已禁用”。WindowsXP提供的所有服务有36个默认是自动启动的,实际上,其中只有8个是必须保留的(见下表),其他的则可根据自己的需要进行设置,每种服务的作用在软件中有提示。4)修改注册表来减少预读取,减少进度条等待时间WindowsXP在启动过程中会出现一个进度条,我们可以通过修改注册表,让进度条只跑一圈就进入登录画面。选择“开始”菜单中的“运行”命令,在“运行”对话框键入“regedit”命令后回车,即可启动注册表编辑器,在注册表中找HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SessionManager\MemoryManagement\PrefetchParameters,选择其下的EnablePrefetcher键,把它的键值改为“1”即可。(5)减少开机磁盘扫描等待时间当Windows日志中记录有非正常关机、死机引起的重新启动,系统就会自动在启动的时候运行磁盘扫描程序。在默认情况下,扫描每个分区前会等待10秒钟,如果每个分区都要等上10秒才能开始进行扫描,再加上扫描本身需要的时间,会耗费相当长的时间才能完成启动过程。对于这种情况我们可以设置取消磁盘扫描的等待时间,甚至禁止对某个磁盘分区进行扫描。选择“开始→运行”,在运行对话框中键入“chkntfs/t:0”,即可将磁盘扫描等待时间设置为0;如果要在计算机启动时忽略扫描某个分区,比如C盘,可以输入“chkntfs/xc:”命令;如果要恢复对C盘的扫描,可使用“chkntfs/dc:”命令,即可还原所有chkntfs默认设置,除了自动文件检查的倒计时之外。2.提高系统运行速度提升系统运行速度的思路与加快启动的速度类似:尽量优化软硬件设置,减轻系统负担。以下是一些常用的优化手段。(1)设置处理器二级缓存容量WindowsXP无法自动检测处理器的二级缓存容量,需要我们自己在注册表中手动设置,首先打开注册表,找到“HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SessionManager\MemoryManagement\”,选择其下的“SecondLevelDataCache”,根据自己所用的处理器设置即可,例如PIIICoppermine/P4Willamette是“256”,AthlonXP是“384”,P4Northwood是“512”。(2)提升系统缓存同样也是在“HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SessionManager\MemoryManagement\”位置,把其下的“LargeSystemCache”键值从0改为1,WindowsXP就会把除了4M之外的系统内存全部分配到文件系统缓存中,这样XP的内核能够在内存中运行,大大提高系统速度。通常来说,该优化会使系统性能得到相当的提升,但也有可能会使某些应用程序性能降低。需要注意的是必须有256M以上的内存,激活LargeSystemCache才可起到正面的作用,否则不要轻易改动它。(3)改进输入/输出性能这个优化能够提升系统进行大容量文件传输时的性能,不过这只对服务器用户才有实在意义。我们可在中新建一个DWORD(双字节值)键值,命名为IOPageLockLimit。一般情况下把数据设置8~16MB之间性能最好,要记住这个值是用字节来计算的,例如你要分配10MB的话,就是10×?1024×1024,也就是10485760。这里的优化也需要你的机器拥有大于256M的内存。(4)禁用内存页面调度在正常情况下,XP会把内存中的片断写入硬盘,我们可以阻止它这样做,让数据保留在内存中,从而提升系统性能。在注册表中找到“HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SessionManager\MemoryManagement\”下的“DisablePagingExecutive”键,把它的值从0改为1即可禁止内存页面调度了。(5)关闭自动重新启动功能当WindowsXP遇到严重问题时便会突然重新开机,可从注册表将此功能取消。打开注册表编辑器,找到“HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CrashControl\”将AutoReboot键的Dword值更改为0,重新启动后设置即可生效。(6)改变视觉效果WindowsXP在默认情况下启用了几乎所有的视觉效果,如淡入淡出、在菜单下显示阴影。这些视觉效果虽然漂亮,但对系统性能会有一定的影响,有时甚至造成应用软件在运行时出现停顿。一般情况下建议少用或者取消这些视觉效果。选择桌面上“我的电脑”图标,单击鼠标右键,在弹出的快捷菜单中选择“属性”命令,打开“系统属性”对话框。选择“高级”选项卡,在其中的“性能”栏中单击“设置”按钮,会弹出“性能选项”对话框(如图4),可选择“调整为最佳性能”单选框来关闭所有的视觉效果,也可选择“自定义”然后选择自己需要的视觉效果。(7)合理设置页面虚拟内存同样也是在“性能选项”对话框中,选择“高级”选项卡,在其中的“虚拟内存”栏中单击“更改”按钮,接下来选择虚拟内存为“自定义大小”,然后设置其数值。一般情况下,把虚拟设为不小于256M,不大于382M比较合适,而且最大值和最小值最好一样。(8)修改外观方案WindowsXP默认的外观方案虽然漂亮,但对系统资源的占用也多,可将其改为经典外观以获得更好的性能。在桌面空白位置单击鼠标右键,从弹出的快捷菜单中选择“属性”命令,会打开“显示属性”对话框,在“主题”选项卡选择主题为“Windows经典”,即可将外观修改为更为经济的Windows经典外观。(9)取消XP对ZIP支持WindowsXP在默认情况下打开了对zip文件支持,这要占用一定的系统资源,可选择“开始→运行”,在“运行”对话框中键入“regsvr32/uzipfldr.dll”,回车确认即可取消XP对ZIP解压缩的支持,从而节省系统资源。(10)关闭Dr.WatsonDr.Watson是WindowsXP的一个崩溃分析工具,它会在应用程序崩溃的时候自动弹出,并且在默认情况下,它会将与出错有关的内存保存为DUMP文件以供程序员分析。不过,记录DUMP文件对普通用户则毫无帮助,反而会带来很大的不便:由于Dr.Watson在应用程序崩溃时会对内存进行DUMP记录,将出现长时间硬盘读写操作,要很长一断时间程序才能关闭,并且DUMP文件还会占用大量磁盘空间。要关闭Dr.Watson可打开注册表编辑器,找到“HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\AeDebug”分支,双击其下的Auto键值名称,将其“数值数据”改为0,最后按F5刷新使设置生效,这样就取消它的运行了。同样,我们可以把所有具备调试功能的选项取消,比如蓝屏时出现的memory.dmp,可在“系统属性”对话框中选择“高级”选项卡,单击“启动和故障恢复”栏中的“设置”按钮,并在弹出的“启动和故障恢复”对话框中选择“写入调试信息”为“无”(如图5)。(11)启动硬盘/光驱DMA模式打开“系统属性”对话框,选择“硬件”选择卡中的“设备管理器”按钮,打开“设备管理器”窗口,在设备列表中选择“IDEATA/ATAPI控制器”,双击“主要IDE通道”或“次要IDE通过”,在其属性对话框的“高级设置”选项卡中检查DMA模式是否已启动,一般来说如果设备支持,系统就会自动打开DMA功能,如果没有打开可将“传输模式”设为“DMA(若可用)”。(12)关掉不用的设备WindowsXP总是尽可能为电脑的所有设备安装驱动程序并进行管理,这不仅会减慢系统启动的速度,同时也造成了系统资源的大量占用。针对这一情况,你可在设备管理器中,将PCMCIA卡、调制解调器、红外线设备、打印机端口(LPT1)或者串口(COM1)等不常用的设备停用,方法是双击要停用的设备,在其属性对话框中的“常规”选项卡中选择“不要使用这个设备(停用)”。在重新启动设置即可生效,当需要使用这些设备时再从设备管理器中启用它们。(13)关闭错误报告当应用程序出错时,会弹出发送错误报告的窗口,其实这样的错误报告对普通用户而言几乎没有任何意义,关闭它是明智的选择。在“系统属性”对话框中选择“高级”选项卡,单击“错误报告”按钮,在弹出的“错误汇报”对话框中,选择“禁用错误汇报”单选项,最后单击“确定”即可。另外我们也可以从组策略中关闭错误报告:从“运行”中键入“gpedit.msc”,运行“组策略编辑器”,展开“计算机配置→管理模板→系统→错误报告功能”,双击右边设置栏中的“报告错误”,在弹出的“属性”对话框中选择“已禁用”单选框即可将“报告错误”禁用。(14)关闭自动更新“自动更新”功能对许多WindowsXP用户而言并不是必需的,可将其关闭以节省系统资源。在“我的电脑”上单击鼠标右键,从快捷菜单中选择“属性”命令,选择“系统属性”对话框中的“自动更新”选项卡,勾选“关闭自动更新,我将手动更新计算机”单选框,单击“确定”按钮即可关闭自动更新功能。如果在“服务”已经将“AutomaticUpdates”服务关闭,“系统属性”对话框中的“自动更新”选项卡就不能进行任何设置了。(15)去掉菜单延迟去掉菜单弹出时的延迟,可以在一定程度上加快XP。要修改的键值位置在“HKEY_CURRENT_USER\ControlPanel\Desktop”。修改其下的“MenuShowDelay”键,把默认的400修改为0,按F5刷新注册表即可生效。(16)清除预读文件WindowsXP的预读设置虽然可以提高系统速度,但是使用一段时间后,预读文件夹里的文件数量会变得相当庞大,导致系统搜索花费的时间变长。而且有些应用程序会产生死链接文件,更加重了系统搜索的负担。所以,应该定期删除这些预读文件。预计文件存放在WindowsXP系统文件夹的Prefetch文件夹中,该文件夹下的所有文件均可删除。(17)关闭自动播放功能在WindowsXP中,当往光驱中放入光盘或将USB硬盘接上电脑时,系统都会自动将光驱或USB硬盘扫描一遍,同时提示你是否播放里面的图片、视频、音乐等文件,如果是拥有多个分区的大容量的USB硬盘,扫描会耗费很长的时间,而且你得多次手动关闭提示窗口,非常麻烦。这种情况下我们可以将WindowsXP的自动播放功能关闭。运行“组策略”程序。在组策略窗口左边栏中,打开“计算机配置”,选择“管理模板”下的“系统”,然后在右边的配置栏中找到“关闭自动播放”并双击它,会弹出“关闭自动播放属性”对话框。在其中“设置”选项卡中选择“已启用”,“关闭自动播放”下拉列表中选择“所有驱动器”(如图6)。这样以后就不用担心WindowsXP的“自动播放”功能带来的麻烦了。如果你只是想禁止系统扫描某个驱动器(如USB硬盘)上的文件,可采用下面的方法。先连上你的USB硬盘,让系统将它识别出来。然后打开“我的电脑”,选择USB硬盘上的某个分区,按鼠标右键,会弹出磁盘属性窗口,选取“自动播放”选项卡,将所有内容的类型都选择为不执行操作。如果USB硬盘有多个分区,对所有分区都进行同样的操作,这样当你将USB驱动器拔掉再重新接上时,系统会将USB硬盘识别出来,而不会反复问你是否播放USB硬盘中的文件了。3.加快关机速度WindowsXP的关机速度要慢于启动速度,特别有些任务还需要手工结束,更加延缓了关机速度。因此,要加快关机速度,首先要开启WindowsXP的自动结束任务功能。具体步骤是:从注册表中找到“HKEY_CURRENT_USER\ControlPanel\Desktop”,把“AutoEndTasks”的键值设置为1即可。然后再修改“HungAppTimeout”为“4000(或更小)”(预设为5000),该键值同样也在“HKEY_CURRENT_USER\ControlPanel\Desktop”下;最后一步再找到“HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\”,同样把WaitToKillServiceTimeout设置为“4000”;通过这样设置后的关机速度明显要加快了。够全面吧~~◆二、硬件优化设置◆1、关掉不用的设备

在设备管理器中,将PCMCIA卡、调制解调器、红外线设备、打印机端口(LPT1)或者串口(COM1)等不常用的设备停用,在要停用设备属性对话框中的“常规”选项卡中选择“不要使用这个设备(停用)”。当需要使用这些设备时再从设备管理器中启用它们。◆2、内存性能优化

WindowsXP中有几个选项可以优化内存性能,它们全都在注册表下面位置:HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSession

ManagerMemory

Management

1)禁用内存页面调度(Paging

Executive)

XP会把内存中的片断写入硬盘,我们可以阻止它这样做,让数据保留在内存中,从而提升系统性能。256M以上内存才使用这个设置。把“DisablePagingExecutive”的值从0改为1就可以禁止内存页面调度了。

2)提升系统缓存

必须有256M以上的内存,才激活它。把LargeSystemCache键值从0改为1,一般来说,这项优化会使系统性能得到相当的提升,但也有可能会使某些应用程序性能降低。

3)输入/输出性能

内存大于256M才更改这里的值,这个优化只对server(服务器)用户才有实在意义,它能够提升系统进行大容量文件传输时的性能。建一个DWORD(双字节值)键值,命名为IOPageLockLimit,数值设8M-16M字节之间性能最好,具体设什么值,可试试哪个值可获得最佳性能。这个值是用字节来计算的,比如你要分配12M,就是12×1024×1024,也就是12582912。◆3、启动硬盘/光驱DMA模式

“系统属性”-“硬件”-“设备管理器”,在设备列表中选择“IDE

ATA/ATAPI控制器”,双击“主要

IDE

通道”或“次要

IDE

通道”,在其属性对话框的“高级设置”选项卡中检查DMA模式是否已启动,一般来说如果设备支持,系统就会自动打开DMA功能,如果没有打开可将“传输模式”设为“DMA(若可用)”(在BIOS里也应该要先设为

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论