news 2026/8/4 15:40:44

yolo系列免环境训练工具 支持yolov8-13 可目标检测,obb,分类,分割,关键点训练。

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
yolo系列免环境训练工具 支持yolov8-13 可目标检测,obb,分类,分割,关键点训练。

yolov12免环境训练工具 支持yolov8-13 可目标检测,obb,分类,分割,关键点训练。

1

1

1

✅ 项目目标:构建一个「免环境配置」的 YOLO 多版本训练工具

以下代码仅供参考

功能说明:

  • 支持 YOLOv8 / v10 / v11,12(部分 v11 变体)
  • 支持任务:detect,segment,classify,obb,pose
  • 支持模型大小:n,s,m,l,x
  • 支持.pt模型加载与继续训练
  • 支持导出 ONNX 模型
  • 图形化界面(PyQt5/6)
  • 自动检测 GPU / CPU
  • 日志实时输出
  • 免安装依赖(打包成 exe)

📌 本方案将使用Python + PyQt5 + ultralytics实现,最终打包为 Windows.exe文件,实现“免环境”运行。


🧩 一、技术栈

组件版本/用途
Python3.10+
PySide6 / PyQt5GUI 框架(推荐 PySide6)
ultralyticsYOLOv8 官方库(支持 v10/v11 推理)
onnxruntimeONNX 导出支持
PyInstaller打包为 .exe

📁 二、项目目录结构

YoloTrainTool/ ├── main.py # 主程序入口 ├── ui_main.py # UI 界面(由 Qt Designer 生成) ├── train.py # 训练逻辑封装 ├── export_onnx.py # ONNX 导出函数 ├── requirements.txt # 依赖包 └── dist/ # 打包后输出目录

📦 三、依赖文件(requirements.txt)

ultralytics==8.3.0 PySide6==6.6.0 onnxruntime==1.14.0 opencv-python==4.8.0 numpy==1.24.0 torch==2.0.1+cu118 torchvision==0.15.2+cu118

安装命令:

pipinstall-rrequirements.txt

🖼️ 四、UI 界面设计(ui_main.py)

使用 Qt Designer 设计界面,然后保存为.ui文件,再用pyuic6转换为 Python 代码。

示例界面功能(对应截图):

控件功能
下拉菜单选择训练设备(GPU/CPU)
下拉菜单选择任务类型(detect, segment, etc.)
下拉菜单选择模型版本(v8, v10, v11)
下拉菜单选择模型大小(n/s/m/l/x)
输入框图像尺寸(640)
输入框训练次数(100)
下拉菜单是否启用 AMP 加速
输入框Batch Size(32)
下拉菜单线程数(4)
复选框是否继续训练
文本框模型路径(.pt)
按钮“开始训练”、“停止训练”
按钮“导出 ONNX 模型”
文本区域日志输出窗口

🧠 五、核心训练逻辑(train.py)

# train.pyimportosfromultralyticsimportYOLOimporttorchclassYOLOTrainer:def__init__(self):self.model=Noneself.task="detect"self.model_version="v8"self.model_size="s"self.imgsz=640self.epochs=100self.batch=32self.device="cuda"iftorch.cuda.is_available()else"cpu"self.amp=Trueself.workers=4self.continue_train=Falseself.pt_path=Nonedefload_model(self):model_name=f"yolov{self.model_version}{self.model_size}.pt"ifself.pt_pathandos.path.exists(self.pt_path):self.model=YOLO(self.pt_path)else:self.model=YOLO(model_name)# 默认加载预训练模型returnself.modeldeftrain(self,data_yaml):try:self.load_model()results=self.model.train(data=data_yaml,epochs=self.epochs,imgsz=self.imgsz,batch=self.batch,device=self.device,workers=self.workers,amp=self.amp,name=f"yolo_{self.model_version}_{self.task}",exist_ok=True,resume=self.continue_train)returnresultsexceptExceptionase:print(f"❌ 训练失败:{e}")returnNone

🎯 六、主程序(main.py)

