人工智能与未来 课件 第8章 计算机视觉_第1页
人工智能与未来 课件 第8章 计算机视觉_第2页
人工智能与未来 课件 第8章 计算机视觉_第3页
人工智能与未来 课件 第8章 计算机视觉_第4页
人工智能与未来 课件 第8章 计算机视觉_第5页
已阅读5页,还剩173页未读 继续免费阅读

下载本文档

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

文档简介

ComputerVision第8章

计算机视觉2035主讲:王红梅知识目标:能理解计算机“看”图像和“懂”图像的基本原理,能描述计算机视觉及相关概念,能列举计算机视觉的相关应用。能力目标:能结合现实生活,判断哪些场景是计算机视觉的应用;能结合应用,分析其建立的过程和方法。素养目标:培养学生能用计算机视觉解决问题的思维。

目录CONTENTS8.18.28.38.4计算机视觉那些事计算机视觉概述人脸识别原理人脸识别实现8.506扩展:空间智能目录CONTENTS8.18.28.38.4计算机视觉那些事计算机视觉概述人脸识别原理人脸识别实现8.506扩展:空间智能

随着人工智能技术快速发展,人工智能在知识学习、逻辑推理、生成式人工智能方面不断获得突破和进展,同时人工智能迈入感知智能阶段。人工智能发展的三个阶段

在感知智能阶段,“能听会说,能看会认”是其主要功能。在“能听会说”方面,需要自然语言处理支持;而在“能看会认”方面,则需要计算机视觉的技术支持。人工智能发展的三个阶段本章的内容主要是解决机器如何看见客观世界,又如何能对看见的世界进行认识和理解的问题,即:(1)机器如何“看”世界,(2)机器如何“懂”世界。故事导入:小智又忘记带“钥匙”的困惑。小智看到别的地方的人脸识别,就像如果自己宿舍也安装上人脸识别,那自己的脸不就可以当钥匙了吗?从此解决自己忘记带钥匙的问题。故事导入:小智又忘记带“钥匙”的困惑。主讲:王红梅ArtificialIntelligenceandFuture人工智能与未来2035ComputerVision第8章

计算机视觉2035主讲:王红梅目录CONTENTS8.18.28.38.4计算机视觉那些事计算机视觉概述人脸识别原理人脸识别实现8.506扩展:空间智能8.2.1什么是计算机视觉?8.2.2计算机视觉要解决的问题是什么?8.2.3我们人类如何“看世界”?8.2.4人类如何教会机器“看世界”?8.2.5机器要认识什么?8.2.6计算机视觉的处理方法8.2.7计算机视觉的任务、分类及应用8.2.8人脸识别、计算机机视觉和人工智能之间的关系

我们人类通过视觉可以和客观世界进行沟通和交流。讨论:(1)你有没有通过视觉进行交流过,举个例子呗!

(2)在交流的过程中,都会发生什么?试着描述。8.2.1什么是计算机视觉?

与人类和世界进行沟通和交流的情况类似。计算机视觉(ComputerVision,简称CV)是让机器通过模拟人类视觉来和世界沟通与交流的方式,具体来说就是通过数字图像或视频等视觉信息来模拟人类视觉的过程,以达到对物体的理解、识别、分类、跟踪、重建等目的的技术。8.2.1什么是计算机视觉?

计算机视觉要解决的问题主要是让机器能看见世界中的客观对象和对对象有一定的理解能力。

换句话说计算机视觉要研究的问题:(1)机器“看见”世界的能力,(2)机器“看懂”和“理解”世界的能力(3)机器能进行“沟通”和“交互”的能力。说到这个问题,要先从我们人类如何认识世界说起。8.2.2计算机视觉要解决的问题是什么?8.2.3我们人类如何“看世界”?

从最早感知光线的生物三叶虫到我们人类,自然界经历了5亿4千万年的努力,而这大部分的时间都是在完成人类大脑内视觉处理器官的进化,而不是眼睛本身。8.2.3我们人类如何“看世界”?

在这个非常漫长的过程,“视觉”从眼睛采集数据开始,而大脑才是它呈现意义的地方,8.2.3我们人类如何“看世界”?

(a)宝宝水杯

(b)妈妈的水杯

(c)爸爸的水杯幼年时期认识的各种水杯8.2.3我们人类如何“看世界”?

当我们认识足够多的水杯后,下次再见到一个水杯,不用告诉我们这是水杯,我们就可以认识到它是个水杯了,甚至还可以表达出一些需求,妈妈,我想要这个水杯

李飞飞在TED的演讲中,讲到3岁的孩子,他通过眼睛要看到3亿张的图片,并把它们存入大脑,3岁以后的孩子对世界的认识基本就建立起来了。人类对现实世界的认识其实就是建立在先认识、后识别的基础上。8.2.3我们人类如何“看世界”?

人类经过上亿年的进化,我们才具备用眼看世界和识别世界的能力,其实机器对世界的认识,也同样是经过先认识,再识别的过程。8.2.3我们人类如何“看世界”?8.2.4人类如何教会机器“看世界”?1839年能记录图像,照相机的发明1957年图像数字化20世纪60年代(1)三维视觉理解的研究(2)发明了图像传感器1959年二维图像的分析和识别20世纪90年代特征识别2009年高质量数据集ImageNet2006年至今深度学习在视觉中的应用

(一)出现有标注的高质量数据集

