基于图形化编程工具的青少年人工智能教育的实现
2020-07-07李忠玉张杰王惠清
李忠玉,张杰,王惠清
(1.成都师范学院计算机科学学院,成都611130;2.西南医科大学医学信息与工程学院,泸州646000)
0 引言
随着新兴技术的不断发展,各种新技术产品及其衍生物正逐渐进入我们的生活;例如移动支付、智能设备、智慧城市、智慧农业、机器人等等极大的便利了我们的日常生活;然而这些新兴技术产品各种功能的实现均需要靠编程来实现。
远在古希腊时期,发明家们就梦想着能创造自主思考替代人类工作的机器;当人类在第一次构思可编程计算机时,就已经开始思考如何让计算机变得智能。当下,人工智能已经成为了一个具有相当广泛实际应用和诸多研究方向的领域,并且正在迸发着勃勃生机[2]。人工智能(Artificial Intelligence),英文缩写为AI,是一门由计算机科学、控制论、信息论、语言学、神经生理学、心理学、数学、哲学等多种学科相互渗透而发展起来的综合性新学科[5]。人工智能大致经历了萌芽期,成长期;2017 年AlphaGo 战胜围棋界的顶尖高手开始,引发了人们对人工智能的广泛关注,人工智能由此进入了高潮期,同时也引发了人们的担忧,未来机器是否完全可以取代人工所有的工作;这种忧虑其实不是非常必要,因为机器也是按照人类预先设定的算法程序来工作的,即按照人类想法来工作,那么这里面算法程序就是机器的大脑;在人工智能时代的背景下,程序设计就成为了核心。世界各国为了争先抢占人工智能技术领域,储备人才,已经有20 多个国家陆续将青少年编程作为了重要的基础教育部分;调查研究[8]发现在美国,青少年编程教育浸透率高达44.26%,在英国,接近11%。2017 年7 月,我国《新一代人工智能发展规划的通知》中提出:将人工智能发展作为国家战略层面系统布局,抢抓人工智能发展的重大战略机遇,构筑我国人工智能发展的先发优势,加快建设创新型国家和世界科技强国,这就要求快速大量的储备人工智能人才;因此在高等教育层面各大高校紧跟政策纷纷设立人工智能学院,在基础教育层面多省市在中小学校园开始设立信息技术课,让青少年学习编程,推广青少年编程教育,培养青少年程序设计思维[3]。
1 图形化编程工具介绍
随着世界范围内对青少年编程教育的重视程度越
来越高,图形化编程工具渐渐进入了人们的视野并变得流程起来,从国外著名的Scratch 到国内各大创客公司开发的图形化编程集成工具包、套件包都显示了该领域迅猛的发展势头。传统的程序设计模式都是在集成开发环境的字符环境中进行编程,对于多数高校学生上手都比较困难,更别说青少年;由此图形化编程营运而生,相较于传统的编程模式,图形化编程更加的方便、易于上手,整个程序的编写过来类似于图形的拼接,更能激发青少年对于成本的兴趣;整个程序编写的过程中将一条条字符指令变成图形,通过类似搭积木的方式通过拖拽就能实现程序的功能,将枯燥的代码通过图形化的小游戏来实现。目前比较主流的图形化编程工具有麻省理工学院的“终身幼儿园团队”开发的图形化编程工具Scratch,还有一些都是基于Scratch 进行的二次开发。北京师范大学教育学部创客教育实验室傅骞教授团队开发的图形化编程软件Mixly[8],该软件使用图形化编程的方式自动生成Arduino 代码,并支持编译和烧录到对应硬件设备中。
1.1 Scratch介绍
Scratch 由麻省理工学院开发的面对少年的一款免费下载和使用的简易编程工具,能让孩子们体会编程创作的乐趣。本节介绍的二次开发版本Arduino-Scratch 界面如图1 所示。
该编程工具可以在Scratch 和Arduino 模式下任意切换,编程过程是通过选择对应的角色,并给选定的角色设定控制模式,对于学生初级编程具有良好的应用场景。
1.2 Mixly介绍
Mixly,中文名为米思齐,全称为Mixly_Arduino,是一款由北京师范大学教育学部创客教育实验室傅骞教授团队开发的图形化编程软件[6]。该软件使用图形化编程的方式自动生成Arduino 代码,并支持编译和烧录到对应硬件设备中,在人工智能编程方面,其有一个专用的人工智能模块,可结合百度AI 开放平台完成一些易于青少年理解的人工智能案例。其界面如图2所示。
图2 Mixly开发界面
2 基于Mixly的人工智能编程实现
米思齐图形化编程工具中有人工智能模块能够结合百度AI 开放平台实现若干人工智能技术。本节将着重介绍Mixly 编程实现语言合成、图像识别和文字识别。
前文阐述利用Mixly 编程完成人工智能技术需要结合百度AI 开放平台,首先需要在百度AI 开放平台成功创建应用,如图3 所示。
图3 百度AI开放平台创建应用界面
2.1 语音合成实现
语音合成系统一般分别四个部分:文本输入、文本分析、语音合成与输出文件。
(1)文本输入:输入语音合成的文本;
(2)文本分析:主要是分析传入文本中的词性标注、韵律预测、多音字消除歧义以及句子中的单词边界等;
(3)语音合成:主要是通过读入(2)中的分析结果,并对语音部分结合文本信息进行建模;
(4)输出文件:主要是利用输入的文本信息和训练好的声学模型,生成语音信号进行输出。
本节利用Mixly 编程实现语音合成:“高德导航为您服务,导航正式开始,前方20 米左转,然后上桥。”并将生成的文件保存在navigation.mp3 中,并能播放。
在编程环境中选择Mixly 软件的mixpy 版本,并将在百度AI 开放平台创建的任务的AppID 号、API Key编号及Secret Key 编号填入编程模块如图4 所示。
图4 模块选择及任务号输入界面
选择人工智能模块中的语音合成模块,如图5所示。
图5 语音合成模块
语音合成模块包括3 个参数:客户端、内容和属性;需要首先初始化语音合成客户端,内容模块就是要合成的语音内容,属性是指可以对合成的语音进行细节性的设置,例如:语速、语调及音色等,可以采用默认设置。在利用Mixly 实现语音合成步骤如下:
(1)在人工智能模块中选择初始化模块,在选择语音技术初始化,然后根据百度AI 开放平台任务信息填写相应的参数,如图4 所示;
(2)由于合成的语音最终需要输出所以在人工智能模块中拖出语音合成模块,在输入输出模块中拖出打印模块并连接在一起,如图6 所示。
图6 语音合成及打印模块
(3)为了将语音合成的文件写入到任务要求的文件中,拖出文件模块下的打开文件模块,将名称改成项目要求的navigation.mp3,如图7 所示。
图7 打开文件模块
(4)将合成的语音模块写入文件并播放;此步骤先将文件模块下的写入文件模块拖出,删去打印模块,再将语音合成内容改成项目要求内容,最后拖出文件模块下的使用系统默认软件打开文件,合并模块,如图8所示。
图8 文件播放模块
在系统中采用默认方式播放合成的语音,运行结果如图9 所示。
由图9 所示,图左边是用电脑系统默认的MP3 播放语音合成的文件,右图是Mixly 的编程界面,可以看出使用Mixly 人工智能模块结合百度AI 开放平台能够较为容易的实现,其模块对应的代码如图10 所示。
在Mixly 中每个模块对应一段代码,学生通过在模块界面拖拉对应模块就能实现,方便与且易于操作,同时程序运行的结果一目了解紧贴生活,能极大激发青少年的兴趣。
图9 运行结果
图10 代码展示
2.2 图像识别实现
通常情况下图像识别分为三个过程:预处理、特征提取和分类器设计。
(1)预处理:通常是指对图像进行去燥、平滑、变换等操作,用以加强图像的重要属性特征;
(2)特征提取:根据图像的信息,通常指颜色、亮度等得到物体的轮廓,然后根据轮廓对应的数据来确定轮廓的内容的物体特征;
(3)分类器设计:通过训练得到物体的属性,通过属性得到特征的分类,增强图像识别的准确度。
本节阐述利用Mixly 实现图像识别的过程,项目任务:将图片中的物体识别出来,并显示名称。
(1)在人工智能模块中选择初始化模块,再选择图像识别初始化,然后根据百度AI 开放平台任务信息填写相应的参数;在人工智能模块中选择图像识别代码块,图像识别模块有四个分类,客户端及属性等均与语音合成模块相同,其功能模块是用来选择识别的场景,例如:通用物体、植物、动物及车辆等,该项目选用通用物体,图片选项是用来选择待识别的图片所在的位置,其参数特征如图11 所示。
图11 图像识别模块展示
(2)在文件分类选项中选择打开文件模块,并将模式设置为二进制读;在人工智能模块中拖拽出选择并获取单个文件名模块,与打开文件连接;同时在文件模块中拖出从文件读取内容模块与图形识别模块的图片接口相连接。在输入/输模块中拖出打印自动换行模块,同时在人工智能模块中拖出获取结果模块,连接在打印与图形识别模块的中间,此时运行可以得到相应的结果;如图12、图13 所示,左边为水果图片,左边为运行结果。
图12
图13
从运行结果图12 可以看出,左边为樱桃图片,通过编程后运行结果显示可以准确的识别图片中的物体;图13 左边为原图杨桃,右边的运行结果准确的显示了图片中的物体。说明通过编程实现了项目任务。
2.3 文字识别实现
计算机识别图片中的文字一般分为三步步骤:图片预处理、特征提取和分类器分类;
(1)图片预处理:通常是对原始图片进行灰度化、二值化、降噪矫正及字符分割等环节;
(2)特征提取:指根据识别的语言,提取字符相应的特征;
(3)分类器分类:根据合适的训练分类器根据得到的特征获取相应文件内容。
本节项目使用Mixly 软件编程实现图片中的文字识别,并显示出来。其实现过程如下:
(1)在人工智能模块中选择初始化模块,再选择文字识别初始化,然后根据百度AI 开放平台任务信息填写相应的参数;在人工智能模块中选择文字识别代码块,文字识别模块有四个分类,客户端及属性等均与图像识别模块相同,其功能模块是用来选择文字识别的场景,例如:印刷文字、手写文字及证件等多个场景,本项目选用通用文字识别,图片选项是用来选择待识别文字的图片所在的位置,其参数特征如图14 所示。
图14 文字识别模块
(2)同图像识别操作一样,在文件分类选项中选择打开文件模块,并将模式设置为二进制读;在人工智能模块中拖拽出选择并获取单个文件名模块,与打开文件连接;同时在文件模块中拖出从文件读取内容模块与文字识别模块的图片接口相连接。在输入/输模块中拖出打印自动换行模块与文字识别模块相连,执行结果如图15 所示,其中左边为原始图片的文字,右边为运行结果。
图15 中右图运行结果的下方可以看出,运行结果通过一行显示,如果文字过长的话,通过一行显示看起来不方便,所以可以通过如下操作完成识别文字的换行显示;首先将字典分类中的获取键对应值模块拖出,将获取键值改为words_result,并将该模块与文字识别模块相连;然后点击变量列表将变量赋值模块拖出,并将变量命名为list,并将该模块放于打印模块的上方,在将变量模块中list 变量拖出放在打印模块的结尾;为了将文字中的每一项每一个条目都显示出来,需要用循环完成,将控制分类中的对每项执行模块拖出,在将变量中的list 拖一个出来作为循环的参数,同时删除不需要的参数;然后再将字典分类中的获取键的对应值模块拖出,在变量分类中i 拖出作为获取键的第一个参数,获取键的名称改为words,再将打印自动换行模块放入循环模块中,将打印参数替换为刚拖出的获取键对应值模块,并删除多余的list 变量模块,再将循环连接到程序的下方;最后运行程序,其结果如图16 所示,左边为原始图片文字信息,右边为运行结果。
图15
图16
3 结语
在广泛人工智能产品应用的时代背景下,图形化编程教育能够有效的降低青少年学习人工智能方面知识和技能的门槛。图形化编程工具入门简单,但是其同时具备字符编程的完整思想体系,可以作为青少年学习编程的过渡性工具,应用Mixly 人工智能模块结合百度AI 开放平台,虽然仅仅是简单的应用了人工智能算法,但是其体现了整个程序设计过程总的逻辑环节,对于青少年学习人工智能具有很大的帮助。