当前位置:   article > 正文

Gradio快速入门_gradio教学

gradio教学

PS:Gradio需要Python 3.8或更高版本,pip install gradio

  • 一、Gradio提供了两种构建web app的方法:
    • Interface和ChatInterface,提供了高级抽象。
      • 1. demo,使用gr核心类--Interface,可以用用户界面包装任何Python函数
        1. import gradio as gr
        2. def greet(name):
        3. return "Hello " + name + "!"
        4. demo = gr.Interface(fn=greet, inputs="text", outputs="text")
        5. demo.launch()
      • 2. gr.Interface类,主要有三个参数
        • fn:包装UI的函数
        • inputs:输入component(s)(e.g. "text", "image" or "audio")
        • output:输出component(s)(e.g. "text", "image" or "label")
      • 3. 通过gr组件类的属性自定义组件
          1. import gradio as gr
          2. def greet(name):
          3. return "Hello " + name + "!"
          4. demo = gr.Interface(
          5. fn=greet,
          6. inputs=gr.Textbox(lines=2, placeholder="Name Here..."),
          7. outputs="text",
          8. )
          9. demo.launch()

      • 4. 多输入输出:
        • 用列表传递输入输出组件,输入列表中的每个组件依次对应函数的一个参数。输出列表中的每个组件依次对应于函数返回的一个值。
          1. import gradio as gr
          2. def greet(name, is_morning, temperature):
          3. salutation = "Good morning" if is_morning else "Good evening"
          4. greeting = f"{salutation} {name}. It is {temperature} degrees today"
          5. celsius = (temperature - 32) * 5 / 9
          6. return greeting, round(celsius, 2)
          7. demo = gr.Interface(
          8. fn=greet,
          9. inputs=["text", "checkbox", gr.Slider(0, 100)],
          10. outputs=["text", "number"],
          11. )
          12. demo.launch()

      • 5. 其他组件:Gradio支持多种类型的组件,如Image、DataFrame、Video或Label
        • Image:当使用Image组件作为输入,函数将接收形状为(height, width, 3)的NumPy数组,3表示RGB值。图像作为输出也是NumPy数组。
          1. import numpy as np
          2. import gradio as gr
          3. def sepia(input_img):
          4. sepia_filter = np.array([
          5. [0.393, 0.769, 0.189],
          6. [0.349, 0.686, 0.168],
          7. [0.272, 0.534, 0.131]
          8. ])
          9. sepia_img = input_img.dot(sepia_filter.T)
          10. sepia_img /= sepia_img.max()
          11. return sepia_img
          12. demo = gr.Interface(sepia, gr.Image(shape=(200, 200)), "image")
          13. demo.launch()

        • 可以使用type=关键字参数设置组件使用的数据类型。例如,如果想让函数接受一个图像文件路径,而不是NumPy数组,则输入的image组件:gr.Image(type="filepath", shape=...)
      • 6. 高级类gr.ChatInterface,类似于gr.Interface,专为聊天机器人ui设计。
        • 该类包装的函数应接受两个参数:message和history(参数命名任意,但必须按照这个顺序)
          • message:用户输入的STR
          • history:列表的列表,对话记录。每个列表由两个str组成,[ 用户输入,bot响应 ]。
          • 函数应返回单个字符串响应,是bot对用户输入消息的响应。
            1. import random
            2. import gradio as gr
            3. def random_response(message, history):
            4. return random.choice(["Yes", "No"])
            5. demo = gr.ChatInterface(random_response)
            6. demo.launch()

    • Blocks
      • 1. 是一个低级API,设计具有更灵活布局(自定义)和复杂数据流的web应用程序。
        • 用with子句创建block,在子句中创建的任何组件都会自动添加到app中。
        • 组件默认按照创建的顺序垂直显示在app中。(可自定义布局)
        • event-listener API ( 例如click ) 与Interface一样,接受一个Python函数和输入输出组件。
          1. import gradio as gr
          2. def greet(name):
          3. return "Hello " + name + "!"
          4. with gr.Blocks() as demo:
          5. name = gr.Textbox(label="Name")
          6. output = gr.Textbox(label="Output Box")
          7. greet_btn = gr.Button("Greet")
          8. greet_btn.click(fn=greet, inputs=name, outputs=output, api_name="greet")
          9. demo.launch()

      • 2. 自定义布局
        • with gr.Tab分页, with gr.Accordion可折叠框,with gr.Row()行内显示
          1. import numpy as np
          2. import gradio as gr
          3. def flip_text(x):
          4. return x[::-1]
          5. def flip_image(x):
          6. return np.fliplr(x)
          7. with gr.Blocks() as demo:
          8. gr.Markdown("Flip text or image files using this demo.")
          9. with gr.Tab("Flip Text"):
          10. text_input = gr.Textbox()
          11. text_output = gr.Textbox()
          12. text_button = gr.Button("Flip")
          13. with gr.Tab("Flip Image"):
          14. with gr.Row():
          15. image_input = gr.Image()
          16. image_output = gr.Image()
          17. image_button = gr.Button("Flip")
          18. with gr.Accordion("Open for More!"):
          19. gr.Markdown("Look at me...")
          20. text_button.click(flip_text, inputs=text_input, outputs=text_output)
          21. image_button.click(flip_image, inputs=image_input, outputs=image_output)
          22. demo.launch()

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/586308
推荐阅读
相关标签
  

闽ICP备14008679号