20、Gradio模块

发布时间:2024年01月12日

目录

安装 Gradio

创建一个简单的 Gradio 界面

支持的输入和输出类型

自定义界面选项

高级功能


????????Gradio 是一个用于快速创建机器学习模型可视化界面的 Python 库。它允许开发者轻松地为他们的模型创建一个简单的 web 界面,并且不需要任何前端开发的经验。Gradio 非常适合共享和演示模型的能力,尤其是在研究、教学或展示项目时。

安装 Gradio

????????要使用 Gradio,你首先需要安装它。可以使用 pip 来安装:

pip install gradio

创建一个简单的 Gradio 界面

????????创建一个 Gradio 界面主要涉及到定义一个或多个输入和输出,以及一个用于处理输入并返回输出的函数。下面基本示例:

import gradio as gr

# 定义一个处理输入的函数
def greet(name):
    return "Hello " + name + "!"

# 创建界面
iface = gr.Interface(fn=greet, inputs="text", outputs="text")

# 启动界面,会开启一个本地服务器,并在默认浏览器中打开该页面
iface.launch()

????????在这个例子中,我们定义了一个简单的 greet 函数,它接受一个名字作为输入,返回一个问候语作为输出。然后,我们创建了一个 Interface 对象,指定了函数 fn 以及输入和输出的类型,最后通过调用 launch() 方法启动了界面。

支持的输入和输出类型

????????Gradio 支持多种类型的输入和输出,包括文本(text)、数字(number)、图像(image)、音频(audio)、视频(video)、数据帧(dataframe)等。例如,如果你的模型是一个图像分类器,你可能希望使用图像输入和文本输出:

import gradio as gr
from PIL import Image
import torchvision.transforms as transforms
import torch

# 假设有一个预训练的模型
model = ...  # 某个预训练的 PyTorch 模型

# 预处理函数
def preprocess_img(img):
    img = Image.fromarray(img.astype('uint8'), 'RGB')
    img = transforms.Compose([
        transforms.Resize((224, 224)),
        transforms.ToTensor(),
        transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]),
    ])(img).unsqueeze(0)
    return img

# 预测函数
def classify_image(img):
    img = preprocess_img(img)
    with torch.no_grad():
        prediction = model(img)
    return {str(i): float(prediction[0][i]) for i in range(1000)}  # 假设有1000个类

# 创建界面
iface = gr.Interface(fn=classify_image, inputs="image", outputs="label")

# 启动界面
iface.launch()

? ? ? ? 以上,定义了一个 classify_image 函数,它接受一个图像作为输入,经过预处理后传递给模型进行预测,并返回预测的类别标签。

自定义界面选项

????????可以对界面进行自定义,例如设置标题、描述、输入输出的标签等。这些额外的参数可以在创建 Interface 时传递:

iface = gr.Interface(
    fn=greet,
    inputs=gr.inputs.Textbox(lines=2, placeholder="Name Here..."),
    outputs="text",
    title="Greeting App",
    description="Enter your name to get a greeting."
)

高级功能

Gradio 也支持一些高级功能,如生成分享链接、保存界面为网页、并行处理多个请求等。

  • 生成分享链接

    iface.launch(share=True) # 这将生成一个可以分享给他人的链接
  • 保存界面为网页

    iface.launch(inline=False) # 这将在本地打开界面,并提供选项以保存为网页
  • 并行处理请求

    iface.launch(enable_queue=True) # 这将允许界面并行处理多个请求
文章来源:https://blog.csdn.net/sinat_34461199/article/details/135481123
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。