首页 > 编程语言 >Gradio: 使用Python构建机器学习网页应用

Gradio: 使用Python构建机器学习网页应用

时间:2023-04-30 16:45:12浏览次数:51  
标签:网页 gr Python text Gradio demo 组件 image

Gradio: 用Python构建机器学习网页APP

Gradio是一个开源的Python库,用于构建演示机器学习或数据科学,以及web应用程序。

使用Gradio,您可以基于您的机器学习模型或数据科学工作流快速创建一个漂亮的用户界面,让用户可以”尝试“拖放他们自己的图像、粘贴文本、录制他们自己的声音,并通过浏览器与您的演示程序进行交互。

image

Gradio适用于:

  • 向客户/合伙人/用户/学生演示您的机器学习模型。

  • 通过自动共享链接快速部署您的模型,并获得模型性能反馈。

  • 在开发过程中使用内置的操作和解释工具交互式地调试模型。

快速开始

依赖: Gradio只需要Python 3.7及以上版本!

Gradio能做什么?

与他人共享机器学习模型、API或数据科学工作流程的最佳方法之一就是创建一个交互式应用,让用户或同事在他们的浏览器中试用。

Gradio让你可以用Python构建演示并分享它们,而且通常只需几行代码!下面让我们开始吧。

Hello, World

要用Gradio运行"Hello World"示例,需要以下三个步骤:

1. 用pip下载Gradio:

pip install gradio

2. 用Python脚本或在Jupyter Notebook中运行下面的代码 (或者使用 Google Colab):

import gradio as gr

def greet(name):
    return "Hello " + name + "!"

demo = gr.Interface(fn=greet, inputs="text", outputs="text")
demo.launch()

3. 下面的演示会自动出现在Jupyter Notebook中,如果使用脚本运行则会在浏览器http://localhost:7860弹出:

image

Interface

你可能会注意到,在运行示例时我们创建了一个 gradio.InterfaceInterface 类可以用用户接口包装任意的Python函数。在上面的示例中,我们使用了一个基于文本的简单函数,但这个函数可以是任何东西,从音乐生成器到税率计算器,再到预训练机器学习模型的预测函数。

Interface 类核心需要三个参数初始化:

  • fn : 被UI包装的函数
  • inputs : 作为输入的组件 (例如: "text", "image" or "audio")
  • outputs : 作为输出的组件 (例如: "text", "image" or "label")

下面我们进一步分析用于输入和输出的组件。

组件属性

在之前的示例中我们可以看到一些简单的文本框组件 Textbox ,但是如果您想改变UI组件的外观或行为呢?

假设您想要自定义输入文本字段,例如您希望它更大并有一个文本占位符。如果我们使用 Textbox 的实际类,而不是使用字符串快捷方式,就可以通过组件属性实现个性化。

import gradio as gr

def greet(name):
    return "Hello " + name + "!"

demo = gr.Interface(
    fn=greet,
    inputs=gr.Textbox(lines=2, placeholder="Name Here..."),
    outputs="text",
)
demo.launch()

image

多输入和输出组件

假设您有一个更复杂的函数,有多个输入和输出。在下面的示例中,我们定义了一个函数,该函数接受字符串、布尔值和数字,并返回字符串和数字。观察应该如何传递输入和输出组件列表。

import gradio as gr

def greet(name, is_morning, temperature):
    salutation = "Good morning" if is_morning else "Good evening"
    greeting = f"{salutation} {name}. It is {temperature} degrees today"
    celsius = (temperature - 32) * 5 / 9
    return greeting, round(celsius, 2)

demo = gr.Interface(
    fn=greet,
    inputs=["text", "checkbox", gr.Slider(0, 100)],
    outputs=["text", "number"],
)
demo.launch()

image

您只需将组件包装在列表中。输入列表inputs中的每个组件依次对应函数的一个参数。输出列表outputs中的每个组件都对应于函数的一个返回值,两者均按顺序对应。

一个图像示例

Gradio支持多种类型的组件,如 ImageDateFrameVideoLabel 。让我们尝试一个图像到图像的函数来感受一下!

import numpy as np
import gradio as gr

def sepia(input_img):
    sepia_filter = np.array([
        [0.393, 0.769, 0.189], 
        [0.349, 0.686, 0.168], 
        [0.272, 0.534, 0.131]
    ])
    sepia_img = input_img.dot(sepia_filter.T)
    sepia_img /= sepia_img.max()
    return sepia_img

