当前位置: 首页 > news >正文

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


http://www.jsqmd.com/news/1327433/

相关文章:

  • 2026张家港卫生间漏水、外墙、楼顶、地下室、阳台+阳光房渗漏不用愁?3家正规靠谱防水公司推荐:选对服务商,告别反复渗漏,售后无忧 - 吉林同城获客
  • 2026 上海高端住宅中央空调品牌深度解析与选型指南 - 资讯综合
  • 【2026最新】写小说软件哪个好?10款AI写小说工具亲测横评与避坑指南
  • 如何用Python轻松获取同花顺问财数据:量化投资入门完整指南
  • 终极指南:如何免费使用Cursor Pro功能并绕过机器ID限制
  • JavaQuestPlayer:用Java重铸QSP引擎,实现跨平台文字游戏开发与集成
  • 珠海家里到处漏水发霉?卫生间、屋顶外墙全场景漏水原因一次讲透 - 宅安选房屋修缮
  • 工业地板怎么选?别只看产品,先看供应链稳定性、技术专利和全国服务网络 - 中国华商产业观察网
  • Unity相机交互开发:从Scene视图到Game视图的工业级迁移方案
  • AI毕业论文工具实测:写论文的AI效果如何
  • 设计-简约而不简单
  • 论文AI检测率高的原因与物理降AI法实操指南
  • 5分钟打造你的专属知识中心:Obsidian个性化首页完整指南
  • 工业地板怎么选最有性价比?别只看价格,先看产品体系、防腐能力和供应链稳定性 - 中国华商产业观察网
  • 终极Windows热键冲突检测指南:Hotkey Detective完整解决方案
  • 5步实现专业级虚拟背景:obs-backgroundremoval完整实战指南
  • 5种强力脚本彻底改变你的Illustrator设计工作流
  • 2026 武汉南华光电职业技术学校招生办电话_招生老师联系方式汇总 - 武汉中职最新信息发布
  • 电商平台系统是什么?从零理解电商数字化运营的核心基础设施
  • 2026昆山卫生间、外墙、楼顶、地下室、阳台阳光房渗漏不用愁!3家正规靠谱防水服务商甄选:选对专业团队,告别反复渗水,长效售后有保障 - 吉林同城获客
  • AI毕业论文平台测评:写论文工具如何选
  • 7T fMRI技术揭示稳态-内感受系统全脑连接图谱
  • Python构建多国专利数据采集系统实战指南
  • FlexSim 与 Python Socket 通信完整指南
  • 零基础AI应用编程开发入门 | 吴恩达Prompt工程极简通关指南:新手从零学会工业级提示词开发(可直接复用代码)
  • 输电线路缺陷数据集 电缆缺陷识别 输电线破损数据集
  • 武汉城铁技工学校电话号码多少? - 升学择校早知道
  • UnityWebRequest SSL证书验证:自定义CertificateHandler实现安全绕过与指纹钉扎
  • Windows系统CertPolEng.dll丢失的解决方案与预防措施
  • 宫老师助力廊坊十八酒坊客户私享会 赋能酒水商户数字化经营升级