如何使用Gradio将机器学习模型部署为Python中的应用程序
Gradio是一个开源的Python库,允许你为你的机器学习模型快速创建易于使用、可定制的UI组件。
Gradio允许你将图形用户界面直接集成到你的Python笔记本中,使其更容易使用。
在本教程中,我们将探索各种Gradio函数并建立一个简单的Gradio界面。
然后,我们将使用Gradio函数来建立一个图像分类模型。最后,我们将部署网络应用,以便可以用浏览器来访问它。
开始使用Gradio
Gradio是一个强大的工具,它与大多数Python库集成,包括。
- Hugging face:它是一个用于建立自然语言处理应用程序的开源库。
- Matplotlib:它是一个用于机器学习中的可视化的Python库。
- Numpy:它用于数据分析和操作。
- PyTorch:它用于计算机视觉和自然语言处理。
- Sckit-learn:它为机器学习提供各种分类、回归和聚类算法。
- Tensorflow:它用于执行机器学习和人工智能任务。
Gradio也可以嵌入到Jupyter笔记本和Google Colab笔记本中。这不需要运行一个单独的Python脚本。用户可以在工作环境中直接与模型互动。
当你启动一个Gradio界面时,它会自动生成一个链接。它允许其他人使用该链接与你的应用程序进行远程交互。
让我们详细了解一下Gradio的主要好处。
使用Gradio的好处
-
使你能够创建机器学习模型的演示。这些演示可以用来在实际应用实施之前向客户、用户和团队成员展示想法。
-
Gradio允许收集用户的反馈。因此,开发人员可以进行必要的改进。
-
在使用Gradio时,你可以很容易地发现模型中的错误和误差。这使你能够在生产之前消除这些错误。
-
Gradio有一个简单的设置,使其更容易建立机器学习应用程序的模型。
-
Gradio使你能够在在线服务器上永久地部署一个应用程序。
-
Gradio会生成一个公共链接,使其他用户能够与应用程序进行远程交互。
安装Gradio
要开始使用Gradio,我们需要在我们的电脑上安装它。由于我们使用的是Google Colab,我们使用下面的命令来安装Gradio。
!pip install -q gradio
然后,使用下面的命令导入Gradio。
import gradio as gr
在建立图像分类模型之前,我们将首先创建简单的Gradio界面。
简单的Gradio界面
为了创建一个用户界面,我们将从创建一个简单的greet 函数开始。该函数将返回Hello 和用户的名字。
该函数是用下面的代码创建的。
def greet(name):
return "Hello " + name + "!"
接下来,我们需要添加逻辑来创建一个用户界面。该用户界面将允许用户输入他们的名字。
iface = gr.Interface(fn=greet, inputs="text", outputs="text")
iface.launch()
在这段代码中,我们使用gr.interface 函数建立了我们的界面。这个函数有以下参数。
-
fn- 这需要创建的函数作为一个参数。在我们的例子中,创建的函数是 。greet -
inputs- 这些是用户在Gradio界面中输入的输入组件类型。在我们的例子中,输入类型是 。text -
outputs- 输出将是处理后的文本。
我们现在使用launch() 方法启动用户界面。该用户界面将出现在Google Colab笔记本中。
该用户界面也将在你的浏览器中使用以下链接运行。https://localhost:7860/.

该用户界面是互动的。你可以输入你的名字,例如:kelvin ,然后按下submit 按钮,就会输出Hello Kelvin 。
Gradio还提供了一个独特的URL/公共链接,使人们能够访问你的应用程序。这个链接是https://51358.gradio.app ,在Google Colab笔记本中也可以找到。
在下一个例子中,我们将创建一个可以处理多个输入和输出的用户界面。
实现多个输入和输出
我们将使用一个Python函数,它接收三个参数。myname,is_day, 和temperature 。
该函数返回用户的名字、一天中的时间和温度(摄氏度)。
如果是早上,用户的界面将显示Good Morning 。
如果是晚上,用户界面将显示Good Evening 。这可以通过以下代码来实现。
def greet(myname, is_day, temperature):
greeting = "Good Morning" if is_day else "Good Evening "
salute = "%s %s. It is %s degrees today" % (
greeting, myname, temperature)
celsius = (temperature - 24) * 7 / 9
return salute, round(celsius, 2)
让我们来创建Gradio界面。用于创建Gradio界面的函数如下所示。
iface = gr.Interface(
fn=greetings,
inputs=["text", "checkbox", gr.inputs.Slider(0, 100)],
outputs=["text", "number"])
iface.launch()
gr.Interface 接受三个参数。
-
fn.它接收了创建的函数:greet。 -
inputs- 输入组件将是一个文本类型和一个复选框,用于选择是否是 。is_day -
我们还必须指定
gr.inputs.Slider。这是用来选择0和100之间的一天的摄氏度。 -
outputs- 这将显示输出,它将以text的形式和number来表示摄氏度。
让我们检查一下输出。