2009年,李飞飞教授等发布了ImageNet数据集。8.2.4人类如何教会机器“看世界”?

(一)出现有标注的高质量数据集

ImageNet数据集包含了1400多万幅图片。2万多个类别的大型数据库,这个数据集是一个用于图像识别和分类的大型数据库,‌包含了大量的标注图片,‌用于训练和测试图像识别算法。‌ImageNet数据集的规模和多样性对于推动计算机视觉领域的发展起到了重要作用,‌使得研究人员能够开发出更加准确的图像识别和分类算法。8.2.4人类如何教会机器“看世界”?

(二)2010年-至今深度学习在视觉中流行,在应用上百花齐放

2012年,AlexKrizhevsky、IlyaSutskever和GeoffreyHinton创造了一个“大型的深度卷积神经网络”,也即现在众所周知的AlexNet。8.2.4人类如何教会机器“看世界”?(三)计算机视觉应用系统主要包括图像采集、预处理、特征提取、图像识别和决策判断等模块。图像采集预处理特征提取图像识别输出结果场景决策判断8.2.4人类如何教会机器“看世界”?过程举个例子:高铁出现时人脸识别

8.2.5机器要认识什么?

机器认识对象,其实是对对应图像的认识,更准确地说是对从图像中提取出来的特征的认识,如人脸的轮廓、眼、鼻子、嘴巴、眉毛等特征,或是花朵的颜色、形状等特征。

8.2.5机器要认识什么?

要得到图像就需要图像采集系统了。对可见光的处理是计算机视觉的一个非常重要的应用,摄像头是可见光范围内常用的采集传感器。但在实际应用中的光学采集传感器还有很多,如雷达传感器、红外传感器等,他们的作用范围也不相同。

8.2.5机器要认识什么?

在本章,提到的传感器采集的数据主要是基于摄像头的光敏传感器采集的可见光范围的图像。

8.2.5机器要认识什么?

采集后,显示的是数字图像。数字图像由像素构成,其中每个像素有位置值和颜色值两个属性,位置用x、y表示,颜色用RGB表示。机器就是通过对这些像素值进行计算处理来认识图像。

8.2.6计算机视觉的处理方法计算机视觉的处理自动学习特征,但需要大量数据和计算资源传统基于特征学习的方法基于关键点的特征基于纹理的特征基于区域的特征基于颜色和形状的特征基于多尺度提取图像特征深度学习方法卷积神经网络(CNN)生成对抗网络(GAN)循环神经网络(RNN)Transformer架构等端到端,速度更快,使用更为简单和高效,尤其在嵌入式设备中,被广泛使用

以人脸识别为例,在机器实现人脸识别的的过程中,人们提出了很多有效的方法,主要经历了三个阶段。

8.2.6计算机视觉的处理方法

第一个阶段:基于几何特征的人脸识别方法,20世纪60至80年代思想:每个人的面部几何结构都是独特的

8.2.6计算机视觉的处理方法第二个阶段:自动化与算法化,20世纪90年代至21世纪初(a)原图

(b)多个找人脸的滑动窗口

(c)找到人脸通过滑动窗口来进行人脸识别

8.2.6计算机视觉的处理方法第三个阶段:深度学习方法,自21世纪初至今

杨立昆所开发的手写字识别技术,基于神经网络算法,成功地将邮局提供的9000份扫描件进行了识别,该技术亦被称为LeNet。

自2012年李飞飞的ImageNet数据集问世以来,杨立昆的学弟,更确切地说是辛顿的学生们,持续在大数据识别领域进行深入研究。随后,AlexNet诞生,它基于海量数据,在英伟达的图形处理单元上对神经网络算法进行了验证。数据算法算力

之后,深度学习方法在人类识别中取得了巨大成功,并大规模走向商业使用,基于特定数据集LFW(LabeledFacesintheWild,自然环境下带标注人脸数据集)上的识别率均在99%以上。研究表明,人类的识别率为97%左右,可见机器人脸识别远超人类人脸识别的水平。

8.2.6计算机视觉的处理方法第三个阶段:深度学习方法,自21世纪初至今

8.2.6计算机视觉的处理方法第三个阶段:深度学习方法,自21世纪初至今模型训练人脸识别准备阶段实施阶段如何认识人脸?解决这是谁的脸?解决深度学习的人脸识别流程(1)讲述李飞飞自身成长的励志书(2)讲述人工智能发展(3)讲述计算机视觉的发展...图书推荐

8.2.7计算机视觉的任务、分类及应用是什么?

在哪里?

是什么?在哪里?

像素的归属问题计算机视觉关于图像识别主要有四大任务,分别为分类、定位、检测和分割,不同任务解决不一样的问题。分类

定位

检测

分割计算机视觉关于图像识别主要有四大任务,分别为分类、定位、检测和分割,不同任务解决不一样的问题。

8.2.7计算机视觉的任务、分类及应用1.

分类(Classification)问题:图片里是什么?例子:给你一张图,判断是“猫”还是“狗”。技术本质:算法给整张图打一个标签,像老师批改选择题(单选)。实际应用:相册自动分类(猫/狗/风景)、垃圾邮件过滤(正常/垃圾)。关键特点:只关心“是什么”,不关心“在哪里”或“有多少”。计算机视觉关于图像识别主要有四大任务,分别为分类、定位、检测和分割,不同任务解决不一样的问题。

