机器学习和人工智能领域的发展日新月异,但如何快速将这些复杂模型和算法转化为可交互的演示,以供非专业人士体验,一直是一个挑战。Gradio 应运而生,它是一个简单而强大的Python库,可以让研究者和开发者快速创建与机器学习模型交互的界面。
Gradio 介绍

Gradio 是一个开源的 python 库,只需几行代码就能为机器学习模型、任何 API 或任何主观能力快速创建简单易用、可调整的 UI 部件。它能让你在网络浏览器中更轻松地玩转模型,只需拖拽图像、文本或自己的声音录音等,就能以交互方式看到实时输出。可以直接将图形用户界面集成到 Python 笔记本中,也可以与任何人共享链接。
Gradio 只需几行代码就能建立一个在线图形用户界面,方便展示模型。Gradio 可以快速、简单地设置、准备和使用,还可以作为公共连接进行共享,任何人都可以通过它在服务器上远程并行运行模型。Gradio 可以处理多种媒体------文本、图片、视频和声音。除了机器学习模型外,它还可以用作 python 代码嵌入,用于收集用户反馈、进行数据标注或模型评估。
核心功能
以下是 Gradio 的一些核心功能:
- 易于使用:无需前端开发知识,只需几行代码即可集成。
- 多种输入输出组件:支持各种数据类型,包括图像、视频、音频、文本、绘图等。
- 集成分享:一键部署到网页,可生成链接分享给他人。
- 可定制化:支持自定义样式和布局,以适应不同的模型和用例。
- 机器学习支持:可以与 TensorFlow 和 PyTorch 模型集成。
开始使用
安装
通过 pip 安装 Gradio:
pip install gradio
加载
导入程序库:
import gradio as gr
DEMO
为了快速了解该库的工作原理,可以通过 Python 脚本或 Jupyter Notebook(也可使用 Google colab)运行下面的代码:
python
import gradio as gr
def start(name):
return "Hello " + name + " ! "
face = gr.Interface(fn=start, inputs="text", outputs="text")
face.launch()
运行上述代码后,下面的界面会自动出现在 Jupyter Notebook 中,如果运行 python 脚本,则会在浏览器 https://localhost:7860 中弹出:

Gradio 也提供了一个可共享的公共链接,但该链接会在 75 小时内失效。
接口
Gradio 可以用一个简单易用的界面封装几乎所有 Python 工作。这种能力可以是直接的评估,也可以是将机器添加到预先训练好的模型中。接口类有三个参数。具体描述如下:
- inputs:输入组件类型
- outputs:输出组件类型
- fn:要封装的函数
可定制组件
Gradio 支持根据需求创建自定义组件。例如,如果想看到大段文字和一些文字提示,那么可以在界面类的输入参数中传递不同的参数。Gradio 提供了大量的自定义功能。
Slider 滑动条:
在Gradio中,可以使用gr.inputs.Slider()
创建滑动条。以下是一些常用的参数:
minimum
:滑动条的最小值(默认是0)。maximum
:滑动条的最大值(默认是100)。step
:滑动条的步长,决定了用户可以选择的数值的精细度(默认是1)。default
:滑动条的默认值,即初始设置的数值(默认是最小值)。label
:滑动条的标签,用于说明这个滑动条的用途。
Radio 单选框:
在 Gradio 中,可以使用 gr.inputs.Radio()
创建单选框,并传入一个选项列表。以下是一些常用的参数:
choices
:一个字符串列表,包含所有的选项。default
:指定默认选中的选项,通过索引或直接用字符串指定。label
:单选框前显示的标签,用于说明该输入的目的。
CheckboxGroup 复选框
在Gradio中,可以使用gr.inputs.CheckboxGroup()
创建复选框。以下是一些常用的参数:
choices
:一个字符串列表,包含所有的选项。default
:指定默认选中的选项,可以是一个列表,其中包含默认选中项的索引或字符串。label
:复选框前显示的标签,用于说明该输入的用途。inline
:一个布尔值,用于指定选项是垂直排列还是水平排列。

图片加载
图像输入接口接收一个指定大小的 NumPy 数组,格式为(width, height, 3),其中最后一维代表 RGB 值。它将以 NumPy 数组的形式返回图像。此外,输入界面上还有一个 EDIT
(编辑)按钮,用于打开一个工具,对图像进行裁剪、旋转、翻转和应用滤镜。下图展示了该工具的工作原理:

Hugging Face 联动
Hugging Face Spaces 是一个免费使用的平台,用于托管机器学习演示和应用程序。Spaces 提供免费的 16 GB 内存和 2 个内核的 CPU 环境(付费可以升级)。它目前支持 Gradio 和 Streamlit 平台。
要创建 Hugging Face Spaces,需要注册拥有一个 HuggingFace 账户。登录后,可以点击导航菜单上的 "New Space"(点击个人资料图像)来创建 Spaces。

之后看到如何通过命令行将代码添加到该 Spaces 以准备演示的说明。Spaces 本质上是带有 app.py 文件的 git 仓库(类似于 GitHub)。
克隆仓库到本地后,提交项目文件,方法和使用 Git 相同:
perl
git add .
$git commit -m "Add application file"
$git push
此外,版本库根目录下添加 requirements.txt
文件,指定 Python 的依赖项。gradio 软件包已预装,其版本已在 README.md 文件的 sdk_version 字段中设置。
结语
Gradio 不仅仅是为了展示模型,更是为了建立一个桥梁,让非技术用户能够以直观的方式体验和理解复杂的算法。我们期待看到 Gradio 在未来的发展,以及它如何继续推动机器学习领域的创新和普及。让我们一起探索AI的无限可能,并将这些技术带入日常生活,为社会带来积极的影响。