Gradio官方文档

news2024/11/22 15:04:12

文章目录

  • 构建您的第一个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()

统一演示

在这里插入图片描述

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

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

相关文章

NVM使用教程

文章目录 ⭐️写在前面的话⭐️1、卸载已经安装的node2、卸载nvm3、安装nvm4、配置路径以及下载源5、使用nvm下载node6、nvm常用命令7、全局安装npm、cnpm8、使用淘宝镜像cnpm9、配置全局的node仓库🚀 先看后赞,养成习惯!🚀&#…

iostream、fstream、sstream、string、vector、unordered_map、stack

iostream 用于输入输出操作&#xff0c;包含了处理标准输入输出流的功能&#xff08;例如&#xff0c;cin, cout, cerr等&#xff09;。 #include <iostream>int main() {int number;std::cout << "Enter a number: ";std::cin >> number;std::…

python数据分析和可视化【3】体检数据分析和小费数据分析

文章目录 体检数据分析小费数据分析 体检数据分析 要求&#xff1a; &#xff08;1&#xff09;读取testdata文件&#xff0c;利用agg函数统计数据中‘淋巴细胞计数’的和与均值、‘白细胞计数’的和与均值。 &#xff08;2&#xff09;统计不同性别人群的血小板计数 &#xf…

思维题一(C++ 题目 代码 注解)

目录 题目一&#xff1a; 题目二&#xff1a; 题目三&#xff1a; 题目四&#xff1a; 题目一&#xff1a; #include<iostream> #include<cmath> using namespace std; int main() {int n;cin>>n;int a[100];//装因子int p 0;//递增数组序号for(int i2;i&l…

力扣389周赛复盘