8.2.7计算机视觉的任务、分类及应用2.定位(Localization)问题:目标在哪里?(通常已知类别)例子:已知图中有猫,用框标出猫的位置。技术本质:在分类基础上加一个边界框,像用笔圈出答案。实际应用:人脸识别时框出人脸、自动驾驶中标记车辆位置。关键特点:通常针对单个目标,既要分类也要定位。计算机视觉关于图像识别主要有四大任务,分别为分类、定位、检测和分割,不同任务解决不一样的问题。

8.2.7计算机视觉的任务、分类及应用3.检测(Detection)问题:图中是什么?它们在哪里?例子:一张街景图中找出所有的车、行人、红绿灯,并分别标出位置和类别。技术本质:多目标定位+分类,像在一群小朋友中找出所有戴红帽子的并点名。实际应用:自动驾驶、安防监控(识别多个人或物体)。关键特点:处理多个目标,输出一堆边界框和类别标签。计算机视觉关于图像识别主要有四大任务,分别为分类、定位、检测和分割,不同任务解决不一样的问题。

8.2.7计算机视觉的任务、分类及应用4.分割(Segmentation)问题:每个像素归属问题?例子:把照片中的猫的每一根毛发、脚爪的像素都精确标出来,其他背景排除。技术本质:给每个像素分类,像用彩色笔给不同区域涂色(猫涂蓝色、狗涂青色)。细分类型:语义分割和实例分割:实际应用:医学图像(标记肿瘤区域)、地图分割等。关键特点:像素级精度,比检测的边界框更精细。计算机视觉关于图像识别主要有四大任务,分别为分类、定位、检测和分割,不同任务解决不一样的问题。

8.2.7计算机视觉的任务、分类及应用技术关联:这些任务通常共用底层技术(如卷积神经网络CNN)来完成,四个任务难度递增:(1)分类是基础,(2)检测=分类+定位的多次应用,(3)分割需要更精细的处理。根据应用的目的和场景不同

(1)图像分类(2)目标检测(3)目标跟踪(4)语义分割(5)实例分割有时候还会有些应用上的细分

8.2.7计算机视觉的任务、分类及应用

8.2.7计算机视觉的任务、分类及应用(1)图像分类。是一种利用计算机技术对图像进行处理、分析和理解,按照一定的分类规则将图像自动分到一组预定义类别中的过程。超市购物时能自动进行水果分类

8.2.7计算机视觉的任务、分类及应用(2)目标检测。是指在图像或视频中识别出目标物体所在的位置,并标注出其所属的类别。(3)目标跟踪。目标跟踪是指计算机视觉系统发现目标后,能在后续时间内,不管目标位置是否发生变化,始终“看到”目标并获得目标的实时位置、形态等信息。目标跟踪相当于动态进行目标检测。自动驾驶中的目标检测

8.2.7计算机视觉的任务、分类及应用(4)语义分割

语义分割旨在将输入图像中的每个像素标记为属于哪个语义类别。与目标检测和图像分类不同,语义分割不仅可以识别图像中的物体,还可以为每个像素分配标签,从而提供更详细和准确的图像理解。

8.2.7计算机视觉的任务、分类及应用(4)语义分割

主要应用:适用于对图像进行精细分割和像素级分类的场景,例如自动驾驶中的道路分割、医学图像中的病灶分割、地理信息系统中的土地分类等。

8.2.7计算机视觉的任务、分类及应用(5)实例分割

实例分割是结合目标检测和语义分割的一个更高层级的任务,旨在检测图像中的物体的同时将每个物体分割成精确的像素级别的区域。(a)原图

(b)语义分割

(c)实例分割讨论:语义分割和实例分割的区别

实例分割和语义分割都属于计算机视觉任务,而且都属于预测单个像素点的类型。给定一张人群的图片,两者的区别在于,语义分割只对类别进行了区别,不管有几个人,都会预测为一个类别。而实例分割不仅预测类别,还要识别每个不同的个体,每个个体会被预测为不同的对象。有点像结合了目标检测的语义分割。计算机视觉类别和任务对应一览表类别

任务分类定位检测分割备注图像分类√

目标检测√√√

目标跟踪√√√

持续的目标检测语义分割√√√√只考虑类型实例分割√√√√考虑类型和每一个对象

8.2.8人脸识别、计算机机视觉和人工智能之间的关系在计算智能阶段,能说会算是核心能力;在感知智能阶段,能听会说,能看会认是核心能力;到认知智能阶段,能理解、会思考则是核心能力。人工智能发展的三个阶段人工智能

计算机视觉

人脸识别

8.2.8人脸识别、计算机机视觉和人工智能之间的关系人脸识别、计算机视觉和人工智能的关系主讲:王红梅ArtificialIntelligenceandFuture人工智能与未来2035ComputerVision第8章

计算机视觉2035主讲:王红梅目录CONTENTS8.18.28.38.4计算机视觉那些事计算机视觉概述人脸识别原理*人脸识别实现8.506扩展:空间智能讨论:在众多的生物识别技术中如:指纹、声纹、掌纹、虹膜、人脸识别、DNA等生物识别技术中,为什么人脸识别最受待见?人脸识别由于其方便、友好、符合人类传统识别方式(人与人之间就是通过观察面孔信息来识别对方身份的)、非接触、成本较低、稳定性高等优点,在众多生物识别技术中脱颖而出。讨论:人如何分辨面孔?大脑中有个梭状回的特殊脑区,负责面孔辨识如果人的梭状回区天生较弱,或受过脑损伤,有可能分辨不出人脸,俗称“脸盲症”。

