《人工智能开源硬件与python编程实践》课件-项目8 计算机视觉与人脸检测
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
对比检查分成了多个阶段,后一阶段的运 行以先前阶段的完成为前提。
设计与实践
摄像头工作参数设置 加载Haar算子 启动人脸检测 Python编程及实现 运行结果分析
摄像头工作参数设置
Haar 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之间。
sensor.set_pixformat(sensor.GRAYSCALE) #灰度图,每像 素为8位、1字节。注意人脸识别只能用灰度图;
加载Haar算子
加载Haar模型的方法:class image.HaarCascade(path[, stages=Auto])
其中,stages 为Haar Cascade级联分类器的总阶 段数,也就是强分类器的个数。Stages值要根据 实际情况来选择:设置较低的阶段数可以得到较 快的检测速度,但误识率也会较高;设置较高的 阶段数可提高识别准确度,但牺牲了检测速度。
HaarCascade内置有已经训练好的haar模型,如 “frontalface”人脸模型或者“eye”人眼模型, 编程时直接指定即可。
启动人脸检测的过程
控制摄像头的工作,定时捕捉图像帧;
启动Haar Cascade分类器工作,检测出图像帧中 所有的人脸区域;
在图像帧中标注出所有检测到的人脸区域;
人脸检测技术如何进一步应用到校园生活中,你有什么创 意?可以设计出哪种智能应用系统?对你的新创意进行设 计和编程实践。
人工智能开源硬件与python编程实践
计算机视觉与人脸检测
情境导入
新款的相机都采用了智能技术,能够自动检测到 取景框内的人脸,自动往人脸对焦,拍下高质量 的照片。
智能手机的相机功能也都采用了自动跟踪人脸、 自动对焦的技术,辅助人们拍下美好画面。
人脸检测与自动跟踪技术在校园出入控制、智慧 教室等系统中均有应用,也是进一步开展人脸识 别的基础。
如果视频显示正常,但没有检测到人脸区域,或者检测到 了错误的区域,这是需要检测Haar Cascade相关函数的 编程中,各种工作参数设置是否合适。包括HaarCascade 函数中的阶段数,find_features函数中的阈值和比例因子 等,调节参数的取值,观察识别率、误识率、计算速度等 方面的变化,确定所使用开发系统的最佳工作参数。
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)
for r in objects: #在找到的目标对象上画框,标记出来;
img.draw_rectangle(r)
调试经验
如果视频区显示出摄像头捕捉的图像帧质量过低,继续进 行人脸检测将没有意义。这时需要调节摄像头的工作参数 。如果图像偏暗,则对LED编程进行补光;
人脸处于逆光状态,人脸部分的图像特征模糊,对人脸检 测很不利。调试程序时更换人脸位置,避开这种情况;
知识拓展:人脸Haar-like特征
对于人脸图像,脸部的一些特征能由矩形 特征来简单描述,如:眼睛要比脸颊颜色 要深,鼻梁两侧比鼻梁颜色要深,嘴巴比 周围颜色要深等。
在人脸检测应用中,将任意一个矩形模板 移动到人脸区域上,计算将白色区域的像 素和减去黑色区域的像素和,得到的值就 是属于人脸的特征值。
积分图构造好之后,图像中任何矩阵区域的像素 累加和都可以通过简单运算得到。只遍历一次图 像就可以求出图像中所有区域像素和的快速算法 ,大大的提高了图像特征值计算的效率。
知识拓展:弱学习与强学习
弱学习就是指一个学习算法对一组概念的 识别率只比随机识别好一点;
强学习指一个学习算法对一组概率的识别 率很高。
知识拓展: Haar分类器的训练
采集人脸图像,建立人脸、非人脸样本集; 计算Haar-like特征值和积分图; 进行弱分类器训练,筛选出T个最优弱分类
器; 把这T个最优弱分类器传给AdaBoost算法,
训练出区分人脸和非人脸的强分类器; 使用筛选式级联把强分类器级联到一起,提
高准确率。
知识拓展:利用haar算子实现人脸检测
任务与目标
了解人脸检测技术的基本原理、Haar相关算法和 应用框架;
掌握运用人工智能开源硬件设计人脸检测应用的 方法,提升Python语言的编程能力;
通过Python编程,调用Haar Cascade算法,实现 人脸检测功能;
针对生活应用场景,进一步开展创意设计,设计 针对校园安防等需求的具有实用性的人脸检测应 用系统。
研究工作表明,只要有足够的数据,弱学 习算法就能通过集成的方式生成任意高精 度的强学习方法。
知识拓展: Adaboost算法初步
各种Haar特征,每一个小黑白块就是一种 规则,也是一种特征,也是一个分类器。
它们都是弱分类器。 把一批准确率很差的弱分类器级联在一起
,变成一个强分类器
知识拓展: Adaboost迭代过程
分析与思考
编程案例中是利用计算机视觉开源库中已经训练好的Haar 人脸检测模型数据,如何自行训练出人脸检测Haar模型? 如何在程序中调用外部的Haar模型?提出你的实施方案, 有条件进行编程实践。
计算机视觉开源库中的Haar Cascade方法可以应用在人 脸以外的目标检测吗?比如宠物爱好者常常提出希望有一 个狗脸、猫脸检测功能,以便设计一个宠物管理系统。针 对这些问题,提出你的模型建立、训练和编程实施方案。
sensor.set_contrast(1) 3至+3;
#设置相机图像对比度,范围从-
sensor.set_gainceiling(16) #设置相机图像增益上限,参数 范围:2, 4, 8, 16, 32, 64, 128;
sensor.set_framesize(sensor.HQVGA) #设置摄像头分辨 率为HQVGA: 240x160
聚类则没有事先预定的类别,类别数不确 定。 聚类不需要人工标注和预先训练分类 器,类别在聚类过程中自动生成,是一种 无监督学习。
知识拓展: Haar-like特征
Haar-like特征一种常用的图像特征描述算 子,在机器视觉领域应用很广;
分为边缘特征、线性特征、中心特征和对 角线特征等,组合成特征模板。特征模板 内只有白色和黑色两种矩形,并定义该模 板的特征值为白色矩形像素和减去黑色矩 形像素和。
通过Haar-like特征的计算实现了人脸特征 的量化,以便区分人脸和非人脸。
知识拓展: Haar-like特征计算方法
对于一个灰度图像I而言,其积分图也是一张与I尺 寸相同的图,只不过该图上任意一点(x,y)的值是 指从灰度图像I的左上角与当前点所围成的矩形区 域内所有像素点灰度值之和。
当把扫描图像一遍,到达图像右下角像素时,积 分图像就wenku.baidu.com造好了。
先通过对N个训练样本的学习得到第一个弱分类 器;
将分错的样本和其他的新数据一起构成一个新的 N个的训练样本,通过对这个样本的学习得到第 二个弱分类器;
将前面都分错了的样本加上其他的新样本构成另 一个新的N个的训练样本,通过对这个样本的学 习得到第三个弱分类器;
依次继续。然后把这些弱分类器集合起来,构成 一个强分类器。
知识拓展:聚类与分类
聚类是将数据对象集合划分成相似的对象 类的过程,使得同一个类中的对象之间具 有较高的相似性,而不同类中的对象具有 较高的相异性。
分类则是按照某种标准给对象贴标签,再 根据标签来区分归类。也就是说,分类情 况下事先定义好了类别,类别数不再变化 。
知识拓展:区别与联系
分类器需要事先由包含人工标注类别的训 练数据训练得到,属于有监督的学习。
设计与实践
摄像头工作参数设置 加载Haar算子 启动人脸检测 Python编程及实现 运行结果分析
摄像头工作参数设置
Haar 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之间。
sensor.set_pixformat(sensor.GRAYSCALE) #灰度图,每像 素为8位、1字节。注意人脸识别只能用灰度图;
加载Haar算子
加载Haar模型的方法:class image.HaarCascade(path[, stages=Auto])
其中,stages 为Haar Cascade级联分类器的总阶 段数,也就是强分类器的个数。Stages值要根据 实际情况来选择:设置较低的阶段数可以得到较 快的检测速度,但误识率也会较高;设置较高的 阶段数可提高识别准确度,但牺牲了检测速度。
HaarCascade内置有已经训练好的haar模型,如 “frontalface”人脸模型或者“eye”人眼模型, 编程时直接指定即可。
启动人脸检测的过程
控制摄像头的工作,定时捕捉图像帧;
启动Haar Cascade分类器工作,检测出图像帧中 所有的人脸区域;
在图像帧中标注出所有检测到的人脸区域;
人脸检测技术如何进一步应用到校园生活中,你有什么创 意?可以设计出哪种智能应用系统?对你的新创意进行设 计和编程实践。
人工智能开源硬件与python编程实践
计算机视觉与人脸检测
情境导入
新款的相机都采用了智能技术,能够自动检测到 取景框内的人脸,自动往人脸对焦,拍下高质量 的照片。
智能手机的相机功能也都采用了自动跟踪人脸、 自动对焦的技术,辅助人们拍下美好画面。
人脸检测与自动跟踪技术在校园出入控制、智慧 教室等系统中均有应用,也是进一步开展人脸识 别的基础。
如果视频显示正常,但没有检测到人脸区域,或者检测到 了错误的区域,这是需要检测Haar Cascade相关函数的 编程中,各种工作参数设置是否合适。包括HaarCascade 函数中的阶段数,find_features函数中的阈值和比例因子 等,调节参数的取值,观察识别率、误识率、计算速度等 方面的变化,确定所使用开发系统的最佳工作参数。
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)
for r in objects: #在找到的目标对象上画框,标记出来;
img.draw_rectangle(r)
调试经验
如果视频区显示出摄像头捕捉的图像帧质量过低,继续进 行人脸检测将没有意义。这时需要调节摄像头的工作参数 。如果图像偏暗,则对LED编程进行补光;
人脸处于逆光状态,人脸部分的图像特征模糊,对人脸检 测很不利。调试程序时更换人脸位置,避开这种情况;
知识拓展:人脸Haar-like特征
对于人脸图像,脸部的一些特征能由矩形 特征来简单描述,如:眼睛要比脸颊颜色 要深,鼻梁两侧比鼻梁颜色要深,嘴巴比 周围颜色要深等。
在人脸检测应用中,将任意一个矩形模板 移动到人脸区域上,计算将白色区域的像 素和减去黑色区域的像素和,得到的值就 是属于人脸的特征值。
积分图构造好之后,图像中任何矩阵区域的像素 累加和都可以通过简单运算得到。只遍历一次图 像就可以求出图像中所有区域像素和的快速算法 ,大大的提高了图像特征值计算的效率。
知识拓展:弱学习与强学习
弱学习就是指一个学习算法对一组概念的 识别率只比随机识别好一点;
强学习指一个学习算法对一组概率的识别 率很高。
知识拓展: Haar分类器的训练
采集人脸图像,建立人脸、非人脸样本集; 计算Haar-like特征值和积分图; 进行弱分类器训练,筛选出T个最优弱分类
器; 把这T个最优弱分类器传给AdaBoost算法,
训练出区分人脸和非人脸的强分类器; 使用筛选式级联把强分类器级联到一起,提
高准确率。
知识拓展:利用haar算子实现人脸检测
任务与目标
了解人脸检测技术的基本原理、Haar相关算法和 应用框架;
掌握运用人工智能开源硬件设计人脸检测应用的 方法,提升Python语言的编程能力;
通过Python编程,调用Haar Cascade算法,实现 人脸检测功能;
针对生活应用场景,进一步开展创意设计,设计 针对校园安防等需求的具有实用性的人脸检测应 用系统。
研究工作表明,只要有足够的数据,弱学 习算法就能通过集成的方式生成任意高精 度的强学习方法。
知识拓展: Adaboost算法初步
各种Haar特征,每一个小黑白块就是一种 规则,也是一种特征,也是一个分类器。
它们都是弱分类器。 把一批准确率很差的弱分类器级联在一起
,变成一个强分类器
知识拓展: Adaboost迭代过程
分析与思考
编程案例中是利用计算机视觉开源库中已经训练好的Haar 人脸检测模型数据,如何自行训练出人脸检测Haar模型? 如何在程序中调用外部的Haar模型?提出你的实施方案, 有条件进行编程实践。
计算机视觉开源库中的Haar Cascade方法可以应用在人 脸以外的目标检测吗?比如宠物爱好者常常提出希望有一 个狗脸、猫脸检测功能,以便设计一个宠物管理系统。针 对这些问题,提出你的模型建立、训练和编程实施方案。
sensor.set_contrast(1) 3至+3;
#设置相机图像对比度,范围从-
sensor.set_gainceiling(16) #设置相机图像增益上限,参数 范围:2, 4, 8, 16, 32, 64, 128;
sensor.set_framesize(sensor.HQVGA) #设置摄像头分辨 率为HQVGA: 240x160
聚类则没有事先预定的类别,类别数不确 定。 聚类不需要人工标注和预先训练分类 器,类别在聚类过程中自动生成,是一种 无监督学习。
知识拓展: Haar-like特征
Haar-like特征一种常用的图像特征描述算 子,在机器视觉领域应用很广;
分为边缘特征、线性特征、中心特征和对 角线特征等,组合成特征模板。特征模板 内只有白色和黑色两种矩形,并定义该模 板的特征值为白色矩形像素和减去黑色矩 形像素和。
通过Haar-like特征的计算实现了人脸特征 的量化,以便区分人脸和非人脸。
知识拓展: Haar-like特征计算方法
对于一个灰度图像I而言,其积分图也是一张与I尺 寸相同的图,只不过该图上任意一点(x,y)的值是 指从灰度图像I的左上角与当前点所围成的矩形区 域内所有像素点灰度值之和。
当把扫描图像一遍,到达图像右下角像素时,积 分图像就wenku.baidu.com造好了。
先通过对N个训练样本的学习得到第一个弱分类 器;
将分错的样本和其他的新数据一起构成一个新的 N个的训练样本,通过对这个样本的学习得到第 二个弱分类器;
将前面都分错了的样本加上其他的新样本构成另 一个新的N个的训练样本,通过对这个样本的学 习得到第三个弱分类器;
依次继续。然后把这些弱分类器集合起来,构成 一个强分类器。
知识拓展:聚类与分类
聚类是将数据对象集合划分成相似的对象 类的过程,使得同一个类中的对象之间具 有较高的相似性,而不同类中的对象具有 较高的相异性。
分类则是按照某种标准给对象贴标签,再 根据标签来区分归类。也就是说,分类情 况下事先定义好了类别,类别数不再变化 。
知识拓展:区别与联系
分类器需要事先由包含人工标注类别的训 练数据训练得到,属于有监督的学习。