demo = gr.Interface(sepia, gr.Image(shape=(200, 200)), "image")
demo.launch()

image

当使用Image组件作为输入时,您的函数将接收一个形状为 (width, height, 3) 的NumPy数组,其中最后一个维度表示RGB值。我们还将以NumPy数组的形式返回一张图像。

你也可以用 type= 关键字参数设置组件使用的数据类型。例如,如果你想让你的函数获取一个图像的文件路径,而不是一个NumPy数组时,输入 Image 组件可以写成:

gr.Image(type="filepath", shape=...)

还要注意,我们的输入 Image 组件带有一个编辑按钮

标签:网页,gr,Python,text,Gradio,demo,组件,image
From: https://www.cnblogs.com/botai/p/Gradio.html

相关文章

  • python requests模块
    requests是Python中用于发送HTTP请求的常用第三方库,可以方便地实现多种请求方式(如GET、POST、PUT、DELETE等),以及文件上传、Cookies管理等功能。以下是requests模块的使用方法和注意事项:安装requests:使用pip命令安装requests库,命令为"pipinstallrequests"。......
  • 2 第2章 Python语言基础、IPython及Jupyter notebook
    IPython基础运行IPython:在终端输入ipython运行Jupyternotebook:在终端输入jupyternotebookShift+Enter来执行命令当在命令行输人表达式时,按下Tab键即可为任意变量(对象、函数等)搜索命名空间;当输入任意路径(甚至是Python字符串)时,按下Tab键将补全你的计算机文件系统文件名;......
  • [oeasy]python0144_try的完全体_否则_else_最终_finally
    try的完全体回忆上次内容上次细化了主控程序(main.py)导入(get_fruits.py)处理(process.py)输出(output.py)使用了try结构tryexcept发现异常就报错输入部分的错误应该在输入部分来报具体怎么报呢?......
  • Python中django的ORM和SQLalchemy简单对比(一)
    1.ORM对象关系映射(英语:ObjectRelationMapping,简称ORM,或O/RM,或O/Rmapping),是一种程序技术,用于实现面向对象编程语言里不同类型系统的数据之间的转换。从效果上说,它其实是创建了一个可在编程语言里使用的“虚拟对象数据库”。一般的ORM包括以下四部分:一个对持久类对象......
  • [oeasy]python0144_try的完全体_否则_else_最终_finally
    try的完全体回忆上次内容 上次细化了主控程序(main.py)导入(get_fruits.py)处理(process.py)输出(output.py) 使用了try结构tryexcept发现异常就报错 输入部分的错误应该在输入部分来报 具体怎么报呢?......
  • python中的wsgi是什么?
    1.简单介绍wsgi是需要安装的。官方定义:wsgi是Web服务器网关接口(PythonWebServerGatewayInterface,缩写为WSGI)是为Python语言定义的Web服务器和Web应用程序或框架之间的一种简单而通用的接口。大白话:wsgi就是一种规范,提供了一种标准,一种sever与application之......
  • PYTHON 微博单独网址
    fromseleniumimportwebdriverfromselenium.webdriverimportActionChainsfromselenium.webdriver.common.byimportBy#按照什么方式查找,By.ID,By.CSS_SELECTORfromselenium.webdriver.common.keysimportKeys#键盘按键操作fromselenium.webdriver.supportimport......
  • <Python数据处理> Jacqueline Kazil Katharine Jarmul
    附录:数据分析师:AllenDowney的《统计思维:程序员数学之概率统计(第2版)》很好地介绍了统计数学概念并且使用了Python。CathyO'Neill和RachelSchutt的《数据科学实战》提供了数据科学领域的深入分析。scipy技术栈WesMcKinney编写了《利用Python进行数据分析》......
  • Think Python-How to Think Like a Computer Scientist_chapter4_练习 4-3
    #coding=gbkimportmathimportturtlebob=turtle.Turtle()print(bob)defpie(t,r,n):"""画一个包含n个三角形的饼图。t:Turtleobjectr:三角形腰长n:包含几个三角形或几边形"""angle1=180/nangle2=90+angle1y=......
  • python脚本 --- 去除txt的指定行数
    #-*-coding:UTF8-*-foriinrange(17,800):filename=i+1;withopen('.\\'+str(filename),"r")asf:#读取文本data=f.readlines()f.close()#那么现在data=[0,1,2,3,4,5,6,7,8,9,10]dirtyid=[0,1,2,3,4,5......