Python之Gradio简单使用

news2025/2/25 19:55:02

目录

      • 安装Gradio
      • 示例用法
      • 应用界面
        • 1. gr.Interface
        • 2. gr.Blocks
      • Gradio的输入和输出组件
        • 输入组件(Inputs)
        • 输出组件(Outputs)
      • 其他

Gradio是一个Python库,用于构建快速的Web界面,以便于使用机器学习模型进行实时演示和交互。使用Gradio,您可以轻松地将机器学习模型封装为交互式应用程序,无需编写任何前端代码。

安装Gradio

pip install gradio

示例用法

使用Gradio创建了一个简单的应用程序,将输入文本进行反转并返回结果。在启动应用程序时,您还添加了共享选项和身份验证。

import gradio as gr
def 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.Interfacegr.Blocks。它们都可以用于构建Web界面,但在功能和使用方式上有所不同。

1. gr.Interface

是Gradio的主要接口类,用于创建简单而强大的交互式应用程序。它使您能够定义输入和输出的类型,并使用处理函数来处理输入并生成输出。您可以指定不同的输入和输出类型,包括文本、图像、音频、视频等。

代码实例:
这段代码使用Gradio创建了一个简单的图像分类器应用程序。它接受一张图像作为输入,并返回一个包含分类结果的字典。

import gradio as gr

def 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 gr
def 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()方法指定了按钮点击事件的处理函数为updateupdate函数接受用户输入的姓名,并返回欢迎消息。

最后,使用demo.launch()来启动Gradio应用程序,并在本地的Web服务器上运行它。

运行该代码后,您将在命令行中看到一个本地的URL地址,类似于http://127.0.0.1:7860/。将此URL复制到浏览器中,您将能够访问该应用程序,并在输入框中输入姓名,然后点击按钮来查看欢迎消息的输出。

gr.Interface适用于创建简单的交互式应用程序,而gr.Blocks则适用于创建更复杂的界面布局和数据流程。您可以根据自己的需求选择适合的方法。

Gradio的输入和输出组件

Gradio提供了多种输入和输出组件,您可以根据您的应用程序需求选择适当的组件类型。以下是Gradio常用的输入和输出组件:

输入组件(Inputs)

  1. Textbox(文本框):单行或多行文本输入框。
  2. Textarea(文本区域):多行文本输入框。
  3. Checkbox(复选框):单个或多个选项的复选框。
  4. Radio(单选框):单个选项的单选框。
  5. Dropdown(下拉菜单):选择一个选项的下拉菜单。
  6. Slider(滑块):滑动条,用于选择范围内的数值。
  7. Number(数字输入框):允许输入数字的文本框。
  8. File(文件上传):用于上传文件的组件。

输出组件(Outputs)

  1. Label(标签):显示文本标签。
  2. Textbox(文本框):显示输出文本的文本框。
  3. Image(图像):显示图像输出。
  4. KeyValues(键值对):显示键值对的列表。
  5. JSON(JSON数据):显示格式化的JSON数据。
  6. Audio(音频):播放音频输出。
  7. File(文件下载):提供输出文件的下载链接。

除了以上列出的常用组件,Gradio还提供了其他一些特殊用途的组件,如地图(Map)、视频(Video)等。

您可以根据您的应用程序需求选择适当的输入和输出组件,并使用它们来定义gr.Interfacegr.Blocks的输入和输出。

其他

Gradio官网:https://www.gradio.app/
Gradio官方文档:https://www.gradio.app/docs/


  • 📢博客主页:https://blog.csdn.net/qq233325332
  • 📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!
  • 📢本文由 陌北v1 原创,首发于 CSDN博客🙉
  • 📢停下休息的时候不要忘了别人还在奔跑,希望大家抓紧时间学习,全力奔赴更美好的生活✨

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/618816.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Vue.js 中的 watch 属性详解

Vue.js 中的 watch 属性详解 在 Vue.js 中,watch 属性是一种非常重要的属性,它可以监听 Vue 实例中指定的数据变化,并在数据发生变化时执行相应的操作。本文将对 Vue.js 中的 watch 属性进行详细的介绍,并附上相关的代码示例。 什…

一文看穿 TypeScript 的庐山真面目

导语: 在了解 TypeScript 之前,我们需要了解 什么是强类型语言和什么是弱类型语言,以及什么是静态类型,什么又是动态类型。 强类型不允许任意的隐式类型转换,而 弱类型 允许静态类型:一个变量声明时它的类型…

基于Python的大数据舆情分析,舆论情感分析可视化系统

运行效果图 基于Python的微博大数据舆情分析,舆论情感分析可视化系统 系统介绍 微博舆情分析系统,项目后端分爬虫模块、数据分析模块、数据存储模块、业务逻辑模块组成。 先后进行了数据获取和筛选存储,对存储后的数据库数据进行提取分析处…

sqlmap -os-shell 使用方法

一、burp suite抓包。 如上图所示,红框处很明显是一个传参点,我们就在这个页面抓包。 抓到包之后将内容保存到桌面的1000.txt文件下。 二、sqlmap跑包。 打开sqlmap跑包。 python sqlmap.py -r C:\Users\16434\Desktop\1000.txt -dbmsmysql --os-shell…

Oracle-catalog影响归档量统计

有个12.2 rac环境报警备份异常,登录检查备份,发现报错日志 piece handle/backup/orcl/archbackup/ARCHBAK_ORCL_20230607_738_1 tagARCH_BAK commentNONE channel d1: backup set complete, elapsed time: 00:01:55 released channel: d1 RMAN-00571: …