要完成人脸识别,一般的处理过程可分为图像采集、人脸定位、特征提取和特征对比等过程。8.3.1人脸识别基本流程是什么?1.图像采集是指通过传感器如摄像头等把客观世界中的信息采集到计算机上。8.3.1人脸识别基本流程是什么?2.人脸定位是指检测到人脸并确定人脸的位置。8.3.1人脸识别基本流程是什么?3.特征提取是从图像中提出特征,如人脸的轮廓、嘴、眼、鼻的位置等,好方便下一步的分类或识别。8.3.1人脸识别基本流程是什么?4.特征对比就是根据已经训练的特征模型,从特征库中找出和提供的人脸相似的人脸,当相似度到达一直阈值,就认为是相同的脸。8.3.1人脸识别基本流程是什么?

不同的应用场景对相似度的要求也不尽相同。如家里的门锁、手机支付相似度要求就很高,而普通的签到对人脸识别可能就会要求低一些。8.3.1人脸识别基本流程是什么?用专业术语叫什么?阈值

实际上在人脸识别前,还有个模型训练的过程,模型训练的过程和人脸识别过程很像,也有图像采集、预处理,特征提取过程,不同的是在特征提取时:数据集不同。模型训练的特征提取一般会用专门的训练数据集,而人脸识别的特征提取用的是测试数据集,这个测试数据集也可以理解为就是要识别的对象。8.3.1人脸识别基本流程是什么?8.3.1人脸识别基本流程是什么?人脸识别要提取特征,你觉得应该提取什么特征呢?怎么提取呢?我们会发现关于图像特征的提取无非是颜色特征、形状特征、纹理特征、空间关系特征等等,每一种特征都有相应的检测和提取方法。

实际上提取什么特征决定于要识别什么,假如要进行人脸识别则需要提取人脸的轮廓,眼、嘴、鼻等的特征。而在提取特征之前,必须先检测到人脸;在特征提取之后,又需要根据提取的特征进行识别。我们把整个过程通常成为检测方法。

下面将详细介绍人脸检测方法中的Haar级联检测器方法(HaarFeature-basedCascadeClassifier,简称Haar级联检测器)8.3.1人脸识别基本流程是什么?8.3.2

Haar级联检测器人脸检测方法基于知识的检测方法基于统计的检测方法基于深度学习的检测方法检测器官特征和器官之间的几何关系检测的是像素之间的相似度,根据相似度量来判断人脸是否存在通过对大量的脸部样品集和非脸部样品集的学习产生分类器8.3.2

Haar级联检测器

目前,检测技术(目标检测)已经进入深度学习时代,但传统的方法还有必要了解,一方面由于深度学习也是基于传统方法,如级联CNN,就基于VJ检测器(ViolaJonesDetector,简称VJ检测器)中的级联结构,另一方面,传统方法由于不需要复杂软、硬件环境支持,有一定的应用场景。8.3.2

Haar级联检测器在VJ检测器基础上,发展出了OpenCV中的Haar级联检测器,Haar级联检测器是广泛使用的检测器之一。Haar级联检测器是基于统计的方法,将人脸看作一个整体,也就是二维像素矩阵,从统计的观点通过大量人脸图像样本来构造人脸模式空间,从而根据相似度来判断人脸是否存在。如通过分析5000张人脸照片,发现“眼睛比脸颊暗”、“鼻梁比两侧亮”、“嘴巴比周围暗”这样的规律。8.3.2

Haar级联检测器Haar级联检测器由Haar特征、积分图、AdaBoost算法和级联分类器组成,可表示为:Haar级联检测器=Haar特征+积分图+AdaBoost算法+级联分类器1.使用Haar特征做检测,提供基础特征;2.使用积分图对Haar特征求值进行加速;3.使用AdaBoost算法,训练区分人脸和非人脸的强分类器;4.使用级联把强分类器联到一起,提高准确率。8.3.2

Haar级联检测器Haar特征想象你是一位侦探,要在茫茫人海中找到目标人物。Haar级联检测器就像一支训练有素的侦探小分队,通过层层筛选快速锁定嫌疑人。积分图AdaBoost算法级联分类器把目标人物画个像Haar级联检测器侦探小分队模板发明家侦探的“速算神器”侦探的“层层安检”“精英侦探团”类比8.3.3使用Haar特征进行检测

1.Haar特征模板Haar是一种特征描述,这种描述用Haar特征模板来实现,这种特征模板用于描述图像局部灰度变化。

X2

Y2

X3

Y3

X2-Y2

边缘特征

边缘特征

线性特征

线性特征

对角特征8.3.3使用Haar特征进行检测

1.Haar特征模板

如我们要检测人脸中的轮廓,就可以用边缘特征,通过计算模板两边白色像素框和黑色像素框的像素的灰度差值,就知道是轮廓(差值大)。8.3.3使用Haar特征进行检测

2.进行检测

怎么检测呢?在实际中,Haar特征模板可以在检测子窗口,通过缩放+平移产生一系列子特征。举个现实中类似套娃找匹配的例子8.3.3使用Haar特征进行检测

2.进行检测检测过程

(1)首先把原图像按一定尺寸,划分成子窗口(这里划分为9个子窗口),子窗口按一定步长在图像中滑动。8.3.3使用Haar特征进行检测

