gradio 基本使用
package
本文字数:703 字 | 阅读时长 ≈ 3 min

gradio 基本使用

package
本文字数:703 字 | 阅读时长 ≈ 3 min

gradio 可以将自己的模型可视化为 demo 的一个库,只需简单定义输入和输出接口即可快速构建简单的交互页面,轻松部署模型。适合场景相对简单,想要快速部署应用的开发者。便于分享:gradio 可以在启动应用时设置 share=True 参数创建外部分享链接,可以直接在微信中分享给用户使用。

对于简单场景,使用 gradio 的 Interface 类;如果要自定义场景,则使用 Block 类,本文主要介绍 Interface 类

1. gradio 安装

gradio 安装很简单

pip install gradio

2. 基本使用

gradio 的官方应用文档

2.1 首先我们运行一个简单的文本到文本的 demo

import gradio as gr

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

demo = gr.Interface(fn=greet, inputs="text", outputs="text")
    
if __name__ == "__main__":
    demo.launch()   

此时会输出如下内容,点击链接即可进入到网页的交互界面

Running on local URL:  http://127.0.0.1:7860

To create a public link, set `share=True` in `launch()`.

2.2 下面我们尝试加入多个输入和输出

import gradio as gr

def greet(name, is_morning, temperature):
    salutation = "Good morning" if is_morning else "Good evening"
    greeting = f"{salutation} {name}. It is {temperature} degrees today"
    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"],
)
if __name__ == "__main__":
    demo.launch()

这里的输入 text 表示我们要输入的文字区域,checkbox 是 bool 变量,gr.Slider 是一个长条,可以选择他的数值范围。输出部分:text 表示输出的文本区域,number 表示输出的数字区域

2.3 其他形式的输入和输出

这里将输入输出更改为图片

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

#shape设置输入图像大小
demo = gr.Interface(sepia, gr.Image(shape=(200, 200)), "image")
demo.launch()

这里对于图片信息,参数为"image",如果我们要对输入的框等进行调整,则使用 gr.Image 函数,其他模态也有类似的操作

这里将输入输出更改为视频

import gradio as gr
import os


def video_identity(video):
    return video

demo = gr.Interface(video_identity, 
                    gr.Video(), 
                    "playable_video", 
                    examples=[os.path.join("/Users/harry/video_sample.mp4")], 
                    cache_examples=True)

if __name__ == "__main__":
    demo.launch()

2.4 interface 的其他参数

live 参数,live 参数为 True 表示当输入发生变化时,输出也立刻更新

import gradio as gr

def add(input, var):
    output = input+var
    return output

demo = gr.Interface(
    fn=add,
    inputs=["number", gr.Slider(0, 100)],
    outputs="number",
    live=True
)
if __name__ == "__main__":
    demo.launch()

更改输入时,输出立刻更新

4月 06, 2025
3月 10, 2025
12月 31, 2024