配色: 字号:
《AI硬件与Pyhthon编程实践》08计算机视觉与人脸检测写字字帖
2023-05-24 | 阅:  转:  |  分享 
  
计算机视觉与人脸检测人工智能开源硬件与python编程实践情境导入新款的相机都采用了智能技术,能够自动检测到取景框内的人脸,自动往人脸对焦,
拍下高质量的照片。智能手机的相机功能也都采用了自动跟踪人脸、自动对焦的技术,辅助人们拍下美好画面。人脸检测与自动跟踪技术在校园出入
控制、智慧教室等系统中均有应用,也是进一步开展人脸识别的基础。任务与目标了解人脸检测技术的基本原理、Haar相关算法和应用框架;掌
握运用人工智能开源硬件设计人脸检测应用的方法,提升Python语言的编程能力;通过Python编程,调用Haar Cascade算
法,实现人脸检测功能;针对生活应用场景,进一步开展创意设计,设计针对校园安防等需求的具有实用性的人脸检测应用系统。知识拓展:聚类与
分类聚类是将数据对象集合划分成相似的对象类的过程,使得同一个类中的对象之间具有较高的相似性,而不同类中的对象具有较高的相异性。分类
则是按照某种标准给对象贴标签,再根据标签来区分归类。也就是说,分类情况下事先定义好了类别,类别数不再变化。知识拓展:区别与联系分类
器需要事先由包含人工标注类别的训练数据训练得到,属于有监督的学习。聚类则没有事先预定的类别,类别数不确定。 聚类不需要人工标注和预
先训练分类器,类别在聚类过程中自动生成,是一种无监督学习。知识拓展: 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编程及实现运行结果分析摄像头工作参数设
置Haar Cascade算法采用的是黑白像素特征,积分图也是在灰度图像上生成的。在人脸检测应用中,摄像头要设置为灰度图模式:se
nsor.set_contrast(1) #设置相机图像对比度,范围从-3至+3;sensor.set_gainceiling(1
6) #设置相机图像增益上限,参数范围:2, 4, 8, 16, 32, 64, 128;sensor.set_framesize
(sensor.HQVGA) #设置摄像头分辨率为HQVGA: 240x160sensor.set_pixformat(sen
sor.GRAYSCALE) #灰度图,每像素为8位、1字节。注意人脸识别只能用灰度图;加载Haar算子加载Haar模型的方法:
class image.HaarCascade(path[, stages=Auto])其中,stages 为Haar Casca
de级联分类器的总阶段数,也就是强分类器的个数。Stages值要根据实际情况来选择:设置较低的阶段数可以得到较快的检测速度,但误识
率也会较高;设置较高的阶段数可提高识别准确度,但牺牲了检测速度。HaarCascade内置有已经训练好的haar模型,如“fron
talface”人脸模型或者“eye”人眼模型,编程时直接指定即可。启动人脸检测的过程控制摄像头的工作,定时捕捉图像帧;启动Haa
r Cascade分类器工作,检测出图像帧中所有的人脸区域;在图像帧中标注出所有检测到的人脸区域;检测人脸使用image.find
_features(cascade[, threshold=0.5[, scale=1.5[, roi]]])方法,搜索与Haar
Cascade匹配的所有区域的图像,返回所检测到的边界框矩形元组(x,y,w,h)列表。若未发现,则返回空列表。cascade
是Haar Cascade对象。threshold 是浮点数(0.0-1.0),较小的值在提高检测速率同时增加误报率。scale
是必须大于1.0的浮点数。较高的比例因子运行更快,但其图像匹配相应较差。理想值介于1.35-1.5之间。Python编程及实现fa
ce_cascade = image.HaarCascade("frontalface", stages=25)while (Tr
ue): img = sensor.snapshot() #捕捉图像帧 objects = img.find_features(
face_cascade, threshold=0.75, scale=1.35)? for r in objects:
#在找到的目标对象上画框,标记出来; img.draw_rectangle(r)调试经验如果视频区显示出摄像头捕捉的
图像帧质量过低,继续进行人脸检测将没有意义。这时需要调节摄像头的工作参数。如果图像偏暗,则对LED编程进行补光;人脸处于逆光状态,
人脸部分的图像特征模糊,对人脸检测很不利。调试程序时更换人脸位置,避开这种情况;如果视频显示正常,但没有检测到人脸区域,或者检测到
了错误的区域,这是需要检测Haar Cascade相关函数的编程中,各种工作参数设置是否合适。包括HaarCascade函数中的阶
段数,find_features函数中的阈值和比例因子等,调节参数的取值,观察识别率、误识率、计算速度等方面的变化,确定所使用开发
系统的最佳工作参数。分析与思考编程案例中是利用计算机视觉开源库中已经训练好的Haar人脸检测模型数据,如何自行训练出人脸检测Haa
r模型?如何在程序中调用外部的Haar模型?提出你的实施方案,有条件进行编程实践。计算机视觉开源库中的Haar Cascade方法可以应用在人脸以外的目标检测吗?比如宠物爱好者常常提出希望有一个狗脸、猫脸检测功能,以便设计一个宠物管理系统。针对这些问题,提出你的模型建立、训练和编程实施方案。人脸检测技术如何进一步应用到校园生活中,你有什么创意?可以设计出哪种智能应用系统?对你的新创意进行设计和编程实践。
献花(0)
+1
(本文系大高老师首藏)