Gradio:为你的机器学习模型快速构建Web UI

发布时间 2023-09-28 14:12:01作者: 阿瑞娜

Gradio是一个开源库,用于仅使用Python构建易于使用且易于共享的应用程序。它特别适用于机器学习项目,旨在使测试、共享和展示模型简单直观。

安装

Gradio的安装非常简单,直接使用pip即可安装:

pip install gradio

创建第一个程序

import gradio as gr

def greet(name):
    return "Hello " + name + "!"

demo = gr.Interface(fn=greet, inputs="text", outputs="text")

demo.launch()

引入gradio库,以gr名称使用。创建一个名为greet的函数,实现传入name,输出Hello + 你的名字的功能。创建使用gr的Interface创建一个实例,传入三个参数fn是方法名称,输入是文本控件、输出也是文本控件,将该实例赋值购给demo。调用demo.launch()方法即可将我们的函数转化为前端应用。

运行结果

自定义输入框样式

import gradio as gr

def greet(name):
    return "Hello " + name + "!"

demo = gr.Interface(fn=greet, inputs=gr.Textbox(lines=2, placeholder="在这里填写你的名字"), outputs="text")

demo.launch()

在构建Interface实例时,我们使用Textbox的类替换字符串,可以通过组件属性对输入框进行定制。在这里我们将输入框调节成为两行,并添加默认的文字提示。

输入控件占用两行,带有提示语

多输入多输出

import gradio as gr

def greet(name, is_morning, temperature):
    salutation = "早上好" if is_morning else "晚上好"
    greeting = f"{salutation} {name}, 今天的温度是 {temperature} (华氏度)"
    celsius = (temperature - 32) * 5 / 9
    return greeting, round(celsius, 2)

demo = gr.Interface(
    fn=greet,
    inputs=["text", "checkbox", gr.Slider(0, 100)],
    outputs=["text", "number"],
)
demo.launch()

当有多个输入与输出时,Interface的输入输出参数传入控件列表,注意保证控件类型与我们需要包装的函数类型一致。

三个不同类型输入,两个输出

以图像作为输入输出

import numpy as np
import gradio as gr

def sepia(input_img):
    sepia_filter = np.array([
        [0.393, 0.769, 0.189],
        [0.349, 0.686, 0.168],
        [0.272, 0.534, 0.131]
    ])
    sepia_img = input_img.dot(sepia_filter.T)
    sepia_img /= sepia_img.max()
    return sepia_img

demo = gr.Interface(sepia, gr.Image(), "image")
demo.launch()

输入一张图像,对其进行灰褐色变换,然后输出图像,图像控件的定义既可以使用gr.Image(),也可以使用"image"字符串。

以图象为输入输出,Stable Diffusion的以图绘图就是这种样式