Gradio入门

Gradio安装与启动

Gradio是一个用于构建和部署机器学习和数据科学应用的开源库。以下是一个简单的Gradio入门示例,它创建了一个包含单个输入框和按钮的界面,点击按钮时会显示输入值。

安装命令:

pip install gradio
# 可下载指定版本
pip install gradio==4.29.0
#为了更快安装,可以使用清华镜像源
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple gradio

快速入门:

import gradio as gr
# 输入文本处理程序
def greet(name):
    return "Hello " + name + "!"
# 接口创建函数
# fn设置处理函数,inputs设置输入接口组件,outputs设置输出接口组件
# fn,inputs,outputs都是必填函数
demo = gr.Interface(fn=greet, inputs="text", outputs="text")
demo.launch()

运行程序后,打开 http://localhost:7860 即可看到网页效果。左边是文本输入框,右边是结果展示框。Clear按钮用于重置网页状态,Submit按钮用于执行处理程序,Flag按钮用于保存结果到本地。
在这里插入图片描述
在本地开发时,如果你想将代码作为Python脚本运行,你可以使用Gradio CLI在重载模式下启动应用程序,这将提供无缝和快速的开发。

gradio app.py

Interface介绍

Interface 的定义及参数应用

Interface 有三个核心参数:

  • fn :包装用户界面(UI)的函数
  • inputs :用于输入的Gradio组件。组件的数量应该与函数中参数的数量相匹配。
  • outputs :用于输出的Gradio组件。组件的数量应该与函数返回值的数量相匹配。

通过这三个参数,我们可以快速创建一个接口并发布他们。
input 和 output 参数采用一个或多个Gradio组件。Gradio包括30多个专为机器学习应用程序设计的内置组件(例如 gr.Textbox() 、 gr.Image() 和 gr.HTML() 组件)。

最常用的基础模块构成。

  • 应用界面:gr.Interface(简易场景), gr.Blocks(定制化场景)
  • 输入输出:gr.Image(图像), gr.Textbox(文本框), gr.DataFrame(数据框), gr.Dropdown(下拉选项), gr.Number(数字), gr.Markdown, gr.Files,gr.Slider(滑动条),gr.Video(视频选择器),gr.Checkbox(勾选框),gr.Radio(单选框),gr.CheckboxGroup(多选框)
  • 控制组件:gr.Button(按钮)
  • 布局组件:gr.Tab(标签页), gr.Row(行布局), gr.Column(列布局),gr.Accordion(折叠排版)

Interface描述性内容

在 Interface 构造函数中有三个参数来指定该内容应该放在哪里:

  • title :它接受文本,并可以将其显示在界面的最顶部,同时也成为页面标题。
  • description :它接受文本,markdown或HTML,并将其放置在标题下。
  • article :它也接受文本,markdown或HTML,并将其放置在界面下方。

如果您使用的是 Blocks API,则可以使用 gr.Markdown(…) 或 gr.HTML(…) 组件在任何地方插入文本、markdown或HTML,并在组件构造函数中包含描述性内容。
另一个有用的关键字参数是 label= ,它存在于每个组件中。这将修改每个组件顶部的标签文本。您还可以将info= 关键字参数添加到表单元素(如 Textbox 或 Radio ),以提供有关其用法的更多信息。

Accordion中的其他输入

如果你的函数需要很多输入,你可能需要将其中一些隐藏折叠,Interface 类接受一个类似于 inputs 的 additional_inputs 参数,这里包含的任何输入组件默认情况下都不可见。用户必须点击Accordion才能显示这些组件。附加输入在标准输入之后,按参数顺序排列。

可以使用可选的 additional_inputs_accordion 参数来自定义Accordion的外观,该参数接受一个字符串(在这种情况下,它将成为Accordion的标签),或者使用 gr.Accordion() 类的实例(例如,这允许您控制手风琴在默认情况下是打开还是关闭)。

#  additional_inputs_accordion="输入参数折叠隐藏"
	
#  additional_inputs_accordion=gr.Accordion(label="附加参数输入", open=False)

