通过上两篇文章我们认识了人工智能的两类应用图像识别和姿态分析,本周我们将继续介绍新的AI应用——面部识别,作为一个创客,如果每次都是纯软件编程的话,连自己都会瞧不起自己的,所以这次我们增加了手工制作及智能硬件,全方位打造出软萌大白一只,希望大家能够喜欢。不废话先上成品图。
本次制作我们需要完成三个方面的工作:第一、大白的纸模制作;第二、利用microbit等智能硬件上的运动传感器制作互动部分;第三、利用电脑摄像头制作人脸识别部分。
接下来我们一部分一部分进行介绍,首先介绍纸模部分,大白形象是我在网上找到的图(这里感谢提供了素材的网友),然后进行了加工,下面放出加工后的原图,方便大家制作属于自己的大白。
大家用A4纸打印之后,粘贴到手工卡纸上,裁剪外廓即可。将大白脚下部分进行折叠并利用边角卡纸,制作一个三角形支架,就可以让大白稳稳站立了。
同时利用纸胶带将有运动传感器的智能硬件固定在纸模上即可,笔者选择的是teenkit(彩虹板),大家也可以换成microbit。
完成了外观的制作之后,我们现在要进行剩下两部分的工作,先利用智能硬件产生互动效果。我们可以根据智能硬件上的传感器来设计互动环节,本次只展示最基本的运动传感器互动,即让大白感受到晃动就可以改变心情值。因为我们要用scratch来编程microbit,所以我们需要通过连接蓝牙的方式来控制microbit,这里要先给microbit下载一个蓝牙连接HEX,否则无法正常配对。配对完成之后,就可以用scratch写程序控制microbit了(请使用最新版的Google chrome,笔者被坑三小时血泪经验。)
接下来我们要写出智能硬件的互动部分,为了观看方便我将他们分为了三个部分。
第一部分:主程序
主要是初始化了开关、心情值、开始时间等几个变量,同时设计了在按下B键来关闭我们的宠物,按下A键开启我们的宠物并显示心情值以及当晃动时增加宠物的心情值。程序截图如下:
第二部分:心情值持续下降程序
这一部分主要用来模拟控制宠物的心情值随时间的流逝自然下降的过程,我们没有选择显示数字,而是用三种表情代表宠物的开心程度。程序如下:
第三部分:心情值过低后死亡重置程序
主要是显示一个宠物生存时长及死亡后复活并重置心情值。代码如下:
至此整个智能硬件互动的部分就完成了,但对于我们来说还是不满意的,一个是大家可以增加更多可以和宠物互动的环节,比如增加宠物随机事件等等,另一个,宠物最大的特点之一是能认主,那么我们是否有方法让萌宠也能有这个功能呢?刚好人工智能插件中有一个负责面部识别的插件,可以让摄像头来认出人脸。如果给宠物装上一个摄像头,并利用人工智能插件来改造一下程序,宠物不是就具有了这个功能么?笔者这里偷懒了直接使用了笔记本电脑自带的摄像头,建议大家在做这个项目时可以给萌宠安装一个摄像头,这样像模像样一些。
下面我们就介绍一下如何改造我们的程序使它具备人脸识别的功能,首先我们要新增一个空白角色作为控制台。
下面我们一起来看一下控制台的代码,这里我们使用了两个人工智能插件,一个是姿态分析,来确保你确实是正面面向摄像头,一个是人脸获取,从而让宠物确定自己的主人的面部特征,用来识别谁才是主人。同时我们采用了一些语音播报的来作为提醒,大家也可以采用其他形式。角色代码如下:
注意:这里最好不要点击绿旗,单独运行完获取人脸样本后,再点绿旗开始主程序。
最后我们再介绍一下在主程序中如何增加人脸识别的积木,之前的程序除了主程序需要改动之外,其他部分都不需要进行改动。改动后的程序如下:
主要改动为:1、在开始部分增加了开启摄像头;2、在执行部分增加了人脸识别,并判断人脸识别的置信度,如果超过90(这个置信度的范围为0-100,和之前的两个插件有区别,大家不要弄错),即认为识别正确是宠物的主人,如果低于90的置信度将自动关闭,需要按下A键再次启动;3、在判断死亡时也增加了人脸置信度的判断,确保宠物所有的互动只有主人才可以看到。
至此我们整个改造就完成了,不知道大家喜欢这个项目么?另外这个项目还有很多可以完善的地方,笔者在这里抛砖引玉了,希望大家能够做出更有趣,更软萌的宠物。
有任何疑问欢迎大家前来交流,可加微信137772884134,注明进群交流。