2.进行检测检测过程

(1)首先把原图像按一定尺寸,划分成子窗口(这里划分为9个子窗口),子窗口按一定步长在图像中滑动。8.3.3使用Haar特征进行检测

2.进行检测检测过程

(1)首先把原图像按一定尺寸,划分成子窗口(这里划分为9个子窗口),子窗口按一定步长在图像中滑动。8.3.3使用Haar特征进行检测

2.进行检测检测过程

(1)首先把原图像按一定尺寸,划分成子窗口(这里划分为9个子窗口),子窗口按一定步长在图像中滑动。8.3.3使用Haar特征进行检测

2.进行检测检测过程

(1)首先把原图像按一定尺寸,划分成子窗口(这里划分为9个子窗口),子窗口按一定步长在图像中滑动。8.3.3使用Haar特征进行检测

2.进行检测检测过程

(1)首先把原图像按一定尺寸,划分成子窗口(这里划分为9个子窗口),子窗口按一定步长在图像中滑动。8.3.3使用Haar特征进行检测

2.进行检测检测过程

(1)首先把原图像按一定尺寸,划分成子窗口(这里划分为9个子窗口),子窗口按一定步长在图像中滑动。8.3.3使用Haar特征进行检测

2.进行检测检测过程

(1)首先把原图像按一定尺寸,划分成子窗口(这里划分为9个子窗口),子窗口按一定步长在图像中滑动。8.3.3使用Haar特征进行检测

2.进行检测检测过程

(1)首先把原图像按一定尺寸,划分成子窗口(这里划分为9个子窗口),子窗口按一定步长在图像中滑动。8.3.3使用Haar特征进行检测

2.进行检测检测过程

X2

Y2

X3

Y3

X2-Y2

边缘特征

边缘特征

线性特征

线性特征

对角特征X3的不同比例

(2)然后在每一个固定子窗口内,通过该层所有特征模以不同比例进行匹配。(3)在匹配过程中,基本特征模板会尝试检测不同的位置。8.3.3使用Haar特征进行检测

2.进行检测检测过程

(2)然后在每一个固定子窗口内,通过该层所有特征模以不同比例进行匹配。(3)在匹配过程中,基本特征模板会尝试检测不同的位置。

X2

Y2

X3

Y3

X2-Y2

边缘特征

边缘特征

线性特征

线性特征

对角特征X3的不同比例8.3.3使用Haar特征进行检测

2.进行检测检测过程

最后对该层级所有匹配结果进行综合统计。8.3.3使用Haar特征进行检测

2.进行检测模版1倍2倍3倍4倍5倍6倍7倍8倍X2√√√√√√√√Y2√√√√√√√√X3√√√√√

Y3√√√√√

X2-Y2√√√√√√√√缩放倍数的问题:举例:对于16×16子窗口,Haar特征模板以自己小于等于16×16子窗口的任何倍数为基准滑动过一遍。8.3.3使用Haar特征进行检测

2.进行检测对于X3特征模版,原始大小为3×1,在24×24的子图像窗口上进行滑动。水平可滑动22步,垂直可滑动24步,共有22×24个特征值,8.3.3使用Haar特征进行检测

2.进行检测

一个模板可以以不同的比例在不同的位置上进行滑动,每滑动一次会产生一个特征值。这样产生的特征值就会有模版类型(目前有5种类型的模板,实际更多)、大小和位置三个要素来决定。不同子窗口大小内,Haar特征的总数量窗口大小36×3630x3024x2420x2016x16特征数量8162643947251623667846032384检测出这样大量的值,怎么处理呢???8.3.4Haar特征值的计算和积分图

1.Haar特征值Haar子特征值=白色矩形像素灰度值之和-黑色矩形像素灰度值之和如果是X3或Y3模版,黑色要乘以2,以平衡各个部分的比例。特征值的正负和大小反映了矩形区域之间的亮度差异:正值:白色区域比黑色区域更亮。负值:白色区域比黑色区域更暗。绝对值大小:亮度差异的强度。8.3.4Haar特征值的计算和积分图

1.Haar特征值Haar特征值反映了图像的灰度值变化情况,如眼睛要比脸颊颜色深,鼻子两侧颜色要比鼻梁颜色深,嘴巴要比周围颜色深等。因此可以把特征模版“蒙”在要识别的图像上,通过水平和垂直滑动的来确定对象的特征轮廓。8.3.4Haar特征值的计算和积分图

1.Haar特征值

类别不同的模版,再改变大小、位置的变化,在子窗口中滑动,每滑动一次就会产生一个特征值,如X3在6*6像素大小的子窗口移动就可以产生24个特征值。25392035100115503865112102050259025603060407040508.3.4Haar特征值的计算和积分图

1.Haar特征值

要是在24*24像素大小的检测窗口内矩形特征值就达16万之多。这么多特征值,计算量(计算是为了得到特征)自然很大,为提高计算速度引入了积分图,为提高选取效率引入了AdaBoost级联分类器。8.3.4Haar特征值的计算和积分图

2.积分图

在上面特征模板的移动过程中,会产生大量的特征值,然后每次都要对这些值进行遍历才能找到对应的特征值。

积分图是提高图像特征值计算效率的方法。8.3.4Haar特征值的计算和积分图

2.积分图

