使用Gradio快速部署机器学习模型:自动化生成交互式Web页面教程

<[id_850662822] src[id_479599955[id_29575[id_1484877883]364]id_98304525]'https[id_1560888132]//i-blog.csdnimg.cn/blog_mi[id_1046918205]ate/f37c8a61f0fac5d5d0f2e3641be73f4c.png' alt='在这里插入图片描述'/>

使用Gradio快速部署机器学习模型:自动化生成交互式Web页面教程

使用 gradio 时,只需在原有的代码里添加几行内容,就可以快速地部署机器学习模型。这样做能够实现自动化生成交互式的 web 页面,并且还支持多种输入输出格式,例如在图像分类中是图>>标签,在超分辨率中是图>>图等。

它既可以生成能够被外部网络访问的链接,又能够快速让你的朋友以及同事去体验你的算法。

参考

文章目录

安装

注意,不要把python文件与

pip install gradio

简单的欢迎界面分析,包含输入文字 UI 以及函数处理,最终会输出文字。

逻辑:输入UI中的参数,提交后自动传入绑定的函数,

其中 “text” 表示输入输出UI控件是文本框。

import gradio as gr
def greet(name):
    return "Hello " + name + "!"
demo = gr.Interface(fn=greet,inputs="text", outputs="text")
demo.launch()
'''
如果需要在服务器部署后,局域网访问, 修改为:
'''
demo 的 queue 被启动,服务器名称为“0.0.0.0”。

UI操作效果

默认启动,如果 7860 已被占用,就会自动变为 7861;如果端口无法启动,那么当端口被占用时,可以指定端口。

通过 demo 启动并将服务器端口设定为 30001。

http://127.0.0.1:7860/

动效

分析

在上面的例子中,我们看到一个简单的基于文本的函数

gr.InterfaceInterface 的核心类通过使用三个必需参数来完成初始化,这三个必需参数分别是 Interface 。

将 UI 包裹起来的函数,此函数具备各种功能,包括音乐生成器,也包含税收计算器,还涵盖预训练机器学习模型的预测函数

输入所使用的组件,像“text”,还有“image”以及“audio”。

用于输出的组件,像“text”,还有“image”以及“label”。

使用控件函数设置控件的参数

设置2行文本宽度,文本框的内的提示词

import gradio as gr
def greet(name):
    return "Hello " + name + "!"
demo = gr.Interface(
    fn=greet,
    inputs=gr.Textbox(lines=2, placeholder="这里是提示文本框输入的内容..."),
    outputs="text",
)
demo.launch()

UI界面

多UI控件输入、输出

3个UI控件作为输入,2个输出,

输入名字,是否是早晨,今天的温度,

自动输入问候以及华氏温度与摄氏温度的转换

import gradio as gr
def greet(name, is_morning, temperature):
    # salutation表示致意、问候
    salutation = "Good morning" if is_morning else "Good evening"
    greeting = f"{salutation} {name}. It is {temperature} degrees today"
    # 摄氏温度 = (华氏温度 – 32) ÷ 1.8
    celsius = ([id_462510077]- 32) * 5 / 9
    return greeting, round(celsius, 2)
demo = gr.Interface(
    fn=greet,
    inputs=["text", "checkbox", gr.Slider(0, 100,label="华氏温度")],
    outputs=["text", "number"],
)
demo.launch(server_port=30001)

二、简单界面控件组合

2.1 多个tags界面,(不同输入输出功能)

每个tags的功能、输入输出控件科技不同、且独立

多tags代码


import gradio as gr
#app 1
def user_greeting(name):
    return "Hi! " + name + " Welcome !!"
#app 2
def user_help(value):
    return f"you pick {value} "
def tags3(img):
    return img
# tags1的输入、输出,以及对应处理函数
app1 =  gr.Interface(fn = user_greeting, inputs="text", outputs="text")
# tags1的输入、输出,以及对应处理函数
app2 =  gr.Interface(fn = user_help, inputs="slider", outputs="text")
# tags1的输入、输出,以及对应处理函数
app3 =  gr.Interface(fn = tags3, inputs="image", outputs="image")
demo = gr.TabbedInterface(
                          [app1, app2,app3],
                          tab_names=["第一个界面", "第二个界面","tags3_图像"],
                          title="多选项卡demo"
                          )
