0208《XEduHub + PySimpleGUI + PySimpleGUIWeb:在行空板上部署模型的全解析》【模型部署】
|
- 2月8日,晚上,19:30~21:00(主讲老师:邱奕盛) 【模型部署】利用统一推理框架实现模型部署。在训练好的模型基础上,设计简洁的体验界面, 最终尝试在行空板上实现完整效果的呈现,涉及 XEduHub、PySimpleGUI、PySimpleGUIWeb等工具。 |
|
|
import PySimpleGUI as sg
import cv2
import io
from XEdu.hub import Workflow as wf
#sg.start_your_app(your_app_function, host="0.0.0.0", port=8080)
# 初始化模型
mm = wf(task='mmedu', checkpoint='cls.onnx')
# 定义布局
layout = [
[sg.Text("智能图片小助手", font=("Arial", 16), justification="center")],
[sg.Text("输入图片地址:"), sg.InputText(default_text="img.jpg", key="-IMAGE-")],
[sg.Button("确定")]
]
# 创建主窗口
window = sg.Window("智能图片小助手", layout, size=(240, 320))
# 事件循环
while True:
event, values = window.read()
if event == sg.WINDOW_CLOSED:
break
elif event == "确定":
image_path = values["-IMAGE-"]
try:
# 调用模型进行推理
res, img = mm.inference(data=image_path, img_type='cv2')
# 标准化推理结果
result = mm.format_output(lang="zh")
# 获取预测结果
prediction = result['预测结果']
# 将 cv2 图像转换为 PySimpleGUI 可以显示的格式
is_success, buffer = cv2.imencode(".png", img)
if not is_success:
raise ValueError("无法编码图像")
img_data = io.BytesIO(buffer).read()
# 创建新窗口显示图片和预测结果
image_layout = [
[sg.Text("预测结果:", font=("Arial", 12))],
[sg.Text(prediction, font=("Arial", 12), text_color="blue")],
[sg.Image(data=img_data, key="-IMAGE_DISPLAY-")]
]
image_window = sg.Window("推理结果", image_layout, size=(400, 400))
while True:
event, _ = image_window.read()
if event == sg.WINDOW_CLOSED:
image_window.close()
break
except Exception as e:
sg.popup(f"无法加载图片或进行推理!错误信息:{e}", title="错误提示")
# 关闭主窗口
window.close()
|
|
|
训练好的模型,部署到不同的设备上, 或者开源的硬件上
xedu的一键安装包
向AI大模型提问要明确问题的关键
PySimpleGUI 是一个用于创建图形用户界面(GUI)的 Python 库,它封装了多种底层 GUI 框架(如 Tkinter、Qt、WxPython 等),提供了一个简单易用的接口,使得开发者可以快速构建跨平台的桌面应用程序。PySimpleGUI 的设计目标是让 GUI 编程变得简单直观,即使是初学者也能轻松上手。
PySimpleGUI 的特点
安装 PySimpleGUI你可以使用
pip 来安装 PySimpleGUI:bash复制
基本用法以下是一个简单的示例,展示如何使用 PySimpleGUI 创建一个基本的 GUI 应用程序:
Python复制
示例解释
高级用法PySimpleGUI 提供了许多高级功能,如多线程、自定义布局、图像显示等。以下是一个稍微复杂一点的示例,展示如何在窗口中显示图像:
Python复制
示例解释
使用 PySimpleGUIWebPySimpleGUIWeb 是 PySimpleGUI 的一个分支,用于创建基于 Web 的 GUI 应用程序。它允许你使用相同的代码在浏览器中运行你的 GUI 应用。安装方法如下:
bash复制
使用 PySimpleGUIWeb 时,只需将导入语句中的
PySimpleGUI 替换为 PySimpleGUIWeb:Python复制
总结
|
|
| 模型转换 |
权重文件 pkl
|
| 模型转换 |
基础实验2:模型推理方法 模型推理方法分三步:模型转换、模型测试、模型部署。 模型转换借助昨天课上我们训练的模型,将pth文件转换为onnx格式的模型。 这里代码为专用代码,大模型无法生成,因此提前给出:
from MMEdu import MMClassification as cls model = cls(backbone='LeNet') checkpoint = 'mycheckpoints/epoch_4.pth' # 复制pth模型所在路径 out_file="mymodel.onnx" # 设置新模型的路径 model.convert(checkpoint=checkpoint, out_file=out_file)
|
|
模型测试、
模型部署。
|
昨天是mmedu的库进行推理的。 包含训练和推理。模型亏庞大。小设备不友好。
from XEdu.hub import Workflow as wf import numpy as np # 模型声明 mm = wf(task='mmedu',checkpoint='cls.onnx') # 待推理图像,此处仅以随机数组为例 image = np.random.random((400,400)) # 可替换成您想要推理的图像路径,如 img = 'cat.jpg' # 模型推理 res,img = mm.inference(data=image,img_type='cv2') # 标准化推理结果 result = mm.format_output(lang="zh") # 可视化结果图像 mm.show(img)
Workflow 推理 比较小巧方便使用。 mobileNet 训练的模型,相比 lenet 模型更大。
|
|
处理推理结果。
|
|
| 作业要求 |
作业
模型 pkl pth 转 onnx 整合成应用。
|
| 行空板 |
m10
k10
行空板是需要安装 xedu库的 终端 pip install xedu-python jupyter !pip install xedu-python |
|
pinpong
|
|
| 物联网 |
|
| 总结 |
1. 整理数据 2. 训练 3. 模型 推理 4. 应用
机器学习 模型 pkl 深度学习, onnx , pth
训练时,数据图片的尺寸很重要,要注意统一图片像素; 验证
|
| 涉及XEduHub、PySimpleGUI、PySimpleGUIWeb等工具。 | |
| XEduHub |
https://xedu.readthedocs.io/zh-cn/master/xedu_hub.html
XEduHub支持两类任务(task),分为预置任务和通用任务两种。顾名思义,预置任务指预置的各种优质开源AI模型,包含了图像分类、目标检测、关键点检测、OCR等。通用任务指用XEdu系列工具训练的模型,如MMEdu(计算机视觉)、BaseNN(自定义神经网络)和BaseML(传统机器学习),还支持用其他工具训练的模型。考虑到兼容性,大部分模型以ONNX为主。不管使用哪类任务,XEduHub都使用Workflow工具进行推理,核心代码仅4行,语法非常简洁。
|
| PySimpleGUI | |
| PySimpleGUIWeb | |
|
模型文件 *.pth *.onnx *.pkl |
在深度学习和机器学习中,
.pkl、.pth 和 .onnx 是常见的文件扩展名,它们分别代表不同类型的数据文件。以下是对这些扩展名的详细解释:1.
|
| 模型转 onnx 并推理 |
是的,
.pkl、.pth 和其他常见的模型文件格式都可以转换为 .onnx 格式,以便进行跨框架推理。以下是如何将这些格式的文件转换为 .onnx 格式的详细步骤:1. 将
|


























浙公网安备 33010602011771号