从Vuex过渡到pinia

Vuex过渡到Pinia 众所周知,Vuex是一个状态管理库,它方便了我们任何组件不用考虑关系就可以共享一个全局的状态。😃但是 Vuex也有它一定的缺陷。主要缺点,我总结如下: mutations里面不能写异步函数,否则就…

Simulink仿真模块 - Waveform Generator

Waveform Generator模块的功能是使用信号符号输出波形。它所在的库为: Simulink / Sources 如图所示: 双击模型弹出如下对话框,如图所示: Waveform Generator 模块根据您在波形定义表中输入的信号符号输出波形。 此模块支持下列用于信号符号的语法: 函数…

STM32单片机OLED语音识别路灯台灯控制系统人检测亮度调节

实践制作DIY- GC0143-OLED语音识别路灯台灯控制系统 基于STM32单片机设计---OLED语音识别路灯台灯控制系统 二、功能介绍: 电路:STM32F103C系列最小系统串口语音识别模块LED灯板1个红外传感器OLED显示器1个手动自动模式键1个开关按键 1.有两个模式1个手…

速卖通,国际站,temu测评,补单策略:安全与效能并重,提高账号存活率

测评能够帮助卖家让亚马逊平台更喜欢自己的产品,给予更好排名的同时也让后续进入店铺的买家更容易认可自己的产品。这些真实评价在亚马逊卖家管理系统中被称为Review Feedback。这是进行真实交易后形成的评价,而不是通过机器软件生成,形成虚拟…

SpringData进阶篇-下

SpringData进阶篇 一:故事背景二:自定义操作2.1 JPQL和SQL2.1.1 接口内定义2.1.2 调用2.2.3 SQL 方式查询 2.2 规定方法名2.2.1 普通查询规则2.2.2 修饰查询 2.3 Query By Example2.3.1 Repository继承QueryByExampleExecutor2.3.2 具体使用2.3.2 Exampl…

Aspose.Words功能演示:使用 C# 从 Word 文档中读取宏

Aspose.Words 是一种高级Word文档处理API,用于执行各种文档管理和操作任务。API支持生成,修改,转换,呈现和打印文档,而无需在跨平台应用程序中直接使用Microsoft Word。此外, Aspose API支持流行文件格式处…

java-不借用三方程序情况下,使用java自动工具将可执行jar转成exe

一、先新建一个javafx项目 二、配置Artifacts 点击Artifacts,会看到新建的项目会自动创建好了 如果没有的话,可以手动创建如下操作 三、配置 按下图逐一配置即可 四、builde 5、使用java的打包命令打包 PS C:\Users\xx\Downloads\cc\exeex\out\artifacts\JavaFXApp>…

web前端 --- js事件

js事件(event) (js诞生就是基于事件驱动型编程) (1)事件 用户通过各种行为(按键、鼠标点击、鼠标hover......)行为动作,引起相关 js 代码的执行。 事件的三元素&#x…

多篇论文入选ICASSP 2023 火山语音有效解决多类实践问题

近日由IEEE主办、被誉为世界范围内最大规模、也是最全面的信号处理及其应用方面的顶级学术会议ICASSP2023于希腊召开,该会议具有权威、广泛的学界以及工业界影响力,备受AI领域多方关注。会上火山语音多篇论文被接收并发表,内容涵盖众多前沿领…

springboot+vue+java企业车间工位管理系统

。本文介绍了企业级工位管理系统的开发全过程。通过分析企业级工位管理系统管理的不足,创建了一个计算机管理企业级工位管理系统的方案。文章介绍了企业级工位管理系统的系统分析部分,包括可行性分析等,系统设计部分主要介绍了系统功能设计和…

Vue.js 中的过滤器和计算属性

Vue.js 中的过滤器和计算属性 Vue.js 是一款流行的 JavaScript 框架,它提供了一种简单而灵活的方式来构建交互式 Web 应用程序。在 Vue.js 中,过滤器和计算属性是两个常用的概念。它们可以帮助开发者更方便地处理数据,提高代码的可读性和可维…

【学习日记】操作系统-入门知识-个人学习记录

我的学习笔记链接: MyLinuxProgramming 参考资料 CSAPP操作系统导论OSTEP √APUEhttps://stevens.netmeister.org/631软件调试王道-操作系统操作系统真象还原小林coding-图解系统https://xiaolincoding.com嵌入式软件开发笔试面试指南Linux是怎样工作的2020 南京大…

怎么才能成为一名合法的无线电爱好者?

要想成为一名合法的无线电爱好者,就必须要拥有属于自己的呼号及操作证书。那么具体怎么才能获得这些呢?下面河南宝蓝小编就为大家详细介绍下。 车载电台 一、无线电的呼号是什么? 呼号,是从事无线电操作人员或电台,在…

第12章 并 发

多进程与多线程本质的区别:每个进程都拥有自己的一整套变量,而线程则共享数据。 12.1 什么是线程 将执行这个任务的代码放在一个类的run方法中,这个类要实现Runnable接口。 Runnable接口非常简单,只有一个run方法: …

情感分析实战(中文)-数据获取

情感分析实战(中文)-数据获取 背景:该专栏的目的是将自己做了N个情感分析的毕业设计的一个总结版,不仅自己可以在这次总结中,把自己过往的一些经验进行归纳,梳理,巩固自己的知识从而进一步提升,而帮助各大…