目录
????????Gradio 是一个用于快速创建机器学习模型可视化界面的 Python 库。它允许开发者轻松地为他们的模型创建一个简单的 web 界面,并且不需要任何前端开发的经验。Gradio 非常适合共享和演示模型的能力,尤其是在研究、教学或展示项目时。
????????要使用 Gradio,你首先需要安装它。可以使用 pip
来安装:
pip install 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) # 这将允许界面并行处理多个请求