快速搭建机器学习demo: gradio教程

本文介绍了gradio工具,它能帮助开发者快速创建机器学习模型的交互式DEMO。gradio与Streamlit相比更简洁易用,通过几个基础组件如输入输出、触发和布局组件,可以构建简易或复杂的UI。文中还提供了基础和进阶组件的使用示例,包括图像、文本、数字、布局等,并鼓励读者探索更优雅的界面设计。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

🙃关注公众号 funNLPer 白嫖畅读全文🙃

1. Intro

gradio是一个能够快速建立机器学习demo web应用的工具,仅需简单的几行代码就能构建机器学习模型的可视化交互demo,并分享给你的朋友使用。

与gradio相同功能的竞品有Streamlit,相比Gradio,Streamlit相对复杂,完全熟练使用需要一定时间。

2. quick start

如下展示了一个简单的case,其他所有的case都可套用该模板

import gradio as gr

# 定义处理函数/模型推理
def greet(name):
    return "Hello " + name + "!"

# interface中三个必要参数: 推理函数、输入、输出
demo = gr.Interface(fn=greet, inputs="text", outputs="text")
# 是否开启公网分享
demo.launch(share=False)

可得到如下的界面
在这里插入图片描述

3. 基础组件

3.1 应用界面

  • 简易界面通常使用 gr.Interface(fn, inputs, outputs, ···)
    • fn 是一个包装函数,通常为机器学习模型的推理部分
    • inputs 输入,通常是gradio的组件,如gr.Image(), 对于文本、图片等简单类型可直接写成[“text”, “image”]
    • outputs 输出,同输入
  • 定制化场景通常使用 gr.Blocks()
    block一般应用在定制化的复杂场景,可以自己定义很多模块,进行组合,后面会做详细介绍

3.2 输入输出组件

  • 图像 gr.Image(value, label, show_label)
    • value: 输入的图像,支持pil, np_array, path, url等格式
    • label: 组件名称
    • show_label: 是否展示组件名称
  • 文本 gradio.Textbox(value, lines, placeholder, show_copy_button)
    • value: 输入文本
    • lines: 文本框最少展示行数
    • placeholder: 一般用作提示语
    • show_copy_button: 是否展示复制按钮
  • 数字 gr.Number(choices, value, label)
  • 数据框 gr.DataFrame()
  • 下拉选项 gr.Dropdown()
  • markdown gr.Markdown()
  • 文件 gr.Files()
  • 调节带 gradio.Slider(···)
  • 单选 gradio.Radio(choices, value, label)
    • choice: 选择项list
    • value: 默认选定值
    • label: 组件名称

3.3 触发组件

  • 按钮组件:gradio.Button(value)
    • value: 按钮的名称
    • 通常和click组件联合使用 gradio.Button.click(fn, inputs, outputs)
  • 清除按钮: gradio.ClearButton(components, value)
    • components: 要清除的组件
    • value: 按钮名称
    • 通常和gradio.ClearButton.add(components, ···)以及click()方法联合使用

3.4 布局组件

  • 标签页: gr.Tab()
  • 行布局: gradio.Row()
  • 列布局: gradio.Column()
  • 折叠项: gradio.Accordion(label, ···)

3.5 demo

这里我们使用Block和以上部分组件搭建了一个case

def chat(name,  lan, repeat=1, machine_name="小明"):
    if lan == "chinese":
        reply = "你好,"+name+",我叫"+machine_name
    elif lan == "english":
        reply 
### Gradio 使用教程 #### 导入 Gradio 库 为了使用 Gradio 创建交互式的 Web 界面,第一步是安装并导入 Gradio 库。可以通过 pip 安装最新版本的 Gradio[^1]。 ```bash pip install gradio ``` 接着,在 Python 脚本或 Jupyter Notebook 中引入 Gradio: ```python import gradio as gr ``` #### 构建简单的接口 创建一个基础的应用程序只需要定义输入和输出组件,并指定处理函数。这里展示了一个最简化的例子,它接收文本作为输入并返回相同的文本作为输出。 ```python def echo(text): return text iface = gr.Interface(fn=echo, inputs="text", outputs="text") iface.launch() ``` #### 设计复杂的布局 对于更加复杂的应用场景,比如多模态大模型的部署,可以利用 `gr.Row()` 和 `gr.Column()` 方法来自定义页面结构。这些方法允许开发者构建分栏或多行排列的小部件组合,从而提高用户体验的质量[^2]。 例如,下面这段代码展示了如何通过嵌套列来安排不同的 UI 组件: ```python with gr.Blocks() as demo: with gr.Row(): with gr.Column(): input_image = gr.Image(label='Input Image') button = gr.Button('Submit') with gr.Column(): output_text = gr.Textbox(label='Output Text') def process(image): # 假设这是某个图像处理逻辑... result = "Processed image" return result button.click(process, inputs=input_image, outputs=output_text) demo.launch() ``` 此段代码不仅设置了两个垂直方向上的栏目用于放置输入框和按钮控件,还配置了点击事件处理器以响应用户的操作请求。 #### 实现交互功能 除了静态的内容显示外,Gradio 还支持动态更新界面元素的能力。这通常借助于特定的方法如 `.change()` 或者是在上述案例中的`.click()` 来监听用户行为的变化,并据此调用相应的回调函数执行进一步的动作。 综上所述,Gradio 提供了一种简便而强大的方式让用户能够快速搭建起具有高度互动性的机器学习项目前端界面。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值