# 示例
import gradio as gr
demo = gr.Interface(fn=None,
                    inputs=["textbox"],
                    additional_inputs=[
                        gr.Checkbox(label="勾选框"),
                        gr.Radio(["选项A", "选项B", "选项C"], label="单选框"),
                        gr.CheckboxGroup(["选项A", "选项B", "选项C"], label="多选框")
                    ],
                    additional_inputs_accordion=gr.Accordion(label="附加参数输入", open=True),
                    outputs="text",
                    title="折叠隐藏",
                    description="Interface 类接受一个类似于 inputs 的 additional_inputs 参数,"
                                "但这里包含的任何输入组件默认情况下都不可见。用户必须点击手风琴才能显示这些组件。",
                    article="https://gradio.app/interface_class/",
                    )
demo.launch(share=True)

在这里插入图片描述

Flagging 标记

默认情况下, Interface 具有“Flag”按钮。当用户看到输入中有意义的输出时,例如错误或意外的行为,可以标记输入以供您查看。在由 flagging_dir= 参数提供给 Interface 构造函数的目录中,CSV文件将记录标记的输入。如果接口涉及文件数据,例如图像和音频组件,则也将创建文件夹来存储这些标记的数据。
默认情况在项目目录下,flagged文件夹下。
标记的数据存储在下面显示的标记目录中:

+-- calculator.py
+-- flagged/
|   +-- logs.csv

注:如果你希望用户提供一个标记的原因,则可以将一个字符串列表传递给Interface的 flagging_options 参数。用户在标记时必须选择其中一个字符串,该字符串将保存为CSV的附加列。

简单示例展示

import gradio as gr

with gr.Blocks() as demo:
    with gr.Row():
        gr.Dropdown(["模型1", "模型2", "模型3"], label="Stable Diffusion模型")
        gr.Dropdown(["模型1", "模型2", "模型3"], label="外挂VAE模型")
        gr.Slider(label="CLIP终止层数")

    with gr.Tab("文生图"):
        with gr.Row():
            with gr.Column(scale=5):
                gr.Textbox(label="提示词", placeholder="请输入提示词", lines=5)
                gr.Textbox(label="反向提示词", placeholder="请输入反向提示词", lines=2)
            with gr.Column(scale=3):
                gr.Button("生成", variant="primary")
                with gr.Row():
                    gr.Button("", icon=".\\resources\\arrow.png")
                    gr.Button("", icon=".\\resources\\file.png")
                    gr.Button("", icon=".\\resources\\delete.png")
                gr.Dropdown(["模型1", "模型2", "模型3"], label="Stable Diffusion模型")

        with gr.Tab("生成"):
            with gr.Row():
                with gr.Column():
                    gr.Slider(label="采样步数")
                    gr.Radio(["DPM++2M Karras", "DPM++ SDE Karras", "DPM++2M SDE Exponential",
                              "DPM++2M SDE Karras", "Euler a", "Eular", "LMS", "Heun", "DPM2",
                              "DPM2 a", "DPM++ 2M", "DPM++ SDE", "DPM++ 2M SDE", "DPM++ 2M SDE Heun",
                              "DPM Fast", "DPM Adaptive", "DPM Adaptive Karras", "LMS Karras", "DPM2 Karras",
                              "DPM2 a Karras", "DPM++ 2M Karras", "DPM++ 2M SDE Karras", "DPM++ 2M SDE Karras Heun"],
                             label="采样方法")
                    with gr.Accordion("高分辨率修复"):  # 折叠排版
                        with gr.Row():
                            gr.Dropdown(["模型1", "模型2"], label="放大算法")
                            gr.Slider(label="高分迭代步数")
                            gr.Slider(label="重绘幅度")
                        with gr.Row():
                            gr.Slider(label="放大倍数")
                            gr.Slider(label="将宽度调整为")
                            gr.Slider(label="将高度调整为")
                    with gr.Accordion("Refiner"):
                        with gr.Row():
                            gr.Dropdown(["模型1", "模型2"], label="模型")
                            gr.Slider(label="切换时机")
                    with gr.Row():
                        with gr.Column(scale=3):
                            gr.Slider(label="宽度")
                            gr.Slider(label="高度")
                        with gr.Column(scale=1, min_width=1):
                            gr.Slider(label="总批次", min_width=1)
                            gr.Slider(label="单批数量", min_width=1)
                    gr.Slider(label="提示词引导系数")
                with gr.Column():
                    gr.Gallery([
                        ".\\resources\\1.jpg",
                        ".\\resources\\2.jpg",
                        ".\\resources\\3.jpg",
                        ".\\resources\\4.jpg",
                        ".\\resources\\5.jpg",
                        ".\\resources\\6.jpg",
                        ".\\resources\\7.jpg",
                        ".\\resources\\8.jpg",
                        ".\\resources\\9.jpg",
                        ".\\resources\\10.jpg",
                    ], columns=4)
                    with gr.Row():
                        gr.Button("发送到重绘")
                        gr.Button("发送到后期处理")
                        gr.Button("下载")
                    gr.Textbox(label="图像信息", lines=5)
            pass
        with gr.Tab("嵌入式"):
            pass
        with gr.Tab("超网络"):
            pass
        with gr.Tab("模型"):
            pass
        with gr.Tab("LORA"):
            pass
    with gr.Tab("图生图"):
        pass
    with gr.Tab("后期处理"):
        pass
    with gr.Tab("PNG图片信息"):
        pass
    with gr.Tab("模型训练"):
        pass
    with gr.Tab("模型融合"):
        pass
    with gr.Tab("训练"):
        pass

