YOLO综合训练工具X(免环境版 手动/自动标注、一键训练、模型验证、分类器训练、自动截图、批量处理
yolo免环境训练工具 yolo8标注工具 yolo训练工具 yolo8 yolo4 yolo3yolo无需搭建环境训练工具免环境标注、训练的工具支持版本yolo3 yolo4yolo8(电脑显卡必须N卡)[火]可训练模型cfg weights bin param ptyolo8l.pt yolo8m.pt yolo8n.pt yolo8s.pt yolo8x.pt一、YOLO免环境训练工具 信息表格1. 工具核心信息项目详情工具名称YOLO综合训练工具X免环境版核心优势无需手动搭建Python/Anaconda环境一键标注、训练、验证、导出模型支持YOLO版本YOLOv3、YOLOv4、YOLOv8v8需NVIDIA显卡支持导出格式cfg/weights/bin/paramYOLOv3/v4、.ptYOLOv8系列支持预训练权重YOLOv8n.pt / YOLOv8s.pt / YOLOv8m.pt / YOLOv8l.pt / YOLOv8x.pt核心功能手动/自动标注、一键训练、模型验证、分类器训练、自动截图、批量处理运行环境Windows系统YOLOv8需NVIDIA显卡CUDA支持2. 功能模块说明功能模块用途手动标注支持矩形框标注、标签管理生成YOLO格式txt标注自动标注基于预标注模型批量生成标注提升标注效率一键训练可视化配置训练参数无需手动编写命令行模型验证上传图片/视频实时检测查看检测效果分类器训练支持验证码、文字识别等分类任务训练自动截图批量截取游戏/视频帧快速生成数据集模型导出训练完成后一键提取最优模型文件二、核心代码实现以YOLOv8免环境训练工具为例代码框架包含标注、训练、验证模块可直接封装为桌面工具1. 项目结构yolo_no_env_tool/ ├── main.py # 工具主界面入口 ├── config.yaml # 工具配置文件 ├── utils/ │ ├── label_tool.py # 标注工具模块 │ ├── train_tool.py # 训练工具模块 │ └── val_tool.py # 模型验证模块 ├── models/ # 存放预训练权重 │ ├── yolov8n.pt │ ├── yolov8s.pt │ └── ... └── datasets/ # 数据集目录2. 主界面代码main.py基于PyQt5实现importsysfromPyQt5.QtWidgetsimport*fromPyQt5.QtGuiimport*fromPyQt5.QtCoreimport*fromutils.label_toolimportLabelWindowfromutils.train_toolimportTrainWindowfromutils.val_toolimportValWindowclassMainWindow(QMainWindow):def__init__(self):super().__init__()self.setWindowTitle(YOLO免环境训练工具X)self.setFixedSize(1200,800)self.init_ui()definit_ui(self):# 顶部菜单栏menu_barself.menuBar()label_menumenu_bar.addMenu(标注工具)train_menumenu_bar.addMenu(训练工具)val_menumenu_bar.addMenu(模型验证)# 中心区域central_widgetQWidget()self.setCentralWidget(central_widget)layoutQVBoxLayout(central_widget)# 功能按钮区btn_layoutQHBoxLayout()self.btn_labelQPushButton(打开标注工具)self.btn_trainQPushButton(打开训练工具)self.btn_valQPushButton(打开模型验证)btn_layout.addWidget(self.btn_label)btn_layout.addWidget(self.btn_train)btn_layout.addWidget(self.btn_val)layout.addLayout(btn_layout)# 绑定事件self.btn_label.clicked.connect(self.open_label_tool)self.btn_train.clicked.connect(self.open_train_tool)self.btn_val.clicked.connect(self.open_val_tool)defopen_label_tool(self):self.label_winLabelWindow()self.label_win.show()defopen_train_tool(self):self.train_winTrainWindow()self.train_win.show()defopen_val_tool(self):self.val_winValWindow()self.val_win.show()if__name____main__:appQApplication(sys.argv)winMainWindow()win.show()sys.exit(app.exec_())3. 标注工具模块utils/label_tool.py简化版fromPyQt5.QtWidgetsimport*fromPyQt5.QtGuiimport*fromPyQt5.QtCoreimport*importosimportcv2classLabelWindow(QMainWindow):def__init__(self):super().__init__()self.setWindowTitle(YOLO标注工具)self.setFixedSize(1000,700)self.current_img_pathNoneself.labels[]self.boxes[]self.init_ui()definit_ui(self):centralQWidget()self.setCentralWidget(central)layoutQHBoxLayout(central)# 左侧图片显示区self.img_labelQLabel()self.img_label.setStyleSheet(background-color:#eee;)layout.addWidget(self.img_label,stretch3)# 右侧标签管理区rightQWidget()right_layoutQVBoxLayout(right)self.label_listQListWidget()self.add_label_btnQPushButton(添加标签)self.save_btnQPushButton(保存标注)right_layout.addWidget(self.label_list)right_layout.addWidget(self.add_label_btn)right_layout.addWidget(self.save_btn)layout.addWidget(right,stretch1)# 绑定事件self.add_label_btn.clicked.connect(self.add_label)self.save_btn.clicked.connect(self.save_label)defadd_label(self):text,okQInputDialog.getText(self,添加标签,输入标签名称:)ifokandtext:self.label_list.addItem(text)self.labels.append(text)defsave_label(self):ifnotself.current_img_pathornotself.boxes:return# 生成YOLO格式标注imgcv2.imread(self.current_img_path)h,wimg.shape[:2]label_pathself.current_img_path.replace(.jpg,.txt).replace(.png,.txt)withopen(label_path,w)asf:forboxinself.boxes:x1,y1,x2,y2,label_idxbox# 转换为YOLO格式x_center, y_center, w, hx_center((x1x2)/2)/w y_center((y1y2)/2)/h w_box(x2-x1)/w h_box(y2-y1)/h f.write(f{label_idx}{x_center:.6f}{y_center:.6f}{w_box:.6f}{h_box:.6f}\n)QMessageBox.information(self,提示,标注保存成功)4. 训练工具模块utils/train_tool.pyYOLOv8训练fromPyQt5.QtWidgetsimport*fromultralyticsimportYOLOimportosimportyamlclassTrainWindow(QMainWindow):def__init__(self):super().__init__()self.setWindowTitle(YOLOv8训练工具)self.setFixedSize(800,600)self.init_ui()definit_ui(self):centralQWidget()self.setCentralWidget(central)layoutQFormLayout(central)# 训练参数配置self.dataset_pathQLineEdit()self.weights_pathQComboBox()self.weights_path.addItems([yolov8n.pt,yolov8s.pt,yolov8m.pt,yolov8l.pt,yolov8x.pt])self.epochsQSpinBox(value100,minimum10,maximum500)self.batchQSpinBox(value16,minimum1,maximum64)self.confQDoubleSpinBox(value0.25,minimum0.01,maximum1.0)self.iouQDoubleSpinBox(value0.45,minimum0.01,maximum1.0)self.train_btnQPushButton(开始训练,clickedself.start_train)layout.addRow(数据集配置文件:,self.dataset_path)layout.addRow(预训练权重:,self.weights_path)layout.addRow(训练轮数:,self.epochs)layout.addRow(批次大小:,self.batch)layout.addRow(置信度阈值:,self.conf)layout.addRow(IOU阈值:,self.iou)layout.addRow(self.train_btn)defstart_train(self):# 读取配置data_yamlself.dataset_path.text()ifnotos.path.exists(data_yaml):QMessageBox.warning(self,错误,数据集配置文件不存在)return# 加载模型并训练modelYOLO(fmodels/{self.weights_path.currentText()})model.train(datadata_yaml,epochsself.epochs.value(),batchself.batch.value(),confself.conf.value(),iouself.iou.value(),nametrain_result)QMessageBox.information(self,提示,训练完成模型已保存)5. 模型验证模块utils/val_tool.pyfromPyQt5.QtWidgetsimport*fromPyQt5.QtGuiimport*fromultralyticsimportYOLOimportcv2importnumpyasnpclassValWindow(QMainWindow):def__init__(self):super().__init__()self.setWindowTitle(YOLO模型验证工具)self.setFixedSize(1000,700)self.modelNoneself.init_ui()definit_ui(self):centralQWidget()self.setCentralWidget(central)layoutQHBoxLayout(central)# 左侧图片显示区self.img_labelQLabel()self.img_label.setStyleSheet(background-color:#eee;)layout.addWidget(self.img_label,stretch3)# 右侧控制区rightQWidget()right_layoutQVBoxLayout(right)self.model_pathQLineEdit()self.select_model_btnQPushButton(选择模型,clickedself.select_model)self.select_img_btnQPushButton(选择图片,clickedself.select_img)self.detect_btnQPushButton(开始检测,clickedself.detect_img)right_layout.addWidget(self.model_path)right_layout.addWidget(self.select_model_btn)right_layout.addWidget(self.select_img_btn)right_layout.addWidget(self.detect_btn)layout.addWidget(right,stretch1)defselect_model(self):path,_QFileDialog.getOpenFileName(self,选择模型,,模型文件 (*.pt *.cfg *.weights))ifpath:self.model_path.setText(path)self.modelYOLO(path)defselect_img(self):path,_QFileDialog.getOpenFileName(self,选择图片,,图片文件 (*.jpg *.png *.jpeg))ifpath:self.current_img_pathpath pixmapQPixmap(path).scaled(self.img_label.size(),Qt.KeepAspectRatio)self.img_label.setPixmap(pixmap)defdetect_img(self):ifnotself.modelornothasattr(self,current_img_path):returnimgcv2.imread(self.current_img_path)resultsself.model(img)annotated_imgresults[0].plot()annotated_imgcv2.cvtColor(annotated_img,cv2.COLOR_BGR2RGB)h,w,channotated_img.shape q_imgQImage(annotated_img.data,w,h,ch*w,QImage.Format_RGB888)self.img_label.setPixmap(QPixmap.fromImage(q_img).scaled(self.img_label.size(),Qt.KeepAspectRatio))三、工具运行说明环境依赖工具基于PythonPyQt5开发需安装基础依赖已内置在工具包中用户无需手动配置pipinstallpyqt5 opencv-python ultralytics支持系统Windows 10/11YOLOv8训练需NVIDIA显卡CUDA支持使用流程打开标注工具标注数据集配置训练参数一键启动训练训练完成后使用模型验证工具测试效果导出训练好的模型文件—以上文字及代码仅供参考
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2632027.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!