Gradio学习笔记--Gradio基本用法和简单案例

这篇具有很好参考价值的文章主要介绍了Gradio学习笔记--Gradio基本用法和简单案例。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

​​​​​​​

目录

1--配置Gradio

2--Hello World案例

2-1--基本使用

2-2--进阶使用

3--图像案例

3--常用类 Interface 和 Blocks


1--配置Gradio

        使用 pip 安装 Gradio:

pip install gradio

2--Hello World案例

2-1--基本使用

import gradio as gr

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

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

demo.launch(share = True)   

Gradio学习笔记--Gradio基本用法和简单案例

Gradio学习笔记--Gradio基本用法和简单案例

        类 gr.Interface()可以包含任何 Python 函数,其通过以下三个必需的参数进行初始化:

① fn:封装好的 Python 函数,即上例中的 greet() 函数;

② inputs:用于输入的组件,可以为 “text”、“image” 或 “audio”,上例中为 “text”;

③ outputs:用于输出的组件,可以为 “text”、“image” 或 “audio”,上例中为 “text”;

        通过 launch() 运行定义的类对象,运行结果包括两个 url,第一个 local url 可以在本地打开和运行;第二个 public url 需要通过设置 share = True 才可生成,可用于分享在其它机器上打开和运行;

2-2--进阶使用

        可通过 gr.Textbox() 来细化输入的组件 inputs,这里设置了输入框的行数为2,提示词为 Name Here...;

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(share = True)
 

Gradio学习笔记--Gradio基本用法和简单案例

         可设置多个输入输出,以实现更复杂的功能,以下函数设置了三个输入和两个输出;三个输入分别为 string(字符串)、boolean(布尔)和 number(数值);两个输出分别为string 和 number 类型;

        函数的功能:输入 name,根据布尔输入 is_morning 判断问候是 moring 还是 evening,并将输入的 number 型华氏温度转换为摄氏温度(Celsius);

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(share = True)

Gradio学习笔记--Gradio基本用法和简单案例

3--图像案例

        Gradio 支持 Image, DataFrame, Video, 或 Label 等类型,以下为简单的图像案例:

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()

Gradio学习笔记--Gradio基本用法和简单案例

        上述代码的功能是将输入的图片进行 sepia 滤波;其中输入和输出的组件都为 Image, 输入组件通过 gr.Image() 来设置其shape,即会对输入图片进行crop或resize的操作;实际输入是一个(w, h, 3)的 numpy 数组,3 表示 RGB,也可以通过 gr.Image(type="filepath", shape=(200, 200)) 来指定不直接转化为 numpy 数组;

import cv2
import numpy as np
import gradio as gr

def sepia(input_img):
    input_img = cv2.imread(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(type="filepath", shape=(200, 200)), "image")
demo.launch()

        上述代码设置了 gr.Image(type="filepath"),不会自动将输入的图片转换为 numpy 数组,需要使用 opencv 等第三方库将图片转换为 numpy 数组;

3--常用类 Interface 和 Blocks

        上述案例均使用封装程度很高的 Interface 类,在一定程度上限制了自由发挥;Gradio提供了支持灵活布局和数据流的 Blocks 类,其抽象程度不及 Interface 类,但其自由开发程度较高;

import gradio as gr

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

with gr.Blocks() as demo:
    name = gr.Textbox(label="Name")
    output = gr.Textbox(label="Output Box")
    greet_btn = gr.Button("Greet")
    greet_btn.click(fn=greet, inputs=name, outputs=output, api_name="greet")

demo.launch()

        上述案例定义了一个按钮 greet_btn,当点击按钮时会执行 greet 函数,函数的输入和输出均为 gr.Textbox() 类型,即字符串类型,其 label 分别注明 box 的名称;

        上述案例可类比于 QT 中槽函数的使用,按钮绑定了一个 greet 的槽函数,当点击时会执行对应槽函数的内容;​​​​​​​

Gradio学习笔记--Gradio基本用法和简单案例

import numpy as np
import gradio as gr

def flip_text(x):
    return x[::-1]

def flip_image(x):
    return np.fliplr(x)

with gr.Blocks() as demo:
    gr.Markdown("Flip text or image files using this demo.") # 使用 Markdown 输出一句话
    with gr.Tab("Flip Text"): # 新建一个 Tab
        text_input = gr.Textbox()
        text_output = gr.Textbox()
        text_button = gr.Button("Flip")
    with gr.Tab("Flip Image"): # 新建一个 Tab
        with gr.Row(): # 同一行排列
            image_input = gr.Image()
            image_output = gr.Image()
        image_button = gr.Button("Flip")

    with gr.Accordion("Open for More!"): # 可折叠的组件
        gr.Markdown("Look at me...")

    text_button.click(flip_text, inputs=text_input, outputs=text_output) # 按钮绑定相应的槽函数
    image_button.click(flip_image, inputs=image_input, outputs=image_output) # 按钮绑定相应的槽函数

demo.launch()

Gradio学习笔记--Gradio基本用法和简单案例

