让虚谷号认识你的朋友

2020-02-10 04:02:35 中国信息技术教育 2020年1期

于方军 宋道星

人工智能有两个重要的应用领域:语音识别和人脸识别。人脸识别属于计算机视觉的范畴,早期,人们的主要研究方向是人脸识别,即根据人脸来识别人物身份,后来,在复杂背景下的人脸检测需求越来越大,人脸检测也逐渐作为一个单独的研究方向发展起来。本文介绍的是使用百度AI开放平台的免费人脸对比功能来实现的人脸识别的搭建,用开源的OpenCV进行人脸检测:摄像头拍摄后检测到人脸,把拍摄到的人脸图像上传到百度,和保存在文件夹中的已知人脸对比,如果相似度大于百分之五十,就把已知人脸的文件名加到摄像头拍摄到的人脸图像上,进而识别出人脸。

课程设计的思路

本课例的设计步骤以体验为主,重点介绍基于开源OpenCV的人脸检测工作的过程,即先搜索到图片中的人脸,然后借助百度AI的免费人脸对比功能,使学生较好地理解人脸识别的实现原理,从而启发学生发挥创意,开发属于自己的人工智能作品。

教学过程主要体现了函数层面的模块化教学,通过将功能封装成函数,再调用函数的方法,引导学生理解人脸检测和识别的过程。

环境配置

虚谷号的固件已经预装了OpenCV,可以直接运行,上页图1是OpenCV在虚谷号中的安装位置(/usr/local/share/OpenCV)。

1.摄像头管理

OpenCV是使用cv2.VideoCapture(0)创建视频捕获的对象,参数0为默认摄像头,虚谷号外接的USB摄像头也设置为0。然后,打开一个mycamera窗口顯示摄像头捕捉的帧,用条件循环捕捉帧,按下Esc键(键值是27),保存当前帧为图片faceme.jpg,上页图2是通过摄像头捕捉图像的程序。

2.人脸检测

人脸有着共同的特征,如与脸颊相比眼部颜色较深,与眼睛相比鼻梁区域较为明亮,眼睛、嘴巴、鼻子的位置较为固定等,这些特征称为Haar特征。OpenCV利用级联分类器做人脸检测,支持类Haar特征,并自带了训练器和检测器,这里介绍的XML文件,就是OpenCV自带的检测器。在OpenCV 3的库文件中还会包含一个文件夹haarcascades,在虚谷号上的路径为:/usr/local/shanre/OpenCV/haarcascades。在这个文件夹下包含了OpenCV的人脸检测的XML文件,这些文件可用于检测静止图像、视频和摄像头中的人脸图像。这些XML文件,就是OpenCV在GitHub上共享出来的具有普适性的训练好的数据,可以直接拿来使用。图3是在摄像头管理程序基础上又加了人脸检测的Python程序。

然后,在读取摄像头帧数据后,通过face_cascade=cv2.CascadeClassifier('./FaceRecognition/haarcascade_frontalface_default.xml')加载人脸检测器。其中,FaceRecognition的文件夹用来存放OpenCV源文件里面检测人脸的XML文件,并和主程序放在同一个文件夹里方便使用。接着,进行如下步骤:

①gray=cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY),彩色图片变成灰度图片,简化图像的信息。

②faces=face_cascade.detectMultiScale(gray, 1.3, 5),检测人脸,调整函数的参数可以使检测结果更加精确。

③for(x, y, w, h) in faces:img=cv2.rectangle(frame, (x, y), (x + w, y + h), (255, 255, 0),在检测到的人脸上画出方形。

3.人脸识别

进行人脸识别,首先要前往百度AI开放平台申请开发者账号,进入人脸识别控制台创建一个新的应用,并记下自己的AppID、API Key和Secret Key。接着,在程序所在的文件夹建立一个FaceFile的文件夹用来存放已知人脸的图片,图片文件名为图片人脸的真实名称,如yu.jpg。上页图4是将两张图片上传到百度AI开放平台的操作函数,会被后续的主函数调用。最后,通过result=Mactch('faceMe.jpg',tag)把摄像头采集的图片,和FaceFile文件夹中的保存图片对比。

用识别结果控制舵机制作智能门锁

用虚谷号完成对舵机的控制,首先要导入虚谷库,并做相应的设置。这里设置为用虚谷号12脚控制舵机。识别出是人脸文件夹中的熟人,控制舵机转动一个角度,打开门5秒钟,5秒钟后关上门,具体程序如图5、图6所示。

基于虚谷号的人脸识别可以开发的功能丰富,既可以从小处着手,开发小型的适合一个学生独立完成的项目,也可以开发比较大型的适合团队完成的项目。在本课例中,可以使用虚谷号完成人脸识别的智能门锁,也可以开发人脸识别的签到系统,在完成作品的同时,不只是学习人工智能的应用技术,更重要的是在教育活动中融入了创客精神和内涵,培养学生的创新意识和实践能力,这也正是虚谷号的初心与坚持所在。

?
广东快乐十分