Gradio入门

发布于:2024-09-17 ⋅ 阅读:(144) ⋅ 点赞:(0)

Gradio 是一个Python 库,能够帮助开发者快速搭建交互式 Web 应用,适用于展示机器学习模型、图像处理、数据分析等任务。Hugging Face Space里面的很多UI界面就是用Gradio搭建的。通过使用 Gradio,用户无需复杂的前端开发知识,即可创建与用户友好的 Web 应用。

针对初次接触Gradio的朋友们,以下是这个库的安装和一些我探索Gradio功能的时候用到的示例,希望能帮助到你~

1. Gradio 的安装
pip install gradio

安装完成后,Gradio 就可以在任何支持 Python 的环境中使用,比如 Jupyter Notebook、Google Colab 或本地 Python 环境。

2. Gradio 的基本使用

下面是几个常见的 Gradio API 使用的例子,入门的话感觉差不多够了。

示例 1: 简单的文本输入输出
import gradio as gr

# 定义函数,返回输入的文本
def echo(text):
    return text

# 搭建界面
interface = gr.Interface(fn=echo, inputs="text", outputs="text")
interface.launch()

在这里插入图片描述

示例 2: 数字输入和输出
import gradio as gr

# 定义一个平方计算函数
def square(x):
    return x ** 2

# 搭建界面
interface = gr.Interface(fn=square, inputs="number", outputs="number")
interface.launch()

在这里插入图片描述

示例 3: 图像输入输出(图像翻转)
import gradio as gr
from PIL import Image

# 定义图像翻转函数
def flip_image(image):
    return image.transpose(Image.FLIP_LEFT_RIGHT)

# 搭建界面
interface = gr.Interface(fn=flip_image, inputs=gr.Image(type="pil"), outputs="image")
interface.launch()

在这里插入图片描述
这里可以选择上传(最左边的icon)从剪贴板直接粘贴(粉色标注的icon)或者调用摄像头拍摄(黄色标注的icon),非常的方便啊🤣
在这里插入图片描述

示例 4: 文件上传和处理
import gradio as gr

# 定义文件处理函数,返回文件内容
def read_file(file):
    return file.name

# 搭建界面
interface = gr.Interface(fn=read_file, inputs="file", outputs="text")
interface.launch()

在这里插入图片描述

示例 5: 多输入和多输出
import gradio as gr

# 定义多输入、多输出函数
def process_data(text, number):
    return f"Text: {text}", number * 2

# 搭建界面,多个输入输出
interface = gr.Interface(
    fn=process_data, 
    inputs=["text", "number"], 
    outputs=["text", "number"]
)
interface.launch()

在这里插入图片描述

示例 6: 选择按钮(Dropdown)
import gradio as gr

# 定义简单的选择处理函数
def choose_option(option):
    return f"You chose {option}"

# 搭建界面
interface = gr.Interface(
    fn=choose_option, 
    inputs=gr.Dropdown(choices=["Option 1", "Option 2", "Option 3"]),
    outputs="text"
)
interface.launch()

在这里插入图片描述

示例 7: 滑动条(Slider)
import gradio as gr

# 定义滑动条选择处理函数
def adjust_brightness(value):
    return f"Brightness level: {value}"

# 搭建界面
interface = gr.Interface(
    fn=adjust_brightness, 
    inputs=gr.Slider(minimum=0, maximum=100), 
    outputs="text"
)
interface.launch()

在这里插入图片描述

示例 8: 切换按钮(Checkbox)
import gradio as gr

# 定义开关处理函数
def check_status(is_checked):
    return "Checked" if is_checked else "Unchecked"

# 搭建界面
interface = gr.Interface(
    fn=check_status, 
    inputs="checkbox", 
    outputs="text"
)
interface.launch()

在这里插入图片描述

示例 9: 动态更新(Live Updates)
import gradio as gr
import time

# 定义实时更新函数
def update_live(text):
    time.sleep(1)  # 模拟延迟
    return f"Processed: {text}"

# 搭建界面,启用实时更新
interface = gr.Interface(
    fn=update_live, 
    inputs="text", 
    outputs="text", 
    live=True  # 实时更新
)
interface.launch()

在这里插入图片描述

示例 10: 音频处理
import gradio as gr

# 定义音频处理函数,返回音频文件路径
def process_audio(audio):
    return audio

# 搭建界面,输入和输出音频
interface = gr.Interface(
    fn=process_audio, 
    inputs="audio", 
    outputs="audio"
)
interface.launch()

在这里插入图片描述
同理,这里也能选择上传音频(点击upload的那个图标)或者现场用麦克风录制一段音频(点击那个麦克风)

示例 11: 批量处理数据
import gradio as gr

# 定义批量处理函数
def batch_process(texts):
    return [text.upper() for text in texts]

# 搭建界面,启用批量处理
interface = gr.Interface(
    fn=batch_process, 
    inputs=gr.Textbox(lines=2, placeholder="Enter multiple lines here"), 
    outputs="text", 
    allow_flagging="never"
)
interface.launch()

在这里插入图片描述

示例 12: 使用 Block 创建更复杂的布局
import gradio as gr

# 定义两个简单的函数
def greet(name):
    return f"Hello, {name}!"

def double(number):
    return number * 2

# 使用 Block 布局
with gr.Blocks() as demo:
    name_input = gr.Textbox(label="Enter your name")
    greet_button = gr.Button("Greet")
    greet_output = gr.Textbox(label="Greeting")
    
    greet_button.click(greet, inputs=name_input, outputs=greet_output)

    number_input = gr.Number(label="Enter a number")
    double_button = gr.Button("Double it")
    double_output = gr.Textbox(label="Result")
    
    double_button.click(double, inputs=number_input, outputs=double_output)

demo.launch()

在这里插入图片描述

总的来说,Gradio 在减少开发工作量和快速创建机器学习模型的交互式界面方面表现很棒,适合快速原型设计和展示。