借助Gradio制作AI体验活动的教学课件
作者: 谢作如
摘要:Gradio是一个用于构建机器学习或者数据科学算法演示的开源库,数行代码即可搭建出一个Web交互界面。本文从教师搭建用于学生体验AI活动的教学课件这一需求出发,介绍了Gradio的安装和基本语法,并结合一个车牌识别模型的部署案例,呈现了Gradio的强大功能和教学价值。
关键词:人工智能教育;教学课件;模型部署
中图分类号:G434 文献标识码:A 论文编号:1674-2117(2023)13-0085-03
为激发学习兴趣,教师在介绍图像分类、目标检测之类的人工智能技术时,总希望能制作一些个性化的展示AI应用的教学课件,让学生深度体验AI的强大功能。在《用PyWebIO“交互”呈现人工智能学习成果》一文中,我介绍了用PyWebIO来部署AI模型,并形成一个交互网页的案例。但PyWebIO存在一些不足,如界面不够美观、不支持页面布局、不支持Jupyter,也不支持摄像头和麦克风等。前段时间,在本地部署Stable fuffsion的时候,我无意中找到了一款AI模型可视化演示的工具,即Gradio。经过深度测试,我认为它很适合用于教学演示。
Gradio是为模型部署而生的工具
Gradio是一个开源的Python库,用于构建演示机器学习、数据科学或者Web应用的程序。使用Gradio,用户可以快速为机器学习模型或数据科学工作流创建一个漂亮的Web交互界面,让用户可以在浏览器上执行输入文本、上传图像和录制声音等操作,与演示程序进行交互(如图1)。
值得强调的是,国内外多个人工智能模型托管网站都内置了Gradio,如Hugging Face、OpenXLab浦源、启智AI协作平台等。可以说,Gradio是一个主流的AI模型快速部署工具。
Gradio的安装和语法基础
Gradio支持pip安装,即“pip install gradio”。库很小,关联的依赖库也很少,Python3.7以上即可安装。(文档地址为:https://gradio.app/docs/)
Gradio的核心函数是Interface类,通过fn、inputs、ouputs这三个参数进行初始化,其中,“fn”为关联的函数,“inputs”为输入组件类型,“ouputs”为输出组件类型。通过这三个参数,可以快速创建一个接口并发布如图2所示的程序。
运行图2所示的代码,访问“http://127.0.0.1:7860”,即可打开一个网页,如图3所示。其中左边为输入端,右边为输出端。
从上面的例子可以看到,输入的内容为fn关联函数“greet”的“name”参数值,“greet”返回的数据即输出的内容。Interface对象还可以处理很多类型的数据,如:输入类型有“text”“image”和“audio”等,甚至还支持“sketchpad”涂鸦板;输出类型则有“text”“image”和“label”等。
用Gradio搭建基于Web的AI应用
以一个车牌识别模型的部署为例,当用XEdu的Det(目标识别)模块训练出一个车牌识别模型后,在模型推理的代码中增加数行代码,即可实现在Web页面推理模型,参考代码如图4所示。
Gradio直接支持在Jupyter中运行代码,并以嵌入帧的方式显示在Jupyter笔记中,特别适合教学演示,如下页图5所示。
Gradio的高级应用
虽然Gradio语法简单,但功能却非常强大,尤其是在多模态交互方面。下面简单介绍如何调用摄像头和麦克风,以及实现外部(互联网)访问。
1.调用摄像头和麦克风
只要将inputs参数设为“gr.Image(source='webcam',type='pil')”,就能在网页上唤起摄像头。使用方式是点击一次“拍照”图标,即上传一张照片。我们甚至可以用这种方式来收集图片,制作简单的数据集。同样,只要将inputs参数设为"microphone",就能在网页上使用麦克风了。
2.创建一个外部访问链接
创建外部访问链接有两个作用,一是可以让外网访问内网电脑运行的代码,二是可以访问一些本来不支持Web访问的服务器,如使用容器(Docker)技术运行代码的平台。只需要在launch函数中增加“share=True”的参数,在程序启动时的打印信息中会看到外部访问链接。免费用户的链接可以使用24小时,想要长期的话需要在Gradio官方购买云服务。借助这一功能,我们可以随时在浦育平台或者Mo平台上建一个临时的应用分享网页。
总结
在部署Stable fuffsion时第一次见到Gradio,我就和其他老师一起讨论了其教育价值。它除了用于做教学演示课件外,还可以用来设计一些AI模型的体验作品。比如,将一些复杂的模型部署在迷你电脑或者一体机中,放在实验室或者科技馆的公共区域,供学生使用。
此外,随着Keras、XEdu等这些门槛较低的深度学习工具的普及,学生基于真实问题进行数据收集和模型训练也将越来越普遍。那么,教师也可以借助Gradio将学生的学习成果(模型)部署为人工智能应用,直观形象地呈现他们的学习成果,一定能够极大地提高学生学习的收获感。
参考文献:
[1]谢作如.用PyWebIO“交互”呈现人工智能学习成果[J].中国信息技术教育,2021(15):82-84.
[2]谢作如.用新一代人工智能技术解决真实问题—谈中小学AI科创活动的开展[J].中国信息技术教育,2022(13):5-8.