Gradio学习笔记--Gradio基本用法和简单案例

         上述案例使用 gr.Tab() 创建了两个 Tab,在第一个 Tab 中组件默认一个组件占一行,在第二个 Tab 中使用 gr.Row() 设置两个 Image 组件在同一行排列;

        案例使用 gr.Markdown() 输出一句话,并使用 gr.Accordion() 来设置一个可折叠的组件;

        上述案例的功能是实现输入 Text 的反转,以及实现输入 Image 的左右反转;​​​​​​​文章来源地址https://www.toymoban.com/news/detail-433626.html

到了这里,关于Gradio学习笔记--Gradio基本用法和简单案例的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Echart的使用初体验,Echarts的基本使用及语法格式,简单图表绘制和使用及图例添加【学习笔记】

    ECharts 是一个使用 JavaScript 实现的开源可视化库,涵盖各行业图表,满足各种需求。 ECharts 遵循 Apache-2.0 开源协议,免费商用。 ECharts 兼容当前绝大部分浏览器(IE8/9/10/11,Chrome,Firefox,Safari等)及兼容多种设备,可随时随地任性展示。 ECharts 包含了以下特性: 丰富的可视化

    2024年02月04日
    浏览(32)
  • 正则表达式、grep过滤工具、sed基本用法、sed基本操作指令、sed应用案例

    1.1 问题 本案例要求熟悉正则表达式的编写,完成以下任务: 利用grep或egrep工具练习正则表达式的基本用法 1.2 方案 表-1 基本正则列表 表-2 扩展正则列表 1.3 步骤 实现此案例需要按照如下步骤进行。 步骤一:正则表达式匹配练习 1)基本正则表达式 测试 ^ $ [] [^] 测试 .

    2024年01月24日
    浏览(74)
  • Android : Room 数据库的基本用法 —简单应用_一_入门

    Android Room 是 Android 官方提供的一个持久性库,用于在 Android 应用程序中管理数据库。它提供了一个简单的 API 层,使得使用 SQLite 数据库变得更加容易和方便。 以下是 Android Room 的主要特点: 对象关系映射 (ORM):Room 允许您将 Java 或 Kotlin 对象映射到数据库表中。您可以定义数

    2024年04月09日
    浏览(68)
  • CSS样式学习-基本用法

    html超文本传输标签,属性等权重 outline 标签轮廓     input type=\\\"text\\\"     textarea  cols=\\\"30\\\" rows=\\\"10\\\"/textarea outline: none; 表示无轮廓     (开发时用的比较多) CSS 轮廓(outline)属性 | 菜鸟教程 css匹配流程(从下到上,从右到左) Butten去掉边框 CSS 按钮 | 菜鸟教程 复合词   id 下

    2024年01月17日
    浏览(22)
  • Python之Gradio简单使用

    Gradio是一个Python库,用于构建快速的Web界面,以便于使用机器学习模型进行实时演示和交互。使用Gradio,您可以轻松地将机器学习模型封装为交互式应用程序,无需编写任何前端代码。 安装Gradio 示例用法 使用Gradio创建了一个简单的应用程序,将输入文本进行反转并返回结果

    2024年02月08日
    浏览(27)
  • (二)掌握最基本的Linux服务器用法——Linux下简单的C/C++ 程序、项目编译

        静态库(Static Library) :静态库是编译后的库文件,其中的代码在编译时被链接到程序中,因此它会与程序一起形成一个独立的可执行文件。每个使用静态库的程序都会有自己的库的副本,这可能会导致内存浪费。常用后缀名(.a) 优点: ·独立性:库的代码会被静态地链接到

    2024年02月12日
    浏览(36)
  • 【深度学习实验】NumPy的简单用法

    目录 一、NumPy介绍 1. 官网 2. 官方教程 二、实验内容 1. 导入numpy库 2. 打印版本号 3. arange 函数 4. array函数 5. reshape函数 6. 矩阵点乘(逐元素相乘) 7. 矩阵乘法       NumPy是一个常用于科学计算的Python库,尤其在深度学习和机器学习中应用广泛。 NumPyhttps://numpy.org/   NumPy:初

    2024年02月10日
    浏览(29)
  • 【Ajax】笔记-Ajax案例准备与请求基本操作

    按钮+div 服务端简单修改:路由规则:/server 结尾的请求。 点击按钮请求服务器把响应体返回到div中。 修改HTML node server.js 请求参数

    2024年02月15日
    浏览(27)
  • 【C++入门】学习使用二维数组基本知识及用法详解

    🧛‍♂️iecne个人主页: : iecne的学习日志 💡每天 关注 iecne的作品,一起进步 💪一起学习,必看iecne 🐳希望大家多多支持🥰一起进步呀! 二维数组就是在一维数组上多加一个维度。 建议:以下三种定义方式,利用第二种更加直观,提高代码可读性 第二种就是在定义一

    2024年01月25日
    浏览(40)
  • 爬虫——Scrapy框架 (初步学习+简单案例)

    目录 1.scrapy基本用途: 2.结构: 3.scrapy文件结构(示例:game) 4.scrapy安装 二、 简单实例 1.创建项目(打开命令窗口) 2.打开项目  一、Scrapy框架 1.scrapy基本用途: Scrapy是一个快速、高效率的网络爬虫框架,用于抓取web站点并从页面中提取结构化的数据。 Scrapy被广泛用于数据

    2024年02月12日
    浏览(27)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包