主要的思想是图像某点积分图的值,是某点与起点作为对角点所形成的矩形区域像素之和。(a)原特征值

(b)积分图特征值8.3.4Haar特征值的计算和积分图

2.积分图502=25+3+9+35+100+115+38+65+112287=25+3+9+35+100+115(a)原特征值

(b)积分图特征值8.3.4Haar特征值的计算和积分图

3.计算Haar特征值

积分图一旦计算完成,就可以轻易求出原图像任意区域的像素之和,就是对象的特征值。比如计算I部分的特征值:

I特征值=I(I)+I(E)−I(H)−I(F)。

这里的I特征值指的是对应I位置的积分图值。ABCDEFGHI8.3.4Haar特征值的计算和积分图

3.计算Haar特征值利用这种方法,可以把积分图特征值计算出来,原特征值

积分图特征值

计算出来的最终特征值(边缘特种)100=163+25-60-2810011550-3006511210-225502590-185-218-261-170767这个表的计算位置并不是从第一个开始,因为是子窗口。8.3.4Haar特征值的计算和积分图

4.Haar特征值的含义

在人脸检测中,左侧特征可对应人眼区域,右边则无意义(因为人脸中,眼睛、眉毛、鼻子、嘴巴的特征都没有和右图特征一致的)。8.3.4Haar特征值的计算和积分图

4.Haar特征值的含义

通过这种的方法,我们可以逐步根据各个特征模版在子窗口的滑动进而提取各个部分的特征,从而得到人脸的特征。

上面的方法是通过修改特征模版的比例,来进行滑动产生特征值。其实也可以通过缩放图像,形成不同大小的图像金字塔如图8.3.8所示,让模版不变,在不同大小的图像上同样通过滑动来产生特征。8.3.4Haar特征值的计算和积分图

其实不论是滑动模板,还是滑动图像,其目的都是为了能找到特征。

你可以想象,你有一套俄罗斯套娃和一个球,球的大小比最大的俄罗斯套娃小,比最小的俄罗斯套娃大,为了找到球刚刚好可以放进的那个俄罗斯套娃,你可以从最小的套娃开始,一个一个的试,当最小的不行,就换一个大一点点的,如果不行,继续换一个再大一点点的,总能找到刚刚好能放进去的那个。8.3.4Haar特征值的计算和积分图讨论:这种缩放是随意的吗?如果不是,是否有比例呢?如果有比例,比例一般是多少?你一般解决复杂问题的方法是什么?8.3.5AdaBoost级联分类器要对图像目标进行检测和识别时需要对多个特征(多个条件)进行判断,直接判断过程复杂,分类器很难设计,所以才用级联的方式容易实现。例如,在识别一个图片中的动物是否是狗时,简单而快速的方法是先看是否有四条腿,再进一步看看是否有一个头,最后看看是否长有毛等,每一个判断都很简单,逐步深入,很快就能完成对狗的识别。8.3.5AdaBoost级联分类器1.AdaBoost算法AdaBoost算法是将弱学习算法提升为强学习算法的过程,主要思想是“三个臭皮匠顶个诸葛亮”。8.3.5AdaBoost级联分类器1.AdaBoost算法AdaBoost算法的核心思想是针对不同的训练数据集训练同一弱分类器,再把这些弱分类器集合在一起,构成一个强分类器。8.3.5AdaBoost级联分类器腿头毛AdaBoost算法通过调整训练数据集的权重,使得每个弱分类器专注于之前分类器未能正确分类的样本,从而逐步提高整体的分类性能‌。8.3.5AdaBoost级联分类器----1.AdaBoost算法随意画一条分类线弱分类器1AdaBoost算法通过调整训练数据集的权重,使得每个弱分类器专注于之前分类器未能正确分类的样本,从而逐步提高整体的分类性能‌。8.3.5AdaBoost级联分类器----1.AdaBoost算法加大未能正确分类的样本的权重弱分类器1AdaBoost算法通过调整训练数据集的权重,使得每个弱分类器专注于之前分类器未能正确分类的样本,从而逐步提高整体的分类性能‌。8.3.5AdaBoost级联分类器----1.AdaBoost算法再绘制一条分类线弱分类器1弱分类器2AdaBoost算法通过调整训练数据集的权重,使得每个弱分类器专注于之前分类器未能正确分类的样本,从而逐步提高整体的分类性能‌。8.3.5AdaBoost级联分类器----1.AdaBoost算法弱分类器1弱分类器2加大未能正确分类的样本的权重AdaBoost算法通过调整训练数据集的权重,使得每个弱分类器专注于之前分类器未能正确分类的样本,从而逐步提高整体的分类性能‌。8.3.5AdaBoost级联分类器----1.AdaBoost算法弱分类器1弱分类器2再绘制一条分类线弱分类器3AdaBoost算法通过调整训练数据集的权重,使得每个弱分类器专注于之前分类器未能正确分类的样本,从而逐步提高整体的分类性能‌。8.3.5AdaBoost级联分类器----1.AdaBoost算法弱分类器1弱分类器2弱分类器构成了强分类器弱分类器38.3.5AdaBoost级联分类器----1.AdaBoost算法弱分类器1弱分类器2弱分类器构成了强分类器弱分类器3思考问题,怎么确定实线问题(强分类器)?激活函数(分段函数)????8.3.5AdaBoost级联分类器----1.AdaBoost算法思考问题,怎么确定实线问题?激活函数(分段函数)旋转一下角度,就可以了后一个模型的训练永远是在前一个模型的基础上完成!策略是通过提高前一轮分类器分类错误的样本的权值,降低分类正确的样本权值,对于那些没有分类正确的样本会得到后面分类器更多的关注。然后可以产生很多的弱分类器,通过多数加权投票组合这些弱分类器,加大误差率小的分类器,减少误差率大的分类器,使其在表决中起到较少的作用。8.3.5AdaBoost级联分类器----1.AdaBoost算法8.3.5AdaBoost级联分类器----1.AdaBoost算法练习一下,这个怎么寻找弱分类和强分类器AdaBoost算法的基本步骤:(1)‌初始化权重‌:为每个训练样本分配相等的初始权重。(2)‌训练弱分类器‌:根据当前样本权重训练一个弱分类器,并计算其错误率。(3)‌更新权重‌:增加错分类样本的权重,使后续弱分类器更关注这些样本,减少正确分类样本的权重。(4)‌组合分类器‌:将所有弱分类器的加权结果组合起来,形成最终的强分类器。(5)‌迭代‌:反复执行以上步骤,直到达到所需的迭代次数或满足其他停止条件‌8.3.5AdaBoost级联分类器----1.AdaBoost算法训练数据结合策略强学习器模型1带权重1的训练集弱学习器1基于学习的误差率1更新学习器权重1模型2带权重2的训练集弱学习器2基于学习的误差率2更新学习器权重2模型n带权重n的训练集弱学习器n基于学习的误差率n更新学习器权重n根据权重1更新样本权重2根据权重n-1更新样本权重n8.3.5AdaBoost级联分类器----1.AdaBoost算法

