让我们来了解一下 Gradio (4.36.1)的一些主要功能。本指南旨在为您提供一个高层次的概述,让您在制作演示时了解各种需要注意的事项。在适当的地方,我们会链接到更详细的指南。
Components 组件
Queuing 排队
Streaming outputs 流输出
Streaming inputs 流输入
Alert modals 警报模式
Styling 造型设计
Progress bars 进度条
Batch functions 批处理功能
Components 组件
Gradio 包含 30 多个预建组件(以及许多用户自定义组件),只需一行代码即可在演示中用作输入或输出。这些组件与机器学习和数据科学中常见的数据类型相对应,例如 gr.Image
组件用于处理输入或输出图像, gr.Label
组件显示分类标签和概率, gr.Plot
组件显示各种图表,等等。
每个组件都包含控制组件属性的各种构造函数属性。例如,你可以使用 gr.Textbox
构造函数中的 lines
参数(取一个正整数)来控制 gr.Textbox
中的行数。或者,你可以使用 sources
参数(像 ["webcam", "upload"]
一样使用列表)来控制用户在 gr.Image
组件中提供图片的方式。
Static and Interactive Components 静态和互动组件
每个组件都有一个用于显示数据的静态版本,大多数组件也有一个用于让用户输入或修改数据的交互版本。通常情况下,你不需要考虑这种区别,因为当你创建一个 Gradio 演示时,Gradio 会自动根据组件是作为输入还是输出来计算它应该是静态的还是交互的。不过,你也可以使用每个组件都支持的 interactive
参数手动设置。
Preprocessing and Postprocessing 预处理和后处理
当组件被用作输入时,Gradio 会自动进行预处理,将数据从用户浏览器发送的类型(如上传的图片)转换为函数可以接受的形式(如 numpy 数组)。
同样,当组件被用作输出时,Gradio 会自动进行后处理,将函数返回的数据(如图片路径列表)转换为可在用户浏览器中显示的形式(图片库)。
请看一个有三个输入组件( gr.Textbox
、 gr.Number
和 gr.Image
)和两个输出组件( gr.Number
和 gr.Gallery
)的示例演示,它们是图像到图像生成模型的用户界面。下图显示了预处理将发送给模型的内容以及后处理需要的内容。
在本图中,以下预处理步骤是为了将数据从浏览器发送到您的函数:
The text in the textbox is converted to a Python
str
(essentially no preprocessing)
文本框中的文本会被转换成 Pythonstr
(基本上没有预处理)。The number in the number input in converted to a Python
float
(essentially no preprocessing)
将数字输入中的数字转换为 Pythonfloat
(基本上不需要预处理)Most importantly, ihe image supplied by the user is converted to a
numpy.array
representation of the RGB values in the image
最重要的是,用户提供的图像会被转换为图像中 RGB 值的numpy.array
表示形式
图像会被转换成 NumPy 数组,因为它们是机器学习工作流的常用格式。在构建组件时,你可以使用组件的参数来控制预处理。例如,如果使用以下参数实例化图像组件,它将把图像预处理为 PIL 格式:
img = gr.Image(type="pil")
后处理就更简单了!Gradio 会自动识别返回数据的格式(例如,用户函数返回的是 numpy
数组还是 gr.Image
组件的 str
文件路径?
因此,在上图中,将用户函数返回的数据发送到浏览器的后处理步骤如下:
- 浮点数显示为数字,并直接显示给用户
- 字符串文件路径列表(list[str])被解释为图像文件路径列表&