# main.pyimportsysimportosfromPySide6.QtWidgetsimportQApplication,QMainWindow,QFileDialogfromui_mainimportUi_MainWindowfromtrainimportYOLOTrainerimportthreadingimporttimeclassMainWindow(QMainWindow,Ui_MainWindow):def__init__(self):super().__init__()self.setupUi(self)self.trainer=YOLOTrainer()self.log_text=""self.running=Falseself.thread=None# 连接按钮事件self.pushButton_start.clicked.connect(self.start_training)self.pushButton_stop.clicked.connect(self.stop_training)self.pushButton_export.clicked.connect(self.export_onnx)self.pushButton_browse.clicked.connect(self.browse_pt_file)# 设置默认值self.comboBox_task.setCurrentText("detect")self.comboBox_model.setCurrentText("v8")self.comboBox_size.setCurrentText("s")defbrowse_pt_file(self):file_path,_=QFileDialog.getOpenFileName(self,"选择 .pt 模型","","PT Files (*.pt)")iffile_path:self.lineEdit_pt.setText(file_path)defstart_training(self):ifself.running:returnself.running=Trueself.pushButton_start.setEnabled(False)self.pushButton_stop.setEnabled(True)# 获取参数self.trainer.task=self.comboBox_task.currentText()self.trainer.model_version=self.comboBox_model.currentText()self.trainer.model_size=self.comboBox_size.currentText()self.trainer.imgsz=int(self.lineEdit_imgsz.text())self.trainer.epochs=int(self.lineEdit_epochs.text())self.trainer.batch=int(self.lineEdit_batch.text())self.trainer.amp=self.checkBox_amp.isChecked()self.trainer.workers=int(self.lineEdit_workers.text())self.trainer.continue_train=self.checkBox_resume.isChecked()self.trainer.pt_path=self.lineEdit_pt.text()# 启动训练线程self.thread=threading.Thread(target=self.run_training)self.thread.start()defrun_training(self):data_yaml="data.yaml"# 假设用户已放置数据集self.append_log("🚀 开始训练...")results=self.trainer.train(data_yaml)ifresults:self.append_log("✅ 训练完成!")else:self.append_log("❌ 训练失败!")self.running=Falseself.pushButton_start.setEnabled(True)self.pushButton_stop.setEnabled(False)defstop_training(self):self.running=Falseself.append_log("🛑 训练已停止。")defappend_log(self,msg):self.textEdit_log.append(msg)self.textEdit_log.verticalScrollBar().setValue(self.textEdit_log.verticalScrollBar().maximum())defexport_onnx(self):model_path="runs/detect/yolo_v8_detect/weights/best.pt"ifnotos.path.exists(model_path):self.append_log("❌ 未找到最佳模型!")returnfromultralyticsimportYOLO model=YOLO(model_path)model.export(format='onnx')self.append_log("✅ ONNX 模型已导出!")if__name__=="__main__":app=QApplication(sys.argv)window=MainWindow()window.show()sys.exit(app.exec())

📦 七、打包为可执行文件(PyInstaller)

# 创建 spec 文件pyinstaller--onefile--windowedmain.py--name"YoloTrainTool"# 或者手动指定pyinstaller--onefile\--windowed\--icon=icon.ico\--name="YoloTrainTool"\main.py

输出路径:dist/YoloTrainTool.exe


🛠 八、使用说明(用户端)

  1. 下载.exe文件;
  2. 解压到任意目录;
  3. 双击运行;
  4. 配置参数后点击“开始训练”;
  5. 支持继续训练和导出 ONNX;
  6. 日志实时显示在右侧窗口。

您提供的截图显示的是一个基于 YOLOv13 的免环境训练工具界面,但需要明确:

目前不存在官方的 YOLOv13 模型
Ultralytics 官方最新版本为YOLOv8,后续 v9/v10/v11 是社区或第三方实现。

因此,该“YOLOv13”实为对 YOLOv8 或 YOLOv10 的封装与重命名,通过 GUI 界面简化训练流程,并支持多任务(检测、分割、关键点等)。


✅ 项目目标:构建「YOLOv13 免环境训练工具」(实际基于 YOLOv8)

功能说明:

  • 支持detect,segment,pose,classify,obb
  • 支持模型大小:n,s,m,l,x
  • 支持.pt模型加载与继续训练
  • 支持导出 ONNX 模型
  • 图形化界面(PyQt5/6)
  • 自动检测 GPU / CPU
  • 日志实时输出
  • 打包为.exe实现“免环境”

