目录
Gradio是一个Python库,用于构建快速的Web界面,以便于使用机器学习模型进行实时演示和交互。使用Gradio,您可以轻松地将机器学习模型封装为交互式应用程序,无需编写任何前端代码。
安装Gradio
pip install gradio
示例用法
使用Gradio创建了一个简单的应用程序,将输入文本进行反转并返回结果。在启动应用程序时,您还添加了共享选项和身份验证。
import gradio as grdef reverse(text): return text[::-1]demo = gr.Interface(reverse, "text", "text")demo.launch(share=True, auth=("username", "password"))
在这个示例中,reverse
函数接受一个文本输入并返回反转后的文本。然后,您使用gr.Interface
类创建了一个接口对象demo
,指定输入类型为"text"(文本输入)和输出类型为"text"(文本输出),并将reverse
函数作为处理函数传递给gr.Interface
。
最后,使用demo.launch()
方法来启动Gradio应用程序。您还传递了share=True
参数,允许其他人通过生成的URL来访问您的应用程序,并且添加了身份验证信息auth=("username", "password")
来限制访问权限。
运行该代码后,您将在命令行中看到一个本地的URL地址,类似于http://127.0.0.1:7860/
。将此URL复制到浏览器中,您将能够访问该应用程序,并在输入框中输入文本,看到反转后的结果。
运行界面:
访问http://127.0.0.1:7860/
会显示登录界面。
输入账号密码后的界面:
应用界面
Gradio提供了两种主要的组件来创建交互式界面:gr.Interface
和gr.Blocks
。它们都可以用于构建Web界面,但在功能和使用方式上有所不同。
1. gr.Interface
是Gradio的主要接口类,用于创建简单而强大的交互式应用程序。它使您能够定义输入和输出的类型,并使用处理函数来处理输入并生成输出。您可以指定不同的输入和输出类型,包括文本、图像、音频、视频等。
代码实例:
这段代码使用Gradio创建了一个简单的图像分类器应用程序。它接受一张图像作为输入,并返回一个包含分类结果的字典。
import gradio as grdef image_classifier(inp): return {'cat': 0.3, 'dog': 0.7}demo = gr.Interface(fn=image_classifier, inputs="image", outputs="label")demo.launch()
运行界面:
在实例中,image_classifier
函数是处理函数,它接受一个图像输入并返回一个包含分类结果的字典。在这个示例中,为了简化,我们返回了一个固定的结果字典 {'cat': 0.3, 'dog': 0.7}
,其中表示该图像有 30% 的概率是猫,70% 的概率是狗。
使用gr.Interface
类创建了一个接口对象 demo
,指定输入类型为 “image”(图像输入)和输出类型为 “label”(标签输出)。在这个示例中,我们只使用了默认的图像和标签组件,因此不需要显示地定义输入和输出界面。
最后,使用 demo.launch()
方法启动Gradio应用程序,并在本地的 Web 服务器上运行它。
运行该代码后,您将在命令行中看到一个本地的 URL 地址,类似于 http://127.0.0.1:7860/
。将此 URL 复制到浏览器中,您将能够访问该应用程序,并上传图像进行分类。
请注意,为了使图像分类器真正有效,您需要将 image_classifier
函数实现为一个真实的模型,该模型将根据输入图像进行实际的分类预测。
2. gr.Blocks
是Gradio的另一个功能,它提供了一种可视化方式来组合和重用交互式组件。通过使用gr.Blocks
,您可以创建复杂的界面布局,并将输入、输出和其他组件组合在一起。每个块都有自己的输入和输出,可以连接到其他块,以构建数据流和处理流程。
代码实例:
使用Gradio的gr.Blocks创建的交互式界面示例。它允许用户输入姓名,并在点击按钮后显示欢迎消息。
import gradio as grdef update(name): return f"Welcome to Gradio, {name}!"with gr.Blocks() as demo: gr.Markdown("Start typing below and then click **Run** to see the output.") with gr.Row(): inp = gr.Textbox(placeholder="What is your name?") out = gr.Textbox() btn = gr.Button("Run") btn.click(fn=update, inputs=inp, outputs=out)demo.launch()
运行界面:
在这个示例中,使用了gr.Blocks()
上下文管理器来创建Gradio界面。然后,使用gr.Markdown
组件添加了一个文本说明。
接下来,在gr.Row()
中创建了一个输入文本框(gr.Textbox
)和一个输出文本框(gr.Textbox
)。输入文本框用于接收用户输入的姓名,输出文本框用于显示欢迎消息。
然后,使用gr.Button
创建了一个按钮(btn
),并使用btn.click()
方法指定了按钮点击事件的处理函数为update
。update
函数接受用户输入的姓名,并返回欢迎消息。
最后,使用demo.launch()
来启动Gradio应用程序,并在本地的Web服务器上运行它。
运行该代码后,您将在命令行中看到一个本地的URL地址,类似于http://127.0.0.1:7860/
。将此URL复制到浏览器中,您将能够访问该应用程序,并在输入框中输入姓名,然后点击按钮来查看欢迎消息的输出。
gr.Interface
适用于创建简单的交互式应用程序,而gr.Blocks
则适用于创建更复杂的界面布局和数据流程。您可以根据自己的需求选择适合的方法。
Gradio的输入和输出组件
Gradio提供了多种输入和输出组件,您可以根据您的应用程序需求选择适当的组件类型。以下是Gradio常用的输入和输出组件:
输入组件(Inputs)
- Textbox(文本框):单行或多行文本输入框。
- Textarea(文本区域):多行文本输入框。
- Checkbox(复选框):单个或多个选项的复选框。
- Radio(单选框):单个选项的单选框。
- Dropdown(下拉菜单):选择一个选项的下拉菜单。
- Slider(滑块):滑动条,用于选择范围内的数值。
- Number(数字输入框):允许输入数字的文本框。
- File(文件上传):用于上传文件的组件。
输出组件(Outputs)
- Label(标签):显示文本标签。
- Textbox(文本框):显示输出文本的文本框。
- Image(图像):显示图像输出。
- KeyValues(键值对):显示键值对的列表。
- JSON(JSON数据):显示格式化的JSON数据。
- Audio(音频):播放音频输出。
- File(文件下载):提供输出文件的下载链接。
除了以上列出的常用组件,Gradio还提供了其他一些特殊用途的组件,如地图(Map)、视频(Video)等。
您可以根据您的应用程序需求选择适当的输入和输出组件,并使用它们来定义gr.Interface
或gr.Blocks
的输入和输出。
其他
Gradio官网:https://www.gradio.app/
Gradio官方文档:https://www.gradio.app/docs/
- 📢博客主页:https://blog.csdn.net/qq233325332
- 📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!
- 📢本文由 陌北v1 原创,首发于 CSDN博客🙉
- 📢停下休息的时候不要忘了别人还在奔跑,希望大家抓紧时间学习,全力奔赴更美好的生活✨
来源地址:https://blog.csdn.net/qq233325332/article/details/131080164