demo.launch()

效果展示:

在这里插入图片描述

gradio入门苏黎世的从前927于 2024-12-31 22:08:37 发布阅读量955 收藏 23点赞数 27分类专栏: 工具 文章标签: 前端框架版权工具专栏收录该内容1 篇文章订阅专栏快速入门import gradio as gr def greet(name): return "h1 " + name + "!" gr.Interface( fn=greet, inputs="text", outputs="text", title="Greeting Interface", description="This interface greets the user with the provided name." ).launch(share=True)文件名为app.py,直接在终端运行python app.py。即会出现一个链接,打开链接,就会在浏览器界面出现内容。但是使用这种方法,当需要更改代码时,更改后,需要将服务停掉,重新运行,很不方便。所以,第二种方法,使用debug模式运行。方法:将接口赋值给demo(固定写法,debug模式必须在demo的命名空间下启动),然后用demo启动,最后在终端运行gradio app.pyimport gradio as gr def greet(name): return "h1 " + name + "!" demo = gr.Interface( fn=greet, inputs="text", outputs="text", title="Greeting Interface", description="This interface greets the user with the provided name." ) demo.launch(share=True)Gradio 学习笔记:构建简单的 AI 交互界面1. Gradio 简介Gradio 是一个 Python 库,可以快速为机器学习模型创建友好的 Web 界面。它的特点是:简单易用,几行代码即可创建界面支持多种输入输出类型可以快速分享和部署适合原型开发和演示2. 基本安装和使用# 安装pip install gradio# 基本导入import gradio as gr3. 常用组件3.1 输入组件gr.Textbox(): 文本输入框gr.Number(): 数字输入框gr.Slider(): 滑动条gr.Radio(): 单选按钮gr.Checkbox(): 单个复选框gr.CheckboxGroup(): 多选框组gr.Image(): 图片上传gr.Audio(): 音频上传3.2 输出组件gr.Textbox(): 文本显示gr.Label(): 标签显示gr.Image(): 图片显示gr.Plot(): 图表显示4. 界面布局4.1 基本布局元素with gr.Blocks() as demo:    # Markdown 支持    gr.Markdown("# 标题")        # 标签页    with gr.Tab("标签1"):        # 内容        # 行布局    with gr.Row():        # 并排组件5. 实战示例:多功能演示程序import gradio as grdef greet(name, is_shouting=False):    if is_shouting:        return f"你好, {name.upper()}!"    return f"你好, {name}!"def calculator(num1, num2, operation):    if operation == "加":        return str(num1 + num2)    elif operation == "减":        return str(num1 - num2)    elif operation == "乘":        return str(num1 * num2)    elif operation == "除":        return str(num1 / num2) if num2 != 0 else "除数不能为零"with gr.Blocks() as demo:    gr.Markdown("# 多功能演示程序")        with gr.Tab("问候程序"):        gr.Markdown("## 问候功能")        with gr.Row():            name = gr.Textbox(label="请输入您的名字")            is_shouting = gr.Checkbox(label="大写模式")            greet_output = gr.Textbox(label="问候语")        name.change(fn=greet, inputs=[name, is_shouting], outputs=greet_output)        is_shouting.change(fn=greet, inputs=[name, is_shouting], outputs=greet_output)        with gr.Tab("计算器"):        gr.Markdown("## 计算器功能")        with gr.Row():            num1 = gr.Number(label="第一个数")            num2 = gr.Number(label="第二个数")            operation = gr.Radio(["加", "减", "乘", "除"], label="运算")            result = gr.Textbox(label="结果")                calculate_btn = gr.Button("计算")        calculate_btn.click(            fn=calculator,            inputs=[num1, num2, operation],            outputs=result        )demo.launch()6. 事件处理Gradio 支持多种事件:click(): 点击事件change(): 值改变事件submit(): 提交事件7. 部署和分享本地运行:demo.launch()公开分享:demo.launch(share=True)自定义端口:demo.launch(server_port=7860)8. 实用技巧1. 使用 gr.Markdown() 添加格式化文本使用 with gr.Row() 创建水平布局使用 with gr.Tab() 创建多标签页界面使用 value= 参数设置默认值使用 label= 参数设置组件标签9. 注意事项1. 确保函数输入输出与界面组件匹配2. 处理异常情况(如除零错误)合理组织界面布局,提高用户体验添加适当的提示信息和说明文字10. 总结Gradio 是一个强大而简单的工具,特别适合:快速创建演示界面展示机器学习模型创建简单的 Web 应用原型验证和测试通过这些基础知识,你已经可以创建实用的交互界面了。随着深入学习,你还可以探索更多高级功能,如自定义主题、API集成等。
03-12
### Gradio 基本使用方法 #### 安装 Gradio 为了开始使用 Gradio,需先通过 `pip` 工具安装库。这可以通过执行以下命令完成[^2]: ```bash pip install gradio ``` #### 创建基本的 AI 交互界面 Gradio 的核心功能之一是能够快速创建机器学习模型或其他 Python 函数的 Web 界面。下面是一个简单的例子来展示如何实现这一点。 要创建一个基于图像分类器的应用程序,可以按照如下方式定义函数以及其对应的输入输出接口[^4]: ```python import gradio as gr def classify_image(image): # 这里应该放置实际处理逻辑,比如调用预训练好的神经网络进行预测 prediction = {"cat": 0.9, "dog": 0.1} return prediction demo = gr.Interface( fn=classify_image, inputs="image", outputs="label" ) if __name__ == "__main__": demo.launch(share=True) # 启动应用程序并允许共享链接 ``` 这段代码做了几件重要的事情: - 导入了必要的模块 (`gradio`) - 定义了一个名为 `classify_image()` 的函数,它接收一张图片作为参数,并返回类别概率字典形式的结果。 - 使用 `Interface` 类实例化对象 `demo` 来配置前端UI布局;指定了目标函数(`fn`)、输入组件类型(`inputs`) 和 输出显示样式(`outputs`)。 - 调用了 `.launch()` 方法启动服务端监听请求的同时还可以选择性开启公共访问权限以便于分享给他人测试[^3]。 #### 调试技巧 当开发过程中出现问题时,建议采取以下几个措施来进行有效的错误排查: - 查看终端中的日志信息,通常会提供有关失败原因的具体提示; - 利用浏览器开发者工具检查是否有任何 JavaScript 错误发生; - 如果怀疑问题是由于特定版本引起的,则尝试更新至最新稳定版或者回滚到之前正常工作的版本; - 参考官方文档获取更多关于 API 参数设置的帮助说明[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值