🧩 一、技术栈

组件版本/用途
Python3.10+
PySide6 / PyQt5GUI 框架
ultralyticsYOLOv8 官方库(支持 v10/v11 推理)
onnxruntimeONNX 导出支持
PyInstaller打包为 .exe

📁 二、项目目录结构

YoloV13_TrainTool/ ├── main.py # 主程序入口 ├── ui_main.py # UI 界面(由 Qt Designer 生成) ├── train.py # 训练逻辑封装 ├── export_onnx.py # ONNX 导出函数 ├── requirements.txt # 依赖包 └── dist/ # 打包后输出目录

📦 三、依赖文件(requirements.txt)

ultralytics==8.3.0 PySide6==6.6.0 onnxruntime==1.14.0 opencv-python==4.8.0 numpy==1.24.0 torch==2.0.1+cu118 torchvision==0.15.2+cu118

安装命令:

pipinstall-rrequirements.txt

🖼️ 四、UI 界面设计(ui_main.py)

使用 Qt Designer 设计界面,保存为.ui文件,再用pyuic6转换为 Python 代码。

示例界面功能(对应截图):

控件功能
下拉菜单选择设备(GPU/CPU)
下拉菜单选择任务类型(detect, segment, etc.)
下拉菜单选择模型版本(v8, v10, v11)
下拉菜单选择模型大小(n/s/m/l/x)
输入框图像尺寸(640)
输入框训练次数(100)
输入框模型保存频率(10)
下拉菜单是否启用 AMP 加速
输入框Batch Size(48)
输入框Workers(8)
复选框是否继续训练
文本框模型路径(.pt)
按钮“开始训练”、“停止训练”
按钮“导出模型”
文本区域日志输出窗口

🧠 五、核心训练逻辑(train.py)

# train.pyimportosfromultralyticsimportYOLOimporttorchclassYOLOTrainer:def__init__(self):self.model=Noneself.task="detect"self.model_version="v8"self.model_size="s"self.imgsz=640self.epochs=100self.save_period=10self.batch=48self.workers=8self.amp=Trueself.device="cuda"iftorch.cuda.is_available()else"cpu"self.continue_train=Falseself.pt_path=Nonedefload_model(self):model_name=f"yolov{self.model_version}{self.model_size}.pt"ifself.pt_pathandos.path.exists(self.pt_path):self.model=YOLO(self.pt_path)else:self.model=YOLO(model_name)# 默认加载预训练模型returnself.modeldeftrain(self,data_yaml):try:self.load_model()results=self.model.train(data=data_yaml,epochs=self.epochs,imgsz=self.imgsz,batch=self.batch,device=self.device,workers=self.workers,amp=self.amp,name=f"yolo_{self.model_version}_{self.task}",exist_ok=True,resume=self.continue_train,save_period=self.save_period)returnresultsexceptExceptionase:print(f"❌ 训练失败:{e}")returnNone

🎯 六、主程序(main.py)

