博主原文链接:https://www.yourmetaverse.cn/nlp/390/
探索Gradio库中的Image模块及其强大功能
Gradio是一个用于构建交互式机器学习和深度学习应用程序的库,提供了简单易用的界面组件。其中的Image模块是用于上传/绘制图像(作为输入)或显示图像(作为输出)的组件。在本文中,我们将介绍Image模块的基本用法以及其中的change、edit、clear、stream、upload和select方法。
Image模块介绍
Gradio的Image模块用于处理图像输入和输出。它支持多种格式的图像,包括numpy数组、PIL图像和文件路径。以下是Image模块的一些关键参数:
value
:用于设置组件的默认值,可以是PIL图像、numpy数组、文件路径或URL。shape
:用于裁剪和调整图像的形状,可以指定宽度和高度。height
:显示图像的高度(像素)。width
:显示图像的宽度(像素)。image_mode
:图像模式,可以是"RGB"(彩色)或"L"(黑白)。invert_colors
:是否在预处理步骤中反转图像。source
:图像的来源,可以是"upload"(上传)、“webcam”(摄像头)或"canvas"(画布)。tool
:用于编辑图像的工具,可以是"editor"(编辑器)、“select”(裁剪和缩放工具)、“sketch”(二值化草图)或"color-sketch"(多颜色草图)。type
:在传递给预测函数之前将图像转换为的格式,可以是"numpy"(numpy数组)、“pil”(PIL图像)或"filepath"(临时文件路径)。
除了这些参数,Image模块还支持其他配置选项,例如标签显示、交互性设置和容器设置。
change方法
change方法是一个监听器,当组件的值发生改变时触发,无论是由用户输入引起的还是由函数更新引起的。可以用于处理输入组件的值变化,例如调用机器学习模型的预测函数。
edit方法
edit方法是一个监听器,当用户使用内置编辑器编辑图像时触发。可以用于处理图像编辑事件,例如对编辑后的图像进行进一步处理或调用相应的函数。
clear方法
clear方法是一个监听器,当用户点击组件上的X按钮清除图像时触发。可以用于处理图像清除事件,例如重置图像处理的状态或清除相关的输入。
stream方法
stream方法是一个监听器,当用户使用组件进行图像流处理(如实时摄像头)时触发。可以用于处理图像流事件,例如实时处理视频流数据或调用相
应的函数。
upload方法
upload方法是一个监听器,当用户上传文件到组件时触发。可以用于处理图像上传事件,例如读取上传的图像文件并进行相应的处理或调用相应的函数。
select方法
select方法是一个监听器,当用户点击图像中的像素时触发。可以用于处理图像选择事件,例如根据用户选择的像素位置进行相应的处理或调用相应的函数。
通过使用这些监听器方法,可以灵活地处理Image模块中的各种事件,实现与图像相关的交互和处理功能。
参数详解
Image模块参数:
参数 | 数据类型 | 默认值 | 描述 |
---|---|---|---|
value | str | _Image.Image | np.ndarray | None | None | Image组件的默认值,可以是PIL Image、numpy数组、路径或URL。如果是可调用对象,每次应用加载时都会调用该函数以设置组件的初始值。 |
shape | tuple[int, int] | None | None | 图像传递给函数时的裁剪和调整大小的形状(宽度,高度)。如果为None,则与输入图像大小匹配。可以将宽度或高度设置为None,仅裁剪和调整大小另一个参数。 |
height | int | None | None | 显示图像的高度(以像素为单位)。 |
width | int | None | None | 显示图像的宽度(以像素为单位)。 |
image_mode | str | “RGB” | 图像的模式,"RGB"表示彩色,"L"表示黑白。 |
invert_colors | bool | False | 是否在预处理步骤中反转图像。 |
source | str | “upload” | 图像的来源。"upload"表示用户可以上传图像文件,"webcam"允许用户从网络摄像头拍摄快照,"canvas"默认为一个可编辑的白色图像。 |
tool | str | None | None | 用于编辑的工具。“editor"允许全屏编辑(如果source是"upload"或"webcam”,则是默认工具),"select"提供裁剪和缩放工具,“sketch"允许创建二进制草图(如果source是"canvas”,则是默认工具),"color-sketch"允许以不同颜色创建草图。"color-sketch"可与source="upload"或"webcam"一起使用,以在图像上进行草图。"sketch"也可与"upload"或"webcam"一起使用,以在图像上创建蒙版,在这种情况下,图像和蒙版都作为具有键"image"和"mask"的字典传递到函数中。 |
type | str | “numpy” | 在传递给预测函数之前,将图像转换为的格式。"numpy"将图像转换为形状为(height, width, 3)、取值范围为0到255的numpy数组;"pil"将图像转换为PIL Image对象;"filepath"将图像传递给一个临时文件的路径。 |
label | str | None | None | 在界面中的组件名称。 |
every | float | None | None | 如果value 是可调用对象,在客户端连接打开时,每隔指定的秒数运行函数。否则没有任何效果。队列必须启用。可以通过此组件的.load_event 属性访问事件(例如取消它)。 |
show_label | bool | True | 如果为True,将显示标签。 |
container | bool | True | 如果为True,将在容器中放置组件,提供一些额外的边框填充。 |
scale | int | None | None | 相对于同一行中相邻组件的宽度比例。例如,如果组件A的scale=2,组件B的scale=1,那么组件A的宽度将是组件B的两倍。应为整数。 |
min_width | int | 160 | 最小像素宽度,如果屏幕空间不足以满足此值,则换行。如果某个比例值导致此组件比min_width更窄,将首先尊重min_width参数。 |
interactive | bool | None | None | 如果为True,将允许用户上传和编辑图像;如果为False,只能用于显示图像。如果未提供,则根据组件是输入还是输出进行推断。 |
visible | bool | True | 如果为False,将隐藏组件。 |
streaming | bool | False | 如果在live 接口中为True,将自动流式传输网络摄像头的视频。仅在source为’webcam’时有效。 |
elem_id | str | None | None | 作为HTML DOM中此组件的id分配的可选字符串。可用于定位CSS样式。 |
elem_classes | list[str] | str | None | None | 作为HTML DOM中此组件的类分配的可选字符串列表。可用于定位CSS样式。 |
mirror_webcam | bool | True | 如果为True,则将翻转网络摄像头的视频。默认为True。 |
brush_radius | float | None | None | Sketch的画笔大小。默认为None,选择一个合理的默认值。 |
change方法参数:
参数 | 数据类型 | 默认值 | 描述 |
---|---|---|---|
fn | Callable | None | required | 需要封装为接口的函数,通常是机器学习模型的预测函数。函数的每个参数对应一个输入组件,函数应该返回一个值或值的元组,元组中的每个元素对应一个输出组件。 |
inputs | Component | list[Component] | set[Component] | None | None | 用作输入的gradio.components的列表。如果函数不需要输入,这应该是一个空列表。 |
outputs | Component | list[Component] | None | None | 用作输出的gradio.components的列表。如果函数不返回输出,这应该是一个空列表。 |
api_name | str | None | None | 定义此参数将在api文档中公开该端点。 |
status_tracker | None | None | |
scroll_to_output | bool | False | 如果为True,将在完成时滚动到输出组件。 |
show_progress | Literal[‘full’] | Literal[‘minimal’] | Literal[‘hidden’] | “full” | 如果为True,将在等待时显示进度动画。 |
queue | bool | None | None | 如果为True,将请求放入队列(如果已启用队列)。如果为False,则不会将此事件放入队列,即使已启用队列。如果为None,则使用gradio应用程序的队列设置。 |
batch | bool | False | 如果为True,则函数应处理一批输入,这意味着它应接受每个参数的输入值列表。列表应具有相等的长度(最多为max_batch_size ),然后函数需要强制返回一个元组的列表(即使只有一个输出组件),元组中的每个列表对应一个输出组件。 |
max_batch_size | int | 4 | 如果从队列调用此方法,则最大批处理在一起的输入数。仅在batch=True时相关。 |
preprocess | bool | True | 如果为False,将不会在运行’fn’之前运行组件数据的预处理(例如,如果使用Image 组件以base64字符串调用此方法,则将其保留为base64字符串)。 |
postprocess | bool | True | 如果为False,将不会在将’fn’的输出返回给浏览器之前运行组件数据的后处理。 |
cancels | dict[str, Any] | list[dict[str, Any]] | None | None | 在此监听器触发时取消其他事件的列表。例如,设置cancels=[click_event]将取消click_event,其中click_event是另一个组件的.click方法的返回值。尚未运行的函数(或正在迭代的生成器)将被取消,但当前正在运行的函数将被允许完成。 |
every | float | None | None | 在客户端连接打开时每隔指定的秒数运行此事件。以秒为单位。队列必须启用。 |
edit方法参数:
参数 | 数据类型 | 默认值 | 描述 |
---|---|---|---|
fn | Callable | None | required | 需要封装为接口的函数,通常是机器学习模型的预测函数。函数的每个参数对应一个输入组件,函数应该返回一个值或值的元组,元组中的每个元素对应一个输出组件。 |
inputs | Component | list[Component] | set[Component] | None | None | 用作输入的gradio.components的列表。如果函数不需要输入,这应该是一个空列表。 |
outputs | Component | list[Component] | None | None | 用作输出的gradio.components的列表。如果函数不返回输出,这应该是一个空列表。 |
api_name | str | None | None | 定义此参数将在api文档中公开该端点。 |
status_tracker | None | None | |
scroll_to_output | bool | False | 如果为True,将在完成时滚动到输出组件。 |
show_progress | Literal[‘full’] | Literal[‘minimal’] | Literal[‘hidden’] | “full” | 如果为True,将在等待时显示进度动画。 |
queue | bool | None | None | 如果为True,将请求放入队列(如果已启用队列)。如果为False,则不会将此事件放入队列,即使已启用队列。如果为None,则使用gradio应用程序的队列设置。 |
batch | bool | False | 如果为True,则函数应处理一批输入,这意味着它应接受每个参数的输入值列表。列表应具有相等的长度(最多为max_batch_size ),然后函数需要强制返回一个元组的列表(即使只有一个输出组件),元组中的每个列表对应一个输出组件。 |
max_batch_size | int | 4 | 如果从队列调用此方法,则最大批处理在一起的输入数。仅在batch=True时相关。 |
preprocess | bool | True | 如果为False,将不会在运行’fn’之前运行组件数据的预处理(例如,如果使用Image 组件以base64字符串调用此方法,则将其保留为base64字符串)。 |
postprocess | bool | True | 如果为False,将不会在将’fn’的输出返回给浏览器之前运行组件数据的后处理。 |
cancels | dict[str, Any] | list[dict[str, Any]] | None | None | 在此监听器触发时取消其他事件的列表。例如,设置cancels=[click_event]将取消click_event,其中click_event是另一个组件的.click方法的返回值。尚未运行的函数(或正在迭代的生成器)将被取消,但当前正在运行的函数将被允许完成。 |
every | float | None | None | 在客户端连接打开时每隔指定的秒数运行此事件。以秒为单位。队列必须启用。 |
stream方法参数:
参数 | 数据类型 | 默认值 | 描述 |
---|---|---|---|
fn | Callable | None | required | 需要封装为接口的函数,通常是机器学习模型的预测函数。函数的每个参数对应一个输入组件,函数应该返回一个值或值的元组,元组中的每个元素对应一个输出组件。 |
inputs | Component | list[Component] | set[Component] | None | None | 用作输入的gradio.components的列表。如果函数不需要输入,这应该是一个空列表。 |
outputs | Component | list[Component] | None | None | 用作输出的gradio.components的列表。如果函数不返回输出,这应该是一个空列表。 |
api_name | str | None | None | 定义此参数将在api文档中公开该端点。 |
status_tracker | None | None | |
show_progress | Literal[‘full’] | Literal[‘minimal’] | Literal[‘hidden’] | “full” | 如果为True,将在等待时显示进度动画。 |
queue | bool | None | None | 如果为True,将请求放入队列(如果已启用队列)。如果为False,则不会将此事件放入队列,即使已启用队列。如果为None,则使用gradio应用程序的队列设置。 |
batch | bool | False | 如果为True,则函数应处理一批输入,这意味着它应接受每个参数的输入值列表。列表应具有相等的长度(最多为max_batch_size ),然后函数需要强制返回一个元组的列表(即使只有一个输出组件),元组中的每个列表对应一个输出组件。 |
max_batch_size | int | 4 | 如果从队列调用此方法,则最大批处理在一起的输入数。仅在batch=True时相关。 |
preprocess | bool | True | 如果为False,将不会在运行’fn’之前运行组件数据的预处理(例如,如果使用Image 组件以base64字符串调用此方法,则将其保留为base64字符串)。 |
postprocess | bool | True | 如果为False,将不会在将’fn’的输出返回给浏览器之前运行组件数据的后处理。 |
cancels | dict[str, Any] | list[dict[str, Any]] | None | None | 在此监听器触发时取消其他事件的列表。例如,设置cancels=[click_event]将取消click_event,其中click_event是另一个组件的.click方法的返回值。尚未运行的函数(或正在迭代的生成器)将被取消,但当前正在运行的函数将被允许完成。 |
every | float | None | None | 在客户端连接打开时每隔指定的秒数运行此事件。以秒为单位。队列必须启用。 |