🙃关注公众号 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
: 选择项listvalue
: 默认选定值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