# main.pyimportsysimportosfromPySide6.QtWidgetsimportQApplication,QMainWindow,QFileDialogfromui_mainimportUi_MainWindowfromtrainimportYOLOTrainerimportthreadingimporttimeclassMainWindow(QMainWindow,Ui_MainWindow):def__init__(self):super().__init__()self.setupUi(self)self.trainer=YOLOTrainer()self.log_text=""self.running=Falseself.thread=None# 连接按钮事件self.pushButton_start.clicked.connect(self.start_training)self.pushButton_stop.clicked.connect(self.stop_training)self.pushButton_export.clicked.connect(self.export_onnx)self.pushButton_browse.clicked.connect(self.browse_pt_file)# 设置默认值self.comboBox_task.setCurrentText("detect")self.comboBox_model.setCurrentText("v8")self.comboBox_size.setCurrentText("s")defbrowse_pt_file(self):file_path,_=QFileDialog.getOpenFileName(self,"选择 .pt 模型","","PT Files (*.pt)")iffile_path:self.lineEdit_pt.setText(file_path)defstart_training(self):ifself.running:returnself.running=Trueself.pushButton_start.setEnabled(False)self.pushButton_stop.setEnabled(True)# 获取参数self.trainer.task=self.comboBox_task.currentText()self.trainer.model_version=self.comboBox_model.currentText()self.trainer.model_size=self.comboBox_size.currentText()self.trainer.imgsz=int(self.lineEdit_imgsz.text())self.trainer.epochs=int(self.lineEdit_epochs.text())self.trainer.save_period=int(self.lineEdit_save_period.text())self.trainer.batch=int(self.lineEdit_batch.text())self.trainer.workers=int(self.lineEdit_workers.text())self.trainer.amp=self.checkBox_amp.isChecked()self.trainer.continue_train=self.checkBox_resume.isChecked()self.trainer.pt_path=self.lineEdit_pt.text()# 启动训练线程self.thread=threading.Thread(target=self.run_training)self.thread.start()defrun_training(self):data_yaml="data.yaml"# 假设用户已放置数据集self.append_log("🚀 开始训练...")results=self.trainer.train(data_yaml)ifresults:self.append_log("✅ 训练完成!")else:self.append_log("❌ 训练失败!")self.running=Falseself.pushButton_start.setEnabled(True)self.pushButton_stop.setEnabled(False)defstop_training(self):self.running=Falseself.append_log("🛑 训练已停止。")defappend_log(self,msg):self.textEdit_log.append(msg)self.textEdit_log.verticalScrollBar().setValue(self.textEdit_log.verticalScrollBar().maximum())defexport_onnx(self):model_path="runs/detect/yolo_v8_detect/weights/best.pt"ifnotos.path.exists(model_path):self.append_log("❌ 未找到最佳模型!")returnfromultralyticsimportYOLO model=YOLO(model_path)model.export(format='onnx')self.append_log("✅ ONNX 模型已导出!")if__name__=="__main__":app=QApplication(sys.argv)window=MainWindow()window.show()sys.exit(app.exec())

📦 七、打包为可执行文件(PyInstaller)

# 创建 spec 文件pyinstaller--onefile--windowedmain.py--name"YoloV13TrainTool"# 或者手动指定pyinstaller--onefile\--windowed\--icon=icon.ico\--name="YoloV13TrainTool"\main.py

输出路径:dist/YoloV13TrainTool.exe


版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/4 15:39:06

2026最权威的五大AI写作网站推荐

Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 知网推出的AIGC检测是近些年才有的论文查重功用, 它会专门辨别AI生成的内容。因人工智能技术…

作者头像 李华
网站建设 2026/8/4 15:36:58

实战:上亿数据如何秒查

实战:上亿数据如何秒查 各位老铁,今天咱们来聊一个非常“硬核”的话题——当你的数据库里躺着上亿条数据,用户点一下查询按钮,你却让他等5秒钟,这体验简直比杀了他还难受。别慌,今天我就带你从“慢如蜗牛”…

作者头像 李华
网站建设 2026/8/4 15:36:02

微信视频号API开发实战:从Access Token到数据看板构建

最近在开发微信生态相关项目时,发现不少开发者对视频号这个流量新入口既好奇又无从下手。尤其是如何将视频号内容与自有业务系统打通,实现数据同步、用户触达乃至商业转化,成为了一个普遍的技术痛点。本文将围绕“微信视频号”这一核心主题&a…

作者头像 李华
网站建设 2026/8/4 15:35:08

网盘限速终结者:LinkSwift直链解析工具终极指南

网盘限速终结者:LinkSwift直链解析工具终极指南 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘 / 中国移动云盘 / 天翼云盘 /…

作者头像 李华
网站建设 2026/8/4 15:29:14

海外买家靠 AI 找供应商,外贸企业该怎么做 GEO 布局?

上个月和一位机械出口工厂老板交流,他的一番话很有启发:“我们网站谷歌排名一直不错,但今年欧美主动询盘下滑近三成。后来我们才意识到,客户不是停止搜索,而是转向 AI 工具寻找供应商。” 这并不是个别现象。2026 年&…

作者头像 李华
网站建设 2026/8/4 15:29:08

从零实现Linux Shell:深入理解进程管理与系统调用

1. 项目概述:为什么要自己动手写一个Shell? 在Linux的世界里,Shell是每个用户与系统内核对话的桥梁。无论是你每天敲下的 ls 、 cd ,还是复杂的管道 | 和重定向 > ,背后都是Shell在默默解析你的意图&#x…

作者头像 李华