《AI硬件与Pyhthon编程实践》08计算机视觉与人脸检测写字字帖_第1页
《AI硬件与Pyhthon编程实践》08计算机视觉与人脸检测写字字帖_第2页
《AI硬件与Pyhthon编程实践》08计算机视觉与人脸检测写字字帖_第3页
《AI硬件与Pyhthon编程实践》08计算机视觉与人脸检测写字字帖_第4页
《AI硬件与Pyhthon编程实践》08计算机视觉与人脸检测写字字帖_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

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

文档简介

计算机视觉与人脸检测人工智能开源硬件与python编程实践情境导入新款的相机都采用了智能技术,能够自动检测到取景框内的人脸,自动往人脸对焦,拍下高质量的照片。智能手机的相机功能也都采用了自动跟踪人脸、自动对焦的技术,辅助人们拍下美好画面。人脸检测与自动跟踪技术在校园出入控制、智慧教室等系统中均有应用,也是进一步开展人脸识别的基础。任务与目标了解人脸检测技术的基本原理、Haar相关算法和应用框架;掌握运用人工智能开源硬件设计人脸检测应用的方法,提升Python语言的编程能力;通过Python编程,调用HaarCascade算法,实现人脸检测功能;针对生活应用场景,进一步开展创意设计,设计针对校园安防等需求的具有实用性的人脸检测应用系统。知识拓展:聚类与分类聚类是将数据对象集合划分成相似的对象类的过程,使得同一个类中的对象之间具有较高的相似性,而不同类中的对象具有较高的相异性。分类则是按照某种标准给对象贴标签,再根据标签来区分归类。也就是说,分类情况下事先定义好了类别,类别数不再变化。知识拓展:区别与联系分类器需要事先由包含人工标注类别的训练数据训练得到,属于有监督的学习。聚类则没有事先预定的类别,类别数不确定。聚类不需要人工标注和预先训练分类器,类别在聚类过程中自动生成,是一种无监督学习。知识拓展:Haar-like特征Haar-like特征一种常用的图像特征描述算子,在机器视觉领域应用很广;分为边缘特征、线性特征、中心特征和对角线特征等,组合成特征模板。特征模板内只有白色和黑色两种矩形,并定义该模板的特征值为白色矩形像素和减去黑色矩形像素和。知识拓展:人脸Haar-like特征对于人脸图像,脸部的一些特征能由矩形特征来简单描述,如:眼睛要比脸颊颜色要深,鼻梁两侧比鼻梁颜色要深,嘴巴比周围颜色要深等。在人脸检测应用中,将任意一个矩形模板移动到人脸区域上,计算将白色区域的像素和减去黑色区域的像素和,得到的值就是属于人脸的特征值。通过Haar-like特征的计算实现了人脸特征的量化,以便区分人脸和非人脸。知识拓展:Haar-like特征计算方法对于一个灰度图像I而言,其积分图也是一张与I尺寸相同的图,只不过该图上任意一点(x,y)的值是指从灰度图像I的左上角与当前点所围成的矩形区域内所有像素点灰度值之和。当把扫描图像一遍,到达图像右下角像素时,积分图像就构造好了。积分图构造好之后,图像中任何矩阵区域的像素累加和都可以通过简单运算得到。只遍历一次图像就可以求出图像中所有区域像素和的快速算法,大大的提高了图像特征值计算的效率。知识拓展:弱学习与强学习弱学习就是指一个学习算法对一组概念的识别率只比随机识别好一点;强学习指一个学习算法对一组概率的识别率很高。研究工作表明,只要有足够的数据,弱学习算法就能通过集成的方式生成任意高精度的强学习方法。知识拓展:Adaboost算法初步各种Haar特征,每一个小黑白块就是一种规则,也是一种特征,也是一个分类器。它们都是弱分类器。把一批准确率很差的弱分类器级联在一起,变成一个强分类器知识拓展:Adaboost迭代过程先通过对N个训练样本的学习得到第一个弱分类器;将分错的样本和其他的新数据一起构成一个新的N个的训练样本,通过对这个样本的学习得到第二个弱分类器;将前面都分错了的样本加上其他的新样本构成另一个新的N个的训练样本,通过对这个样本的学习得到第三个弱分类器;依次继续。然后把这些弱分类器集合起来,构成一个强分类器。知识拓展:Haar分类器的训练采集人脸图像,建立人脸、非人脸样本集;计算Haar-like特征值和积分图;进行弱分类器训练,筛选出T个最优弱分类器;把这T个最优弱分类器传给AdaBoost算法,训练出区分人脸和非人脸的强分类器;使用筛选式级联把强分类器级联到一起,提高准确率。知识拓展:利用haar算子实现人脸检测对比检查分成了多个阶段,后一阶段的运行以先前阶段的完成为前提。设计与实践摄像头工作参数设置加载Haar算子启动人脸检测Python编程及实现运行结果分析摄像头工作参数设置HaarCascade算法采用的是黑白像素特征,积分图也是在灰度图像上生成的。在人脸检测应用中,摄像头要设置为灰度图模式:sensor.set_contrast(1) #设置相机图像对比度,范围从-3至+3;sensor.set_gainceiling(16) #设置相机图像增益上限,参数范围:2,4,8,16,32,64,128;sensor.set_framesize(sensor.HQVGA) #设置摄像头分辨率为HQVGA:240x160sensor.set_pixformat(sensor.GRAYSCALE)#灰度图,每像素为8位、1字节。注意人脸识别只能用灰度图;加载Haar算子加载Haar模型的方法:classimage.HaarCascade(path[,stages=Auto])其中,stages为HaarCascade级联分类器的总阶段数,也就是强分类器的个数。Stages值要根据实际情况来选择:设置较低的阶段数可以得到较快的检测速度,但误识率也会较高;设置较高的阶段数可提高识别准确度,但牺牲了检测速度。HaarCascade内置有已经训练好的haar模型,如“frontalface”人脸模型或者“eye”人眼模型,编程时直接指定即可。启动人脸检测的过程控制摄像头的工作,定时捕捉图像帧;启动HaarCascade分类器工作,检测出图像帧中所有的人脸区域;在图像帧中标注出所有检测到的人脸区域;检测人脸使用image.find_features(cascade[,threshold=0.5[,scale=1.5[,roi]]])方法,搜索与HaarCascade匹配的所有区域的图像,返回所检测到的边界框矩形元组(x,y,w,h)列表。若未发现,则返回空列表。cascade是HaarCascade对象。threshold是浮点数(0.0-1.0),较小的值在提高检测速率同时增加误报率。scale是必须大于1.0的浮点数。较高的比例因子运行更快,但其图像匹配相应较差。理想值介于1.35-1.5之间。Python编程及实现face_cascade=image.HaarCascade("frontalface",stages=25)while(True): img=sensor.snapshot() #捕捉图像帧 objects=img.find_features(face_cascade,threshold=0.75,scale=1.35)

forrinobjects: #在找到的目标对象上画框,标记出来;img.draw_rectangle(r)调试经验如果视频区显示出摄像头捕捉的图像帧质量过低,继续进行人脸检测将没有意义。这时需要调节摄像头的工作参数。如果图像偏暗,则对LED编程进行补光;人脸处于逆光状态,人脸部分的图像特征模糊,对人脸检测很不利。调试程序时更换人脸位置,避开这种情况;如果视频显示正常,但没有检测到人脸区域,或者检测到了错误的区域,这是需要检测HaarCascade相关函数的编程中,各种工作参数设置是否合适。包括HaarCascade函数中的阶段数,find_features函数中的阈值和比例因子等,调节参数的取值,观察识别率、误识率、计算速度等方面的变化,确定所使用开发系统的最佳工作参数。分析与思考编程案例中是利用计算机视觉开源库中已经训练好的Haar人脸检测模型数据,如何自行训练出人脸检测Haar模型?如何在程序中调用外部的Haar模型?提出你的

温馨提示

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

评论

0/150

提交评论