Gradio官方文档

文章目录

  • 构建您的第一个demo
  • 分享您的demo
  • 进度条
  • 受密码保护的应用程序
  • The Interface class(接口类)
  • Components Attributes(组件属性)
  • 多个输入和输出组件
  • 图像示例
  • 嵌套列表
  • 描述性内容
  • 手风琴中的附加输入
  • The 4 Kinds of Gradio Interfaces
    • 标准演示
    • 仅输出演示
    • 仅输入演示
    • 统一演示

构建您的第一个demo

import gradio as gr

def greet(name, intensity):		#"def"自建函数;"greet"自定义函数名字;"name"名字(中文);“intensity”强度(中文);表示这个def自建函数greet接收两个参数“name”和“intensity”
    return "Hello, " + name + "!" * int(intensity)	

demo = gr.Interface(	#“interface”界面(中文);gr.Interface 是 Gradio 库中的一个类,demo是gr.Interface这个类的实例;
    fn=greet,
    inputs=["text", "slider"],	#"slider"滑块(中文);
    outputs=["text"],
)
#fn、inputs 和 outputs 是用于定义 Gradio 界面行为和组件的参数;
demo.launch()	#调用 Gradio 接口对象 demo 的方法;用于启动交互式界面;

分享您的demo

demo.launch(share=True)  # Share your demo with just 1 extra parameter 🚀;parameter参数(中文);

进度条

import gradio as gr
import time

def slowly_reverse(word, progress=gr.Progress()):
    progress(0, desc="Starting")	#进度条初始化为 0,状态描述为 "Starting";desc描述(description中文)
    time.sleep(1)	#让程序休眠 1 秒,模拟处理过程中的延迟。
    progress(0.05)	#将进度设置为 0.05
    new_string = ""	#创建一个空字符串,用于存储逆转后的字符串
    for letter in progress.tqdm(word, desc="Reversing"):
        time.sleep(0.25)
        new_string = letter + new_string
    return new_string

demo = gr.Interface(slowly_reverse, gr.Text(), gr.Text())	#创建一个 Gradio 接口对象 demo

demo.launch()

import time这是导入的模块还是库?

import time 是导入了 Python 标准库中的 time 模块,而不是导入了一个库。在 Python 中,库(library)通常是一个包含一组相关功能的集合,而模块(module)则是一个包含变量、函数和类的单个 Python 文件。因此,time 是一个模块,它提供了与时间相关的函数和类,例如 sleep() 用于让程序暂停执行一段时间。

受密码保护的应用程序

import gradio as gr

def update_message(request: gr.Request):	#它接受一个参数 request,类型为 gr.Request
    return f"Welcome, {request.username}"	#request.username 是 gr.Request 对象的属性,表示用户的用户名;f表示使用格式化字符串;

with gr.Blocks() as demo:	# 使用 Blocks 类创建一个代码块,将其命名为 demo。with 语句用于确保在代码块结束时释放资源。
    m = gr.Markdown()	#创建一个 Markdown 组件,这个组件用于显示文本内容。
    logout_button = gr.Button("Logout", link="/logout")	#创建一个按钮组件,将其命名为 logout_button。按钮上显示的文本为 "Logout",并且点击按钮时会跳转到 "/logout" 路径。
    demo.load(update_message, None, m)	#使用 load() 方法加载一个更新函数、一个预处理函数和一个输出组件到代码块中。在这里,update_message 函数用于处理用户输入,所以我们将其加载到代码块中。None 表示没有预处理函数。m 是 Markdown 组件,用于显示欢迎消息。
    
demo.launch(auth=[("Pete", "Pete"), ("Dawood", "Dawood")])	#auth 参数指定了允许访问的用户名和密码列表。

The Interface class(接口类)

fn:包装用户界面(UI)的函数
inputs:用于输入的 Gradio 组件。组件的数量应与函数中参数的数量相匹配。
outputs:用于输出的 Gradio 组件。组件的数量应与函数返回值的数量相匹配。

Components Attributes(组件属性)

import gradio as gr

def greet(name, intensity):
    return "Hello, " + name + "!" * intensity

