赞
踩
目录
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) # 这将允许界面并行处理多个请求
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。