11.1 图像识别的准备工作
11.1.1 从电影走进现实
早在1968年,经典的科幻电影《2001太空漫游》描述了这样一个片段:影
片中的赫伍德教授在登陆环形空间站时,需要进行一个“声影测试”的身份验
证,验证通过才能进入。这也是当时人们的美好愿望,希望到了21世纪,我们
不再需要验证任何账号密码,计算机根据我们的脸或声音就能识别出我们的身
份。
经过近50年的发展,人脸识别技术从电影的幻想逐渐走进了人们的日常生
活,成了我们日常安检、考勤、支付等不同领域的得力助手。同时国内外的算
法团队不断刷新人脸识别的准确率,相关的产品与应用层出不穷,人脸识别技
术一时间成了最热门的生物特征识别技术。这一切的背后得益于图像识别技术
的蓬勃发展。
对于人类来说,视觉是与生俱来的,从小我们就能通过眼睛接收外界的景
象。虽然小时候我们不太认得每个东西是什么,但是我们已经具备识别物体的
能力。婴儿能够感知到什么样的物体在其面前,这个物体的边界在哪里,只是
还不会表达这是个什么样的物体。人类识别图像的过程并非将过往看到的画面
全部存储,然后再把当?看到的画面与过往画面进行比对以识别物体,而是依
靠物体的特征对物体进行分类,通过各个类别所具有的特征将物体识别出来。
随着不断的学习,很快我们能分清楚眼中看到的哪些是树,哪些是房子,哪些
是小鸟。在这个过程中,我们的大脑会根据存储记?中物体的特征对图像进行
辨认,查看是否存在与当前看到的物体具有类似特征的存储记?,从而识别出
眼前看到的是什么物体。值得庆幸的是,识别与分类这两件事对正常人来说是
一件非常简单的事情。
机器的图像识别技术也是如此,计算机若想跟人类一样能够辨别看到的物
体,同样需要具备识别物体与分辨物体的能力。首先识别到是什么物体,物体
在哪里,然后通过分类并提取重要特征达到识别图像的目的。计算机提取出的
特征在很大程度上直接影响了识别图像的准确率,但是计算机并非每次提取的
特征都能够满足我们的需要。上述每一个任务对于计算机来说都有一定的难
度。因此接?来,我们将探究图像识别的原理以及面临的问题,并分析科学家
是如何用一种特殊的神经网络来解决这些问题的。
人类的眼睛就像是一个接收器,而大脑则是一台超级计算机。大脑每时每
刻都在从眼睛接收图像,并在我们毫无意识的情况?完成了对这些图像的处
理。但机器并非如此,在机器中图像识别大致可分为以?几个步骤:图像采
集、图像预处理、特征抽取和选择、分类器模型设计和分类决策。在这个过程
开始之前,首先我们要知道一幅图像对于计算机来说意味着什么,然后理解计
算机如何表达一幅图像,进而读取图像、识别图像。
11.1.2 图像的表达
在计算机的世界里,每一幅图像都是由大量的小格子组成的。一个小格子
代表一个色块,我们常说的数字图像就是指用不同的数值来表示不同的颜色的
图像,这样一来,一幅图像可以用一个数字矩阵来表示。也就是说,这一整个
矩阵就是一幅图像的数字表达形式。图像的小格子称为像素,格子的行数与列
数统称为分辨率。比如我们常说的某幅图像的分辨率是1920×1080,指的是这
幅图像由1920行、1080列的像素点组成,如图 11-1 所示。反过来说,如果给
出一个由数字组成的矩阵,我们同样可以将矩阵中每个数值转换为对应的颜
色,再组合起来,还原这张图像原本的样子。
图像一般分为灰度和彩色两种。对于灰度图像,像素点间的区别只在于明
暗程度不同的灰色,因此可以用数值来表示不同的灰度,通常我们认为白色是
最亮的“灰”,用255表示;黑色是最暗的“灰”,用0表示,介于0~255之间
的整数表示明暗程度不同的灰色。
对于彩色图像,每个颜色所代表的这些数字不是随机生成的。常见的编码
方式有RGB模型与HSV模型两种。在RGB模型中,每一个像素的颜色都是由红、
绿、蓝三个通道混合组成的,也就是说每个颜色都是由这三个基础颜色混合而
成的,如图11-2所示,对于每个通道,都可以用一个八位的二进制数来表示明
暗程度。因此,我们还是用0~255之间的整数来表示这个通道不同程度的明暗
变化。例如橙色的RGB值为(255,97,0),表示橙色由255份红、97份绿混合而
成,某种基本颜色的数字越大,表示该基本颜色的比例越大。
另一种常用的色彩模型HSV则是采用色调、饱和度、明度这三个分量来表
示不同色彩,如图 11-3 所示。色调表示色彩信息,即这个颜色所处的光谱颜
色的位置。该参数用角度来表示不同的颜色,就像调色盘一样,其中红、绿、
蓝分别相隔120°;饱和度是一个比例值,范围为 0%~100%,它表示所选颜色
的纯度和该颜色最大的纯度之间的比率。当纯度为0时,表示只有灰度没有色
彩;明度表示颜色的明亮程度,通常取值范围为0%(黑)~100%(白)。对于
光源色,明度值与发光体的光亮度有关。对于物体色,明度值和物体的反射比
有关。例如蓝色的HSV值为(240,1.0,0.4),而浅蓝色为(240, 0.4,1.0),
每个数字对应的含?不同。
在图像识别领域,通常用RGB模型来描述像素点的不同颜色。因此一幅彩
色图像可以用一个由整数组成的立方体阵列来表示,我们称这样的数字阵列为
三阶张量。这个三阶张量的长度与宽度为图像的分辨率,高度固定为3,表示
由R、G、B三个颜色通道组成 。有了这样的表示方式,我们就完成了令计算机
理解图像的第一步,即多彩的图像被转变成了数字,并且保留了原有图像的特
点。
11.1.3 图像采集与预处理
在前文中我们提到,图像识别主要分为以?步骤:图像采集、图像预处
理、特征抽取与选择、分类器模型设计和分类决策,如图11-4所示。
图像采集是整个图像识别过程的第一步,主要借助于数字摄像机、扫描
仪、数码相机等设备经过采样数字化得到静态图像,也包括一些动态图像。
获取图像的目的是从扫描仪中的传感器获取数据并产生数字图像。但是传
感器输出的是连续的电压波形,因此需要把连续的感知数据转换为数字形式再
转码成图像。这一过程通过图像的取样与量化来完成。数字化坐标值称为取
样,数字化幅度值称为量化。在取样时,横向采取的像素数量与纵向采取的像
素数量相乘即是该图像采集时的分辨率。一般来说,采样间隔越大,所得图像
像素点数越少,空间分辨率越低,图像质量越差,严重时甚至会出现马赛克现
象;采样间隔越小,所得图像像素点数越多,空间分辨率越高,图像质量越
好,但数据量大,如图11-5所示。
量化等级表示在数字图像中每个像素点的取值范围。常用的量化等级有
2、64、256、1024、4 096、16 384等。在量化时,采用的量化等级越高,所
获得的图像层次越丰富,分辨率越高,图像质量越好,但同时数据量较大;采
用的量化等级越低,图像层次越不明显,灰度分辨率越低,这会导致出现假轮
廓现象,且图像质量差,但数据量小,如图11-6所示 。
从以上两个图中的效果对比可以看出,数字图像的质量在很大程度上取决
于取样和量化中所用的样本数和灰度级,因此根据需求决定取样量化标准是采
集任务的关键。
我们在前文中讲解搭建“信用卡逾期风险评估”的模型时说过,采集到的
初始样本数据会存在各种问题,需要经过数据清洗等预处理才能供模型使用。
同样,通过采集得到的图像并非直接让计算机识别,这些图像也存在各种各样
的问题,我们需要通过图像预处理技术让图像变得更容易被计算机识别,常见
的预处理技术如图 11-7 所示。我们采用去除噪声、提高图像清?度、图像增
强等一系列的方法提高图像的质量。无论采用什么方法,最终的目的都是希
望能够使图像中物体的轮廓更清晰,细节更明显,从而强化图像的重要特征
。
经过以上步骤之后,可以得到一幅清?、分辨率较高的图像。图像对人眼
来说是层次感分明的,我们可以清?地看到每个物体的轮廓。但是对计算机来
讲,这可不是一件容易的事情,因此,接?来我们要想办法告诉计算机,这幅
图像描述的是什么,才能让它进行正确的分类或识别。
?一步我们要进行特征的选择与提取。先回想一?,当我们向别人描述两
个其从未见过的物体时会如何描述呢?通常我们会对这两个物体的特征进行对
比。例如描述一张桌子和一架飞机时,我们说“有四条腿”的是桌子,“有机
翼”的是飞机。通过这俩简单的特征就能区分这两类物体的图像。但是对于计
算机来说,一幅图像就是以特定方式存储的数字矩阵,让计算机通过计算,从
这个数字矩阵里提取“有四条腿”“有机翼”这样的特征是极其困难的事情。
那么什么样的算法适合去学习这些特征呢?我们首先能想到的当然是拥有
强大表现力的神经网络。理论上我们可以用常规的BP神经网络来学习图像的特
征。但在实际操作中我们会发现,使用这种方法的成本非常高。假设我们拿一
幅 720 像素×1080像素的常规图像,输入神经网络模型时会形成720×1080个
输入数据,再加上大量的参数运算,计算机的计算量会增加到难以想象的程
度。此外,采用神经网络识别特征很容易产生过拟合的现象,所以不仅增加计
算支出,还会削弱面对新数据时的识别能力。因此计算量与过拟合这两方面的
问题都让BP神经网络在图像特征学习面前举步维艰。