弱分类器对所有区域完整计算,效率低,为提升效率,采用基于决策树的级联分类器。8.3.5AdaBoost级联分类器----1.AdaBoost算法级联分类器表现形式是决策树,让每一个AdaBoost出身的强分类器依次进行决策,被认为正确的就往下传递,被认为错误的就直接抛弃。8.3.5AdaBoost级联分类器----2.级联(Cascade)分类器

弱分类器1弱分类器2

stageN-1否决stage1否决stage0否决通过...每一级强分类器又由多个弱分类器组成

其中每一个stage都是代表一级强分类器。每一级强分类器又由多个弱分类器组成,强分类器和弱分类器都是树状结构。8.3.5AdaBoost级联分类器----2.级联(Cascade)分类器假设我们使用三个Haar特征f1,f2,f3来判断输入数据是否为人脸,可以建立如图所示的决策树8.3.5AdaBoost级联分类器----2.级联(Cascade)分类器

这样对于单一图像窗口,不再是单纯的匹配所有特征,而是将特征分组,用于不同层级。

往往在初始层级,使用相对粗略的特征模板进行匹配,将得到的匹配结果综合统计,看是否通过该层级设置的“层级阈值”,如果通过,才会进行下一轮特征匹配,否则就对该区域停止检测——视为“丢弃”。8.3.5AdaBoost级联分类器----2.级联(Cascade)分类器强分类器是由多个弱分类器“并联”构成,即强分类器中的弱分类器是两两相互独立的。而由强分类器“串联”组成级联分类器。8.3.5AdaBoost级联分类器----3.强分类器和弱分类器弱分类器0弱分类器1...弱分类器n强分类器的值=弱分类器0+弱分类器1+...+弱分类器n

通过Haar特征模板,就可以实现特征提取,并利用提取的特征值进行人脸局部特征(如轮廓、鼻子)的识别,再通过级联分类器来实现人脸整体的识别。8.3.5AdaBoost级联分类器----3.强分类器和弱分类器主讲:王红梅ArtificialIntelligenceandFuture人工智能与未来2035ComputerVision第8章

计算机视觉2035主讲:王红梅目录CONTENTS8.18.28.38.4计算机视觉那些事计算机视觉概述人脸识别原理人脸识别实现8.506扩展:空间智能Haar特征算法是OpenCV最流行的目标检测算法,由于其算法的简洁性,和不受环境限制的使用条件,使其在很多环境,尤其是嵌入式环境中广泛使用。本节以Python的第三方库OpenCV为例,详细描述其在人脸识别的实现和应用。8.4.1OpenCV的提供的人脸分类器OpenCV中已经内置了训练好的人脸、眼睛、鼻子、嘴巴等检测器,以*.xml的文件存在特定的目录下,一般默认是存放在opencv安装目录下源码文件夹中sources\data\haarcascades,可以实现图片或视频流的检测。8.4.1OpenCV的提供的人脸分类器OpenCV内置的haar级联模型;haarcascade_frontalface_default.xml:检测面部;haarcascade_eye.xml:检测左眼和右眼;haarcascade_smile.xml:检测面部是否存在嘴部;haarcascade_eye_tree_eyeglasses.xml:检测是否带墨镜;haarcascade_frontalcatface.xml:检测猫脸;haarcascade_frontalcatface_extended.xml:检测猫脸延伸;haarcascade_frontalface_alt.xml:检测人脸属性;haarcascade_frontalface_alt_tree.xml;haarcascade_frontalface_alt2.xml;从文件名可知这些级联检测器可用于面部、眼睛、全身等的检测和跟踪。8.4.1OpenCV的提供的人脸分类器haarcascade_fullbody.xml:检测全身;haarcascade_lefteye_2splits.xml:检测左眼;haarcascade_licence_plate_rus_16stages.xml:检测证件;haarcascade_lowerbody.xml:检测下半身;haarcascade_profileface.xml;haarcascade_righteye_2splits.xml:检测右眼;haarcascade_russian_plate_number.xml:检测俄罗斯字母车牌号;haarcascade_upperbody.xml:检测上半身。1.数据准备正如前文所描述,要实现人脸识别,首先需要采集数据,在本节我们采集数据的方式有:(1)通过提供静态图片的方法,(2)摄像头直接采集,(3)通过提供视频流的方法。