字符串及其反转中是否存在同一子字符串 class Solution {public boolean isSubstringPresent(String s) {StringBuilder sb new StringBuilder(s);String reverse sb.reverse().toString(); for (int i 0; i < s.length() - 2; i) { // 修改循环终止条件为 <&#xf…

我的保研材料全部损坏了!这个压缩包文件格式未知或数据已经被损坏不可预料的压缩文件末端

求助各位友友&#xff0c;我的保研材料全部没了&#xff01; 之前为了清理D盘&#xff0c;把之前保研期间准备的几个G的材料全部压缩放在了U盘&#xff0c;但是现在却损坏打不开了&#xff0c;之前为了省事也没有添加过“恢复记录”&#xff01;&#xff01;&#xff01; 先声…

【重温设计模式】策略模式及其Java示例

策略模式的基本概念 策略模式&#xff0c;是一种常见的行为设计模式&#xff0c;主要用于处理程序中的一些相同行为&#xff0c;但具有不同实现方式的问题。在策略模式中&#xff0c;我们将每一种行为封装为一个个策略类&#xff0c;通过策略类的组合和切换&#xff0c;可以灵…

ubuntu20.04安装Pycharm

下载pycharm安装包 https://www.jetbrains.com/pycharm/download/#sectionlinux 使用社区版点击download 下载好的pycharm如图所示&#xff0c;右键解压&#xff1a; 打开终端&#xff0c;输入cd命令&#xff0c;进入刚刚解压文件夹下的bin文件夹&#xff0c;命令行是cd 文…

[BT]BUUCTF刷题第2天(3.20)

第2天&#xff08;共5题&#xff09; Web [ACTF2020 新生赛]Exec Payload&#xff1a;target127.0.0.1;cat /flag 分号;在许多shell中用作命令分隔符&#xff0c;意味着在执行完前一个命令&#xff08;这里是设置target变量&#xff09;后&#xff0c;接着执行cat /flag命令…

python日常刷题(一)

前言&#xff1a;本文记录2024年3月11日至2024年3月19日牛客网所做的基础题目&#xff08;错题本&#xff09;&#xff1a; &#x1f3ac;个人简介&#xff1a;努力学习ing &#x1f4cb;本专栏&#xff1a;python日常刷题 &#x1f380;CSDN主页&#xff1a;愚润求学 文章目录…

好就业三种专业#信息安全#云计算#网络工程

一、信息安全专业 根据2021年网络安全宣传周白皮书的观察结果&#xff0c;网络安全产业对于人才的需求正以高速增长的趋势呈现&#xff0c;当前网络安全行业存在着巨大的人才缺口&#xff0c;平均供求比例约为1:2。这一现象导致了资深人才的储备不足&#xff0c;并且新人才的培…

RocketMq 顺序消费、分区消息、延迟发送消息、Topic、tag分类 实战 (消费者) (三)

消费端配置 如下所示&#xff1a;是消费者的配置类&#xff0c;有以下几点需要注意的地方 1、是TargetMessageListener这个监听类&#xff08;下文会把这个监听类的具体代码贴出来&#xff09;&#xff0c;需要把这个监听类订阅。 2、rocketMqDcProperties.getTargetProperties…

爬虫基础:HTTP基本原理

爬虫基础&#xff1a;HTTP基本原理 前言HTTP基本原理URI 和 URLHTTP 和 HTTPSHTTP 请求过程请求与响应HTTP请求HTTP响应请求与响应的交互过程 HTTP 2.0二进制传输多路复用Header压缩服务器端提前响应内容安全 前言 了解 HTTP的基本原理&#xff0c;了解从往测览器中输人 URL到获…

微服务day04(上)-- RabbitMQ学习与入门

1.初识MQ 1.1.同步和异步通讯 微服务间通讯有同步和异步两种方式&#xff1a; 同步通讯&#xff1a;就像打电话&#xff0c;需要实时响应。 异步通讯&#xff1a;就像发邮件&#xff0c;不需要马上回复。 两种方式各有优劣&#xff0c;打电话可以立即得到响应&#xff0c;但…

Tech Talks技术讲座中文培训-报名学习LPWAN、Matter、蓝牙和Wi-Fi最新开发技能!

Silicon Labs&#xff08;亦称“芯科科技”&#xff09;主办新一轮2024年“亚太区Tech Talks在线技术讲座”即将在5月9日至8月8日&#xff08;中文系列场次&#xff09;&#xff0c;以及4月24日至8月7日&#xff08;英文系列场次&#xff09;正式展开&#xff0c;现正热烈报名中…

spring boot学习第十四篇:使用AOP编程

一、基本介绍 1&#xff0c;什么是 AOP &#xff08;1&#xff09;AOP 为 Aspect Oriented Programming 的缩写&#xff0c;意为&#xff1a;面向切面编程&#xff0c;通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。 &#xff08;2&#xff09;利用 AOP…

排水管网信息化平台:科技赋能,助力城市水环境管理升级

排水管网承担着城市污水、雨水的收集与排出的双重任务&#xff0c;是城市重要的基础设施。城市化率的不断提高&#xff0c;对城市基础设施的性能也提出了考验。 排水管网存在窨井监测设备不足、管段淤积、无序监管、污水超标排放等问题突出&#xff0c;导致部分污水直排受纳水…

Springboot笔记-05

1.Springboot的热部署 spring为开发者提供了一个名为spring-boot-devtools的模块来使Spring Boot应用支持热部署&#xff0c;提高开发者的开发效率&#xff0c;无需手动重启Spring Boot应用。 在pom文件加入依赖 <dependency> <groupId>org.springframework.boot…

像uniapp image标签一样对图片进行缩放和裁剪

像uniapp image标签一样对图片进行缩放和裁剪 0 前言提示1 实现1.1 不保持纵横比缩放图片&#xff0c;使图片的宽高完全拉伸至填满 image 元素1.2 保持纵横比缩放图片&#xff0c;使图片的长边能完全显示出来。也就是说&#xff0c;可以完整地将图片显示出来。1.3 保持纵横比缩…

NCV7428D15R2G中文资料PDF数据手册参数引脚图图片价格概述参数芯片特性原理

产品概述&#xff1a; NCV7428 是一款系统基础芯片 (SBC)&#xff0c;集成了汽车电子控制单元 (ECU) 中常见的功能。NCV7428 为应用微控制器和其他负载提供低电压电源并对其进行监控&#xff0c;包括了一个 LIN 收发器。 产品特性&#xff1a; 控制逻辑3.3 V或5 V VOUT电源&…