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()

效果展示:

在这里插入图片描述

  • 6
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值