Haar级联分类器执行流程2.人脸检测其次,进行人脸检测,在本节主要通过调研OpenCV的方法来进行。3.模型训练再次,要进行模型训练,我们通过提供特定的数据集,然后调研OpenCV的方法进行训练。4.人脸识别最后用训练好的模型进行人脸识别。

Haar级联分类器执行流程1.在Python中(Python环境的配置请参考算法章节),调用第三方库OpenCV。2.需要下载资源包。并解压到D盘的根目录下,解压时选择解压到“faceDetection”,解压后的文件夹和文件如图所示。

在具体实现之前,准备工作:接下来的应用案例主要是人脸识别的具体实现,如果你没有Python基础或是不想写代码,直接体验人脸识别的实现,请直接打开下载的源代码文件即可。说明本部分的图像来自视觉中国网站。

在具体实现之前,准备工作:8.4.2调用OpenCV显示图像本案例的主要任务是实现能在Python中调用OpenCV,能正常显示图像。具体实现步骤如下:1、启动Python的IDLE,在IDLE中,用菜单“文件/打开”命令(英文版是菜单“File/Open”),打开文件夹“D:\faceDetection”中的“faceTest01-showimage.py”。2、这时就会在打开的文件窗口中显示对应的代码,代码有详细的注释和解释,主要的功能是调用OpenCV的imread方法读取图像,并用OpenCV的imshow方法显示图像。8.4.2调用OpenCV显示图像3、点击菜单“运行/运行”命令(英文版“Run/RunModule”)或按键盘上的快捷键“F5”,就可以执行命令,并调用和现实图片如图所示。说明用OpenCV调用图像成功。8.4.3进行人脸检测本案例通过调用OpenCV中的“haarcascade_frontalface_default.xml”,文件,来实现调用Haar级联分类器从而实例化人脸分类器。具体实现步骤如下:1、启动Python的IDLE,在IDLE中,打开文件夹“D:\faceDetection”中的“faceTest02-facedetection.py”。2、这时就会在打开的文件窗口中显示对应的代码,代码有详细的注释和解释,运行后,点击这个红色的按钮结束8.4.3进行人脸检测3、点击运行命令,就可以执行命令,其调用和现实图片如图8.4.3所示。说明用OpenCV检测人脸成功。8.4.4通过摄像头或视频流采集照片本案例的主要任务是通过调用OpenCV来实现捕捉摄像头或视频流的方法来采集图像,通常用于实时视频处理或视频捕获。具体实现步骤如下:1、启动Python的IDLE,在IDLE中,打开文件夹“D:\faceDetection”中的“faceTest03-camara.py”文件。2、这时就会在打开的文件窗口中显示对应的代码,代码有详细的注释和解释,主要的功能是调用OpenCV的VideoCapture方法读取摄像头或视频流,并用OpenCV的imshow方法显示图像。8.4.4通过摄像头或视频流采集照片说明:下面两种采集方式,使用其一即可。(1)当cap=cv2.VideoCapture("video\东京街头的人流.mp4")这个语句在执行的时候,采集的是同目录下“video”文件夹下的视频“东京街头的人流.mp4”,当然你也可以改变本视频。(2)当cap=cv2.VideoCapture(0)这个语句执行的时候,是采用默认的第一个摄像头,你需要保证你的设备上有摄像头才可以使用。8.4.4通过摄像头或视频流采集照片3、点击菜单运行命令就可以执行,并调用摄像头或指定的视频流如图所示。说明用OpenCV调用摄像头或指定的视频流成功。(a)调用摄像头采集

(b)调用指定的视频流采集8.4.5通过摄像头或视频流检测人脸本案例的主要任务是通过调用OpenCV来实现对摄像头或视频流的人脸进行检测,具体实现步骤如下:1、启动Python的IDLE,在IDLE中,打开文件夹“D:\faceDetection”中的“faceTest04-facedetection-camera.py”文件。2、这时就会在打开的文件窗口中显示对应的代码,代码有详细的注释和解释,主要的功能是调用OpenCV的CascadeClassifier和detectMultiScale方法来检测人脸,并用矩形框标注检测到的人脸。3、点击菜单运行命令就可以执行,调用并检测到人脸如图8.4.5所示。说明用OpenCV进行人脸检测成功。(a)通过摄像头人脸检测

(b)通过视频流的人脸检测8.4.5通过摄像头或视频流检测人脸8.4.6训练人脸识别模型本案例的主要任务是通过提供的数据集来训练一个人脸识别的模型,提供的数据集在“trainphotos”文件夹下,当然你也可以下载其它的数据集来进行模型训练。具体实现步骤如下:1、启动Python的IDLE,在IDLE中,打开文件夹“D:\faceDetection”中的“faceTest05-train.py”文件。2、这时就会在打开的文件窗

温馨提示

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

评论

0/150

提交评论