demo.launch()

2.2 进度条显示函数处理时间(process)

[id_122767862]

2.2 进度条代码

import gradio as gr
import time
以下是改写后的内容:关于 gradio.app/docs/#progress ,涉及到从某个方面来讲的内容,具体而言,是关于进度方面的相关阐述,在 gradio.app 的文档中有所提及。
def my_function(x=10, progress_demo=gr.Progress()):
    x=int(x)
    progress_demo(0, desc="Starting...")
    time.sleep(1)
    for i in progress_demo.tqdm(range(x)):
        time.sleep(0.1)
    res=f'run {x} steps'
    return res
gr.Interface(my_function,
             gr.Number(),
             gr.Textbox()).queue().launch()

三、图像相关操作、模型部署 3.1 对上传图片,直接处理

上传一张图片,输入的是灰度图像,并且可以将处理函数修改为自己的。

### 完整代码

import numpy as np
import gradio as gr
from PIL import Image
def gray(input_img):
    灰度值等于 0.2989 乘以 R 再加上 0.5870 乘以 G 然后加上 0.1140 乘以 B
    图像的[..., :3]表示提取该图像的前三个通道,这三个通道分别是 R 通道、G 通道和 B 通道。
    # 省略号可以在索引中表示对应维度的完整范围。
    gray = np.dot(input_img[..., :3], [0.2989, 0.5870, 0.1140])
    gray = gray.astype(np.uint8)  # 将灰度图像转换为无符号整型 ,如果不加一般会报错
    pil_image 由灰度图像数组转换而来,它是通过 Image.fromarray(gray) 实现的,从而得到了 PIL 图像对象
    return gray
demo = gr.Interface(gray, gr.inputs.Image(), outputs="image")
demo.launch(server_port=7862)
'''
如果在服务器部署之后需要进行局域网访问,那么就添加服务名 server_name 。
'''
# demo.queue().launch( server_name="0.0.0.0")

3.2 分类模型UI部署 (需要安装pytorch环境)

下载模型界面(可手动)

正在下载:""到 C:\Users\admin/.cache\torch\hub\v0.6.0.zip

正在下载:“”至 C:\Users\admin/.cache\torch\hub\checkpoints\resnet18-f37072fd.pth

代码

import gradio as gr
import torch
import requests
from torchvision import transforms
model = torch.hub.load(“pytorch 的 vision 版本为 v0.6.0”, 'resnet18', pretrained=True).eval()
response = requests.get("https://git.io/JJkYN")
labels = response.text.split("\n")
print('labels',labels)
def predict(inp):
  inp = transforms.ToTensor()(inp).unsqueeze(0)
  with torch.no_grad():
    prediction = torch.nn.functional.softmax(model(inp)[0], dim=0)
    confidences = {labels[i]: float(prediction[i]) for i in range(1000)}
  return confidences
demo = gr.Interface(fn=predict,
             inputs=gr.inputs.Image(type="pil"),
             outputs=gr.outputs.Label(num_top_classes=3),
             # examples=[["cheetah.jpg"]],
             )
demo.launch(server_port=7865)

附录显示端口被占用,出现了[Errno 10048]错误,在尝试绑定到地址时发生了该错误。

ERROR: [Errno 10048] 在尝试绑定到地址 ('127.0.0.1', 7860) 时出错:通常一次只允许使用每个套接字地址(包括协议、网络地址和端口)一次。

解决方法1 (指定打开的端口)

server_port=xxx

...........
demo.launch(server_port=30001)

解决方法2

打开命令端

找到占用端口+杀死

netstat -ano|findstr "7860"
taskkill  -F -PID your_id

你可能想看:
« 上一篇
下一篇 »

相关推荐

python爬虫教程PDF,Python爬虫书PDF

2026年09月02日

31阅读

外国教程python,python编程教学视频

2026年09月02日

25阅读

python简明教程沈洁元,python详细基础教程

2026年09月02日

21阅读

python库包教程,python 包

2026年09月02日

26阅读

python教程大全集,python教程600集

2026年09月02日

26阅读

python入门教程完整版,python零基础入门全套教程视频

2026年09月02日

22阅读