Gradio官文地址:
快速上手:
1.准备Python 3.7或更高版本
2.安装gradio :
pip install gradio
3.执行官方示例:
import gradio as gr
def greet(name):
return "Hello " + name + "!!"
iface = gr.Interface(fn=greet, inputs="text", outputs="text")
iface.launch()
执行以上代码后有以下输出:
在浏览器中输入以上地址会有以下界面:
4.复杂示例:
a.快速部署机器视觉相关算法(人脸检测)
import cv2
import gradio as gr
import uuid
# 初始化OpenCV的人脸和眼睛检测分类器
face_cascade = cv2.CascadeClassifier(cv2.data.haarcascades + 'haarcascade_frontalface_default.xml')
eye_cascade = cv2.CascadeClassifier(cv2.data.haarcascades + 'haarcascade_eye.xml')
def trun_gray(image):
image = cv2.imread(image)
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
# 检测人脸
faces = face_cascade.detectMultiScale(gray, 1.1, 4)
# 在人脸上画框
for (x, y, w, h) in faces:
cv2.rectangle(image, (x, y), (x+w, y+h), (255, 0, 0), 2)
# 设置保存路径
save_path = "./{}.png".format(str(uuid.uuid4()))
# 保存图片
cv2.imwrite(save_path, image)
return save_path
# 注意type有多种["numpy", "pil", "filepath"],没有指定时默认为numpy
iface = gr.Interface(fn=trun_gray, inputs=gr.Image(type="filepath"), outputs=gr.Image(type="filepath"))
iface.launch()
执行后打开其输出连接,如图所示:
上传一张图片并点击提交:
b.快速部署自然语言相关算法(提取句子中的人名)
from ltp import LTP
import gradio as gr
# 初始化LTP模型,你可以下载模型并指定路径,或者让LTP自动下载
ltp_model_dir = 'ltp_base1' # 替换为你的LTP模型路径
ltp = LTP(ltp_model_dir)
def trun_gray(sentence):
sentence = sentence.strip()
output = ltp.pipeline([sentence], tasks=["cws", "pos", "srl"])
us_name = "、".join(list(set([i[0] for i in zip(output.cws[0], output.pos[0]) if i[1] in ["nh"]])))
return us_name
iface = gr.Interface(fn=trun_gray, inputs="text", outputs="text")
iface.launch()
执行后打开其输出连接,如图所示:
输入一段话并点击提交:
c.页面展示多个算法
import gradio as gr
import cv2
import uuid
from ltp import LTP
ltp_model_dir = 'ltp_base1'
ltp = LTP(ltp_model_dir)
face_cascade = cv2.CascadeClassifier(cv2.data.haarcascades + 'haarcascade_frontalface_default.xml')
eye_cascade = cv2.CascadeClassifier(cv2.data.haarcascades + 'haarcascade_eye.xml')
def trun_gray(image):
print(image)
image = cv2.imread(image)
image = cv2.resize(image, (640,480))
save_path = "./{}.png".format(str(uuid.uuid4()))
cv2.imwrite(save_path, image)
gray = cv2.cvtColor(image,cv2.COLOR_BGR2GRAY)
return save_path
def trun_nh(sentence):
sentence = sentence.strip()
output = ltp.pipeline([sentence], tasks=["cws", "pos", "srl"])
us_name = "、".join(list(set([i[0] for i in zip(output.cws[0], output.pos[0]) if i[1] in ["nh"]])))
return us_name
with gr.Blocks() as demo:
with gr.Tab(label="句子人名提取"):
gr.Interface(fn=trun_nh, inputs="text", outputs="text")
with gr.Tab(label="图像人脸检测"):
gr.Interface(fn=trun_gray, inputs=gr.Image(type="filepath"), outputs=gr.Image(type="filepath"))
demo.launch()
执行后打开其输出连接,如图所示:
结束语
Gradio是一个开源的Python库,主要用于快速构建机器学习和数据科学演示的应用。通过Gradio,用户可以轻松地为模型创建一个可视化的、易于使用的Web界面,无需编写任何Web前端代码。它支持多种不同类型的输入(如文本、图像、音频等)和输出(如文本、图像、HTML等),并允许用户在Python脚本中直接定义这些输入/输出和处理函数之间的关系。以上仅为简单使用,如需获取更多关于Gradio的详细信息和使用方法,建议访问其官方文档或GitHub仓库进行查阅。