- 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:breakelif 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()breakexcept 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. 将
|