demo = gr.Interface(
    fn=greet,
    inputs=["text", gr.Slider(value=2, minimum=1, maximum=10, step=1)],
    outputs=[gr.Textbox(label="greeting", lines=3)],
)

demo.launch()

多个输入和输出组件

import gradio as gr

def greet(name, is_morning, temperature):
    salutation = "Good morning" if is_morning else "Good evening"	#“salutation”称呼(中文)
    greeting = f"{salutation} {name}. It is {temperature} degrees today"
    celsius = (temperature - 32) * 5 / 9
    return greeting, round(celsius, 2)	#将摄氏温度 celsius 四舍五入到小数点后两位的精度。

demo = gr.Interface(
    fn=greet,
    inputs=["text", "checkbox", gr.Slider(0, 100)],	#"text"文本框(中文);"checkbox"复选框(中文);
    outputs=["text", "number"],
)
demo.launch()

图像示例

import numpy as np
import gradio as gr

def sepia(input_img):	#input_img代表输入的图像。
    sepia_filter = np.array([	#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)	#将输入图像与深褐色滤镜矩阵进行矩阵乘法运算,得到转换后的深褐色图像。dot点(中文);sepia棕色(中文);filter滤波器(中文)
    sepia_img /= sepia_img.max()	#对转换后的图像进行归一化,以确保图像的像素值在合适的范围内。
    return sepia_img

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

嵌套列表

import gradio as gr
def calculator(num1, operation, num2):
    if operation == "add":
        return num1 + num2
    elif operation == "subtract":
        return num1 - num2
    elif operation == "multiply":
        return num1 * num2
    elif operation == "divide":
        if num2 == 0:
            raise gr.Error("Cannot divide by zero!")	#raise 是 Python 中的一个关键字,用于手动触发异常。
        return num1 / num2

demo = gr.Interface(
    calculator,
    [
        "number", 
        gr.Radio(["add", "subtract", "multiply", "divide"]),	#“radio”单选按钮组件
        "number"
    ],
    "number",
    examples=[
        [45, "add", 3],
        [3.14, "divide", 2],
        [144, "multiply", 2.5],
        [0, "subtract", 1.2],
    ],
    title="Toy Calculator",
    description="Here's a sample toy calculator. Allows you to calculate things like $2+2=4$",
)

demo.launch()

描述性内容

构造函数中有三个参数Interface来指定此内容的位置:

title:接受文本并可以将其显示在界面的最顶部,并且也成为页面标题。
description: 接受文本、Markdown 或 HTML 并将其放置在标题的正下方。
article:它也接受文本、Markdown 或 HTML 并将其放置在界面下方。
在这里插入图片描述

手风琴中的附加输入

import gradio as gr

def generate_fake_image(prompt, seed, initial_image=None):	#prompt(文本提示)、seed(随机种子)和 initial_image(初始图像)。
    return f"Used seed: {seed}", "https://dummyimage.com/300/09f.png"


demo = gr.Interface(
    generate_fake_image,
    inputs=["textbox"],
    outputs=["textbox", "image"],
    additional_inputs=[
        gr.Slider(0, 1000),
        "image"
    ]
)

demo.launch()


The 4 Kinds of Gradio Interfaces

事实证明,该类gradio.Interface实际上可以处理 4 种不同类型的演示:

标准演示:具有单独的输入和输出(例如图像分类器或语音到文本模型)
仅输出演示:不接受任何输入但产生输出(例如无条件图像生成模型)
仅输入演示:不产生任何输出,但接受某种输入(例如,保存上传到持久外部数据库的图像的演示)
统一演示:同时具有输入和输出组件,但输入和输出组件是相同的。这意味着产生的输出会覆盖输入(例如文本自动完成模型)

标准演示

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(), "image")
demo.launch()

仅输出演示

import time

import gradio as gr


def fake_gan():
    time.sleep(1)
    images = [
            "https://images.unsplash.com/photo-1507003211169-0a1dd7228f2d?ixlib=rb-1.2.1&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=387&q=80",
            "https://images.unsplash.com/photo-1554151228-14d9def656e4?ixlib=rb-1.2.1&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=386&q=80",
            "https://images.unsplash.com/photo-1542909168-82c3e7fdca5c?ixlib=rb-1.2.1&ixid=MnwxMjA3fDB8MHxzZWFyY2h8MXx8aHVtYW4lMjBmYWNlfGVufDB8fDB8fA%3D%3D&w=1000&q=80",
    ]
    return images


demo = gr.Interface(
    fn=fake_gan,
    inputs=None,
    outputs=gr.Gallery(label="Generated Images", columns=[2]),	#gallery图库(中文);columns 参数用于设置每行显示的图像列数为 2。
    title="FD-GAN",
    description="This is a fake demo of a GAN. In reality, the images are randomly chosen from Unsplash.",
)

demo.launch()

仅输入演示

import random
import string
import gradio as gr 

def save_image_random_name(image):
    random_string = ''.join(random.choices(string.ascii_letters, k=20)) + '.png'	#首先使用 random.choices() 函数和 string.ascii_letters 来生成一个随机的由字母组成的字符串,长度为 20。然后,将生成的随机字符串与 '.png' 拼接,作为图像的文件名。
    image.save(random_string)	#将上传的图像保存为随机命名的 PNG 文件
    print(f"Saved image to {random_string}!")

demo = gr.Interface(
    fn=save_image_random_name, 
    inputs=gr.Image(type="pil"),  #指定了图像类型为 PIL(Python Imaging Library)格式
    outputs=None,
)
demo.launch()

统一演示

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Android: Gradle 命令

一、查看整个项目依赖传递关系 x.x.x (*) 该依赖已经有了,将不再重复依赖。x.x.x -> x.x.x 该依赖的版本被箭头所指的版本代替。x.x.x -> x.x.x(*) 该依赖的版本被箭头所指的版本代替,并且该依赖已经有了,不再重复依赖。 1. gradlew ap…

冰岛人[天梯赛]

文章目录 题目描述思路AC代码 题目描述 输入样例 15 chris smithm adam smithm bob adamsson jack chrissson bill chrissson mike jacksson steve billsson tim mikesson april mikesdottir eric stevesson tracy timsdottir james ericsson patrick jacksson robin patrickss…

2024年最新Anaconda3 2024版中Jupyter Notebook安装

一、 Anaconda3 2024版下载 1.下载:Free Download | Anaconda 2.等待 解释:默认选择等等下载 ,时间可能数分钟 3.安装 解释:打开刚刚下载的Anaconda Navigator,并如图安装低版本,高版本会直接报错 4. …

[zdyz]FreeRTOS笔记

FreeRTOS基础知识 1,任务调度器简介 调度器就是使用相关的调度算法来决定当前需要执行的哪个任务 抢占式调度 时间片调度 协程式调度 略 2,任务状态 运行态 正在执行的任务,该任务就处于运行态,注意在STM32中,同…

【Web】记录[长城杯 2022 高校组]b4bycoffee题目复现

目录 前言 环境准备 简单分析 EXP(两种打法) 生成Payload 恶意类 ①Spring命令执行回显类 ②Filter型内存马 前言 本地jar包运行打通了,远程500,nss靶机有问题,换了bugku就可( 主要记录下做题过程,纯菜狗,小…

深圳库卡机器人KR460控制柜维修快速解决

一、库卡机器人KR460控制柜常见故障类型 库卡机器人KR460控制柜可能出现的故障类型多种多样,常见的包括电源故障、通信故障、过热保护以及电路板损坏等。这些故障可能导致机器人不能启动、运行不稳定或突然停机等问题。 二、库卡机器人KR460控制柜维修前的准备 在开…

代码随想录刷题day29|非递减子序列全排列全排列II

文章目录 day29学习内容一、非递减子序列1.1、代码-错误写法1.1.1 多了一个return语句。1.1.2、nums[i-1] > nums[i],这个条件写错了,为什么呢?1. 忽略了回溯算法的动态决策过程2. 限制了可能的递增子序列的探索 1.2、代码-正确写法 二、全…

javaSwing超级玛丽

一、摘要 摘要 近年来,Java作为一种新的编程语言,以其简单性、可移植性和平台无关性等优点,得到了广泛地应用。J2SE称为Java标准版或Java标准平台。J2SE提供了标准的SDK开发平台。利用该平台可以开发Java桌面应用程序和低端的服务器应用程序…

小白学视觉 | 超详细!Python中 pip 常用命令

本文来源公众号“小白学视觉”,仅用于学术分享,侵权删,干货满满。 原文链接:超详细!Python中 pip 常用命令 相信对于大多数熟悉Python的人来说,一定都听说并且使用过pip这个工具,但是对它的了…

C语言例3-35:长度运算的例子

长度运算符的表现形式: sizeof(数据类型符) 或 sizeof(变量) 长度运算符的优先级: 与单目算术运算符、单目逻辑运算符、自增和自减运算符的优先级相同。上述优先级相同的运算符的结合性都是从右至左。 长度运算的例子 代码如…

python网络爬虫实战教学——urllib的使用(2)

文章目录 专栏导读1、前言2、URLError3、HTTPError4、urlparse5、urlunparse 专栏导读 ✍ 作者简介:i阿极,CSDN 数据分析领域优质创作者,专注于分享python数据分析领域知识。 ✍ 本文录入于《python网络爬虫实战教学》,本专栏针对…

SpringWEB组件及运行流程

SpringWEB组件 前端控制器: DispatcherServlet(不需要程序员开发),由框架提供,在 web.xml 中配置。 作用:统一处理请求和响应,整个流程控制的中心,由它调用其它组件处理 用户的请求. 处理…

基于QGraphicsView的图像显示控件,支持放大、缩小、鼠标拖动

原链接 前言 这是一个Qt平台的基于QGraphicsView类的图像显示控件,支持输入QPixmap、QImage、opencv的从cv::Mat类。 实现平台:Windows 10 x64 Qt 6.2.3 MSVC 2019 opencv 4.5 先来看演示视频 控件类实现 ImageViewer.h文件 #ifndef IMAGEVIEWER…

力扣刷题Days23-35.搜索插入的位置(js)

1,题目 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。请必须使用时间复杂度为 O(log n) 的算法。 2,代码 /*** param {number[]} nums*…

Autosar Crypto Driver学习笔记(二)

文章目录 Crypto DriverFunction definitionsGeneral APICrypto_InitCrypto_GetVersionInfo Job Processing InterfaceCrypto_ProcessJob Job Cancellation InterfaceKey Management InterfaceKey Setting Interface密钥设置接口Crypto_KeyElementSetCrypto_KeySetValid Key Ex…

206.翻转链表

给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。 输入:head [1,2,3,4,5] 输出:[5,4,3,2,1]示例 2: 输入:head [1,2] 输出:[2,1]示例 3: 输入:head [] 输…

软件设计师:03 - 数据库系统

一、数据模型的分类 1.1、概念数据模型 1.2、结构数据模型 1.3 真题 二、三级模式 概念模式对应的是基本表,概念模式也称为模式 外模式对应的是视图,也称用户模式或者子模式 内模式对应的是数据库里面的存储文件,也称存储模式 真题 三、两级…

使用Dockerfile打包java项目生成镜像部署到Linux

1、Dockerfile 介绍 如果说容器就是“小板房”,镜像就是“样板间”。那么,要造出这个“样板间”,就必然要有一个“施工图纸”,由它来规定如何建造地基、铺设水电、开窗搭门等动作。这个“施工图纸”就是“Dockerfile”。 比起容…

探秘ChatGPT:智能聊天系统的真实面貌

最近,“ChatGPT”这款聊天机器人在网上广受追捧。 该软件被众多人誉为“时代的里程碑”、“科技领域的新冠军”,上次有如此形容的技术便是互联网。 微软创始人比尔盖茨对ChatGPT的描述是,你可能预想出五年后的形态,但是对于十年…

sqlalchemy和moke生成实体类(一)

前言 如果通过java生成实体类,可以通过mybatis或者mybatis-plus的generator。 而sqlalchemy也可以生成实体类,通过sqlalcodegen或者flask-sqlalcodegen。 使用flask-sqlalcodegen生成实体类 建表 建立学生表,如下。 create table stude…