如果用户没有选择复选框,输出将如下图所示。

到目前为止,我们已经使用各种函数创建了两个Gradio用户界面。我们能够在Google Colab应用程序和浏览器中访问该用户界面。
现在让我们用Gradio来创建图像分类模型。
图像分类模型
为了建立图像分类模型,我们需要导入机器学习包。
这些包将被用来建立模型。Gradio将被用来建立模型的用户界面。
这使用户能够与应用程序进行互动。我们使用以下代码导入它们。
import tensorflow as tf
import numpy as np
import requests
Tensorflow
它被用来训练我们的模型以了解图像分类。它包含有许多层的深度神经网络,形成模型架构。
numpy
它将用于数据分析和操作。
请求
它使用Python发送HTTP请求。这使我们能够与外部服务器互动。
让我们加载用于图像分类的方法。
inception_net = tf.keras.applications.InceptionV3()
InceptionV3() 方法是用来处理TensorFlow库中的图像分类。
添加人类可读的标签
在本节中,我们要处理的是动物图像的分类。我们需要将这些动物的真实名字添加到我们的模型中,以便人类能够理解它们。
这是用下面的代码完成的。
response = requests.get("https://git.io/JJkYN")
labels = response.text.split("\n")
在这段代码中,requests.get 被用来从"https://git.io/JJkYNURL "下载所有的动物名称。
response.text.split 用于格式化这些名称并将其添加到模型中,如 。labels
现在让我们创建一个函数来对图像进行分类。
def classify_image(inp):
inp = inp.reshape((-1, 299, 299, 3))
inp = tf.keras.applications.inception_v3.preprocess_input(inp)
prediction = inception_net.predict(inp).flatten()
return {labels[i]: float(prediction[i]) for i in range(2000)}
让我们来理解上面的函数。
inp.reshape 是用来将我们的图像重塑为给定的尺寸,使其更容易使用。我们还将我们的 加入到我们的输入图像中。inception_v3()
我们对输入层进行扁平化处理,使其适合我们的模型。最后,我们使用prediction() 方法返回预测后的输出。
使用Gradio构建用户界面
我们首先初始化Gradio用户界面的输入组件。输入组件持有用户上传的图片。
用户将能够在用户界面中上传一张动物图片,然后机器学习模型应该能够对动物进行分类并输出其名称。
输入组件应该与分类功能中给出的尺寸相匹配。输入组件将持有一个尺寸为299, 299, 3 的图像。
下面的代码指定了inputs 。Image ,因为299, 299 ,outputs.Label ,总共会有three 的预测。
这三个预测是该模型所做的所有可能的预测。
image = gr.inputs.Image(shape=(299, 299))
label = gr.outputs.Label(num_top_classes=3)
现在让我们用下面的函数来创建Gradio接口。
gr.Interface(
classify_image,
image,
label,
capture_session=True).launch();
gr.Interface 这个函数有四个参数。
classify_image:这个函数用于图像分类。Image:由用户提供的图像。Label:预测后显示的输出。launch():这将用于在Google Colab笔记本上或通过一个公共链接启动Gradio界面。
一旦你运行上述代码,它将显示如下所示的用户界面。

上述用户界面有一个输入组件,允许人们拖放或上传要分类的图像。
让我们下载一张狮子或任何其他动物的图片。将图像拖放或上传至输入组件。
点击提交按钮,查看预测结果。

Gradio给出的预测结果如下。
- 狮子:98%的概率。
- 猎豹:0%的概率。
- 阿拉伯骆驼:0%的概率。
这表明,该模型能够对狮子做出正确的预测,其概率为98% 。
Gradio还自动部署了图像分类应用程序。我们可以使用一个独特的URL/公共链接访问该应用程序。https://39965.gradio.app.
一旦你启动用户界面,这个链接将在你的Google Colab笔记本中出现。
因此,我们已经成功部署了我们的应用程序。它将可以通过唯一的URL进行访问。这个机器学习应用程序可以用于生产。
总结
在本教程中,我们已经了解了如何使用Gradio在Python中把机器学习模型部署为一个应用程序。
我们首先讨论了Gradio的好处以及它如何生成漂亮的用户界面。
然后,我们探索了Gradio函数,并使用这些函数创建了用户界面。从那里,我们建立了一个图像分类模型,它能够对动物图像进行分类。
最后,该应用程序被自动部署。人们现在可以使用Gradio提供的独特的URL与该应用进行交互。
因此,本教程将帮助读者使用Gradio在Python中部署一个机器学习模型作为应用程序。