03 第3 章 CHAPTER 3 3.1 识别黑白色 3.2 颜色识别 3.3 图像识别和人脸识别 “能看”的机器人—— 颜色及图像识别 52 人工智能与开源硬件 主题背景 在第2 章中,我们已经了解了机器人能够和人类进行语音交互,人类可以使用自 然语言与机器进行交流。既然机器能够像人一样有听觉,很多人也一定会想,机器能 否像人一样有视觉呢?在本章的内容中,我们就来介绍一下机器视觉。面部识别在人 们的生活中已经非常常见了,例如人们运用人脸识别技术进行安全支付,还可以实现 大型会议的快速签到等,这些都运用了机器视觉的技术。在本章中,我们将从黑色识 别到彩色识别再到面部识别进行讲解,让大家了解机器是如何“看见”我们的。 知识结构 本章知识结构如图3-1 所示。 图3-1 知识结构 3.1 识别黑白色 在超市结账的时候,收银员通过扫描货物上的条形码来识别货物的价格信息,条形 码是由许多黑白相间的竖条组成的,里面包含了商品的价格信息;在机器人比赛中,很 多任务是用巡线的方式完成的,场地上的黑条能够引导机器人到指定位置。本节就给大 家介绍一下巡线传感器。通过巡线传感器可以让机器人识别出黑白两种颜色。 本节所讲的传感器属于光电传感器。 3.1.1 巡线传感器 如图3-2 所示是一款非常常用的巡线传感器。一般而言,巡线传感器主要由一个红 外线发射二极管和一个红外线接收二极管组成。传感器工作时,发射二极管发射出红外 第3章 “能看”的机器人——颜色及图像识别 53 线,当地面或者场地颜色为黑色时,会吸收红外线,接收二极管几乎接收不到反射的红 外线,接收管不会导通;反之,接收二极管导通,电路再将信号转换成电平高低,由 控制器进行识别。在图3-2 中,能够很清楚地看到红外线发射二极管和红外线接收二极 管。一般的巡线传感器只能识别出黑、白两种颜色或“1”“0”两种状态值,具体何种 颜色是“1”,何种颜色是“0”,可以通过串口的方式读取相应的数值。 图3-2 巡线传感器 3.1.2 红外线接近开关 红外线接近开关是一种应用广泛的传感器,外观如图3-3 所示。在很多伸缩门的 侧面都装有这个传感器,以防止关门时意外的发生。红外线接近开关与巡线传感器的 原理基本相似,是一种集发射与接收于一体的光电传感器。与巡线传感器相比,它的 检测距离更远,一般可以达到3~80cm。检测距离可以根据需要通过传感器尾部的旋 钮进行调节,如图3-4 所示,且有灯光提示。 图3-3 红外线接近开关的外观图3-4 红外线接近开关尾部的调节旋钮 3.1.3 任务实践 熟悉了上面两种传感器的工作原理后,就可以运用这两种传感器完成一些简单的 小任务了。在任务中大家可以感受两种传感器的基本功能,可以边实践边思考,拓展 54 人工智能与开源硬件 出更多的应用领域,设计出更多的实践项目。 1. 黑白分明 1)任务要求 使用巡线传感器检测黑色与白色,并通过点亮 不同的LED 给出提示。 2)任务分析 任务要求根据识别的不同颜色,LED 给出不同 的反应,因此要用到程序设计中的分支结构。通过 传感器的判断,检测到不同颜色时,输出信号点亮 不同颜色的LED。由于程序是不断循环运行的,如 果希望LED 能够重复提示,需要及时熄灭。 我们使用开源硬件平台Arduino UNO 作为主控 板,将传感器连接在Arduino UNO 的4 号引脚上, 两个不同颜色的LED 分别连接在7、8 两个引脚上。 使用Mixy 编程软件,对应代码如图3-5 所示。将 图3-5 所示的程序下载到控制器中,可查看效果。 3)成果展示 当程序下载到主控板中之后,就可以找一个黑 白的图片进行测试了。当我们手持传感器,将其放 在黑色区域时,图中左侧的LED 点亮,如图3-6 所 示,而当传感器放在白色区域时,图中右侧的LED 点亮,如图3-7 所示。 2. 识别颜色并计数 1)任务要求 通过传感器识别黑色或白色,然后记录识别不 同颜色的数量。 2)任务分析 在任务“黑白分明”中,我们能够运用传感器 检测黑、白颜色。在本任务中,我们需要记录识别 图3-5 项目“黑白分明”的程序图 图3-6 传感器放在黑色的区域 图3-7 传感器放在白色的区域 mind+ 平台 第3章 “能看”的机器人——颜色及图像识别 55 颜色的次数,这就要设置一个能够存储记录数据的空间,类似于一个暂时存储数据的 “储物柜”或“容器”。也就是通常所说的变量,要建一个变量用来实时存储识别到的 颜色次数。 在一些机器人竞赛中经常会遇到这种任务,例如机器人从起点出发经过三个路口 后右转。这时,就可以通过传感器对路口进行识别并记录数量,从而引导机器人在正 确的位置转向。通常把这种方式叫作“数线”或者“数路口”。 大家可以根据上述思路设计程序,此处给大家提供一个参考的Mixly 程序,如 图3-8 所示,程序中引入两个整数型变量,用来记录识别到的黑、白线的数量。根据 传感器识别到的颜色状态,引起变量的变化并记录数据。 3)成果展示 图3-8 中的程序只是实现了计数的功能,再添加对应的输出代码就能将这个数据 通过串口发送给计算机,或是通过连接到Arduino UNO 的显示装置显示出来。图3-9 就是通过外接数码管显示出对应的值。 图3-8 颜色识别并计数的程序图3-9 通过外接数码管显示对应的值 3. 制作模拟条码扫描器 1)任务要求 制作一款能够识别黑、白色的模拟条码扫描器,当传感器检测到黑色时发出 “滴”的警报音,遇到白色则停止。 2)任务分析 本任务用到的传感器是广州中鸣数码科技有限公司的一款模拟量的光电(颜色) 传感器。这款传感器不仅能够识别出黑色和白色,还能够识别出其他颜色,如绿色、 红色等,这为我们设计更加复杂的程序提供了可能。使用这种传感器之前,首先要做 56 人工智能与开源硬件 的一项工作就是“测光值”,即测量在不同环境下、不同颜色对传感器反馈出来的数 值。然后,设置程序时就可以为不同颜色设置相应的阈值,从而引导机器人完成任务。 图3-10 所示为参考程序,这个程序对应的软件是中鸣机器人的编程软件。 图3-10 模拟条码扫描器参考程序 在程序中,将光电传感器连接在控制器的 P1 端口,经过测量“光值”并确定相应的阈值 后,进行判断。 3)成果展示 将对应的传感器和主控制器拼接在一起,完 成的条码扫描器如图3-11 所示。 拓展阅读 在“模拟条码扫描器”的任务中,程序通过识别黑、白色能够控制蜂鸣器的发 声,结合3.1.3 小节任务实践2 的计数功能,你是否可以拓展出更多有意思的任务呢? 尝试一下,如果第一次检测到黑色,程序控制蜂鸣器发出“哆”,第二次发出“来”, 依此类推,是否可以让蜂鸣器演奏出一首曲子呢?图3-12 所示是歌曲《我和我的祖 国》曲谱片段,尝试一下,让机器人完成这首乐曲的演奏吧。 图3-12 歌曲《我和我的祖国》曲谱片段 图3-11 拼接完成的条码扫描器 第3章 “能看”的机器人——颜色及图像识别 57 3.2 颜色识别 大家在网络或者一些展会上或许见过一款让人印象深刻的机器人——魔方机器 人。魔方机器人能够在几秒的时间内完成对魔方的还原,其还原速度堪比魔方高手。 魔方机器人是通过什么方式在短时间内迅速识别魔方的状态呢?据了解,魔方机器人 可以通过摄像头对颜色进行识别,然后根据程序中的相应算法完成魔方的还原。所以 要想顺利完成魔方还原的任务,机器人准确地识别出颜色就成为关键一环。随着人工 智能技术的发展与进步,很多厂商都开发了简单易用的颜色和图像识别传感器(摄像 头)。在本节内容中,我们就来给大家介绍一些识别颜色的传感器。 3.2.1 颜色识别传感器及原理 在讲解颜色识别传感器之前,先了解一下光的三原色,也就是常说的RGB(红 色、绿色、蓝色),各种颜色都可以由这三种颜合混合而成。例如猩红色可以用RGB (220,20,60)混色表示出来。由此可以知道,机器在进行颜色识别时,并不是直接 “看到”颜色,而是将颜色转化成相应的数据,再由机器进行识别。 对于颜色识别传感器来讲,当选定一个颜色的滤波时,传感器就会阻止其他原色通 过而只让选定滤波的颜色通过。例如,当选择 红色滤波时,传感器只让红色通过,而阻止绿 色和蓝色。同理,如果选择绿色滤波,传感器 会阻止红色、蓝色。通过某种颜色的滤波可以 得到某种颜色的光强,再通过传感器对光强进 行分析,从而达到识别颜色的目的。图3-13 所示是一个典型的颜色识别传感器。 3.2.2 Pixy2 颜色识别传感器 3.2.1 小节介绍的是用颜色传感器识别颜色,本小节介绍一种更加常用的颜色识别 方式——摄像头识别。Pixy2 是一款开源的视觉传感器,如图3-14 所示,它不仅支持 颜色识别,还能够识别特定的物体。在传感器上搭载有一个处理单元,它通过其处理 器内部的算法,以颜色为中心来处理图像数据,选择性地过滤无用信息,从而得到有 图3-13 颜色识别传感器 58 人工智能与开源硬件 效信息。也就是说,经过处理器处理后的信息才会发送到控制系统中,经过处理的信 息可以减少控制器的运算量,更好地满足不同任务的需求。 在使用传感器时要注意,由于传感器使用的是基于色调过滤算法进行识别的,所 以在实验过程中最好选择颜色鲜艳的物体。图3-15 中的物体和颜色就更容易被识别 出来。 图 3-14 Pixy2 传感器 图 3-15 鲜艳颜色的物体 3.2.3 任务实践 相比于3.1 节中的巡线传感器,颜色传感器能够识别出更多的颜色,也能完成更 多的任务。在很多人工智能项目中,都可以采用这种传感器完成相应的任务。例如追 踪某种颜色。 1)任务要求 选择一个颜色鲜艳的物体,让Pixy2 实现对其的追踪。 2)任务分析 给Pixy2 通电,当Pixy2 启动时,板载的LED 会经过一系列的闪烁。等LED 熄 灭后就可以开始让Pixy2 学习识别物体了。按住Pixy2 顶部的按钮,大约1s 后,LED 将亮起,先是白色,然后是红色,接着是其他颜色。当它再次变为红色时,松开按 钮,表示要开始学习第1 种颜色特征了。 释放按钮后,Pixy2 将进入所谓的“光管”(light pipe) 模式,LED 的颜色是 Pixy2“锁定”到的物体颜色,Pixy2 将锁定在其视频帧中心的物体上。将物体直接 放在Pixy2 前面,距离镜头15cm 左右,Pixy2 使用区域增长算法确定哪些像素是对 第3章 “能看”的机器人——颜色及图像识别 59 象的一部分、哪些像素是背景的一部分,并使用这些像素创建对象的统计模型,以便 在不同光照条件下可靠地检测它。使用LED 颜色作为反馈来确定Pixy2 是否对对象 有良好的锁定,通过以下现象进行判断: Pixy2 锁定在物体上时,LED 的颜色应 与物体的颜色相匹配。LED 越亮,锁定 越好。 稍微移动对象,看看是否可以最大 化LED 的亮度。查看PixyMon 窗口中 的区域增长网格,观察网格的大小如何 与LED 颜色和亮度相对应。覆盖更多对 象的网格优于仅覆盖部分对象的网格, LED 会更亮。图3-16 显示的是覆盖了物 体大部分的网格(锁定良好)。 3)成果展示 多次试验后就可以熟练掌握通过观察LED 判断Pixy2 是否有一个良好的锁定,接 下来就可以教Pixy2 学习新物体而无须使用PixyMon 了。 对锁定满意后,松开Pixy2 上的按钮,LED 会闪烁几次,表明Pixy2 已经“学会” 了你的物体。现在它开始跟踪物体。图3-17 所示的两张图片是传感器调整稍差的效 果,其中左图阈值过大,右图阈值过小。 图3-17 传感器识别较差的效果 图3-16 Pixy2 传感器使用效果 60 人工智能与开源硬件 图3-18 展示了一张识别效果较好的图片,可以看到特征检测都集中在紫色恐龙 身上。 图3-18 Pixy2 传感器识别较好的效果 拓展阅读 颜色识别对于控制系统来说是输入端,能够将经过处理的图像传给控制器。我们 还可以结合输出端的特点进行创意设计。例如,在输出端让控制器控制一个小车电 机,在传感器的作用下,让小车追踪不同颜色的物体(小球)进行运动。 3.3 图像识别和人脸识别 随着人工智能技术的快速发展,很多人工智能技术已经被应用在人们的日常生活 中。例如乘坐火车进站的时候,需要在一个闸机前刷身份证,将身份证上的照片与乘 车人进行比对,以确认身份。又如,很多商店也利用人工智能技术将结算方式进行升 级,人们选择了相应的食品后,只需将食品放在摄像头下,屏幕上就会出现付款二维 码。这些都运用了图像识别的技术,这些技术的应用为我们的生活带来了更多的安全 与便捷。本节将介绍图像识别技术。