# Myolotrain_1 **Repository Path**: rock_kim/Myolotrain_1 ## Basic Information - **Project Name**: Myolotrain_1 - **Description**: Myolotrain是一个进行yolo视觉模型训练、验证的系统,为计算机视觉任务提供了直观的图形界面。该平台集成了数据集管理、模型管理、训练管理和目标检测功能,支持windows、linux、docker等多种部署方式,使用户能够轻松地训练和部署 YOLOv8 模型,支持CPU和GPU,使用tensorboard实时查看训练进度。 - **Primary Language**: Python - **License**: MIT - **Default Branch**: master - **Homepage**: https://gitee.com/rock_kim/Myolotrain - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 124 - **Created**: 2025-04-19 - **Last Updated**: 2025-04-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Myolotrain - YOLO视觉模型训练平台 [![Gitee stars](https://gitee.com/rock_kim/Myolotrain/badge/star.svg?theme=dark)](https://gitee.com/YOUR_USERNAME/myolotrain) [![Gitee forks](https://gitee.com/rock_kim/Myolotrain/badge/fork.svg?theme=dark)](https://gitee.com/YOUR_USERNAME/myolotrain) Myolotrain是一个可视化管理yolo视觉模型训练的系统,为计算机视觉任务提供了直观的图形界面。该平台集成了数据集管理、模型管理、训练管理和目标检测功能,支持windows、linux、docker等多种部署方式,使用户能够轻松地训练和部署 YOLOv8 模型,支持CPU和GPU,使用tensorboard实时查看训练进度,具备数据集自动分割功能。 ### 注意事项: **(20250418)目前暂不支持yolov5,支持yolov8以上** **(20250418)在models有yolov8n、yolov11n两个预训练模型,datasets_import下有测试数据集,供测试使用** **(20250419)关于GPU训练torch版本的说明:** 本项目环境使用CUDA12.6,在packages目录下有torch和相关依赖,如果您是CUDA12.6和python3.12,安装这个目录下的torch和依赖(共三个),如您使用的更高的CUDA版本,请自行安装torch环境(包括torch、torchaudio和torchvision)或降低CUDA版本。 如果torch相关依赖安装失败,请手动安装: 1、命令行安装(参考Pytorch官网): https://pytorch.org/get-started/locally/ windwos环境示例: ``` pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu126 ``` 2、手动下载地址:https://download.pytorch.org/whl/cu126 (cu126代表CUDA12.6) 手动请在下载whl时注意,torch-2.6.0+cu126-cp312-cp312-win_amd64.whl示意:2.6.0代表torch版本,cu126代表CUDA12.6版本,cp312代表pyhton3.12版本 _此说明仅适用于GPU训练环境,如您为CPU环境,无需参考以上内容_ ### 实测效果: ![输入图片说明](%E4%BB%8B%E7%BB%8Dimages/%E8%AE%AD%E7%BB%83%E5%89%8D%E5%90%8E%E5%AF%B9%E6%AF%94.png) - 资源:纯CPU,4核CPU(单核3.3GHz)、8G内存 - 预训练模型:yolov8n - 数据集:road traffic.v3-release-640-filtered.yolov8(20个类别)总大小36MB,有需要可以在https://universe.roboflow.com下载(此训练集较小适合测试功能) - 训练时间:100轮,约4小时 - 训练结果: mAP50(0.746)、mAP50-95(0.493)、Precision(0.739)、Recall(0.746) _关于自定义数据集:请使用标注系统按照yolo格式导出,按照系统要求的格式上传,但需要注意:图片尺寸尽量一致,建议为640*640(这是yolo官方默认尺寸),如果非固定在使用系统时选择“矩形训练模式”并输入图片长宽,考虑训练步长问题,建议宽为8的倍数,建议使用LabelImg、LabelU等工具_ ## 1. 功能介绍 ### 1.1 技术特点 - **Web 界面**:基于 FastAPI 和前端技术构建的直观 Web 界面 - **数据库集成**:使用 PostgreSQL 数据库存储数据集、模型和任务信息 - **异步处理**:支持长时间运行的训练和检测任务的异步处理 - **资源监控**:利用tensorboard进行训练监控 - **多用户支持**:支持多用户并发使用 - **可扩展性**:模块化设计,易于扩展新功能 ### 1.2 核心功能 #### 1.2.1 数据集管理 - **上传功能**:支持上传 YOLO 格式的数据集(ZIP 压缩包),自动解压并验证数据集结构 _(自动识别类别数量和图片数量及类别)_ - **直接导入功能**:支持在固定目录直接导入数据集文件,具备验证数据集结构功能 _(自动识别类别数量和图片数量及类别)_ - **分割功能**:支持对已上传的数据集进行比例分割,自动调整数据集内容 - **数据集列表**:查看所有上传的数据集,包括名称、描述、类别数量和图像数量 - **数据集详情**:查看数据集的详细信息,包括类别列表和示例图像 - **数据集删除**:删除不再需要的数据集,自动验证数据集是否被训练任务使用,如被使用则无法删除 ![主页](%E4%BB%8B%E7%BB%8Dimages/%E4%B8%BB%E9%A1%B5.png) ![ZIP导入功能](%E4%BB%8B%E7%BB%8Dimages/%E4%B8%8A%E4%BC%A0ZIP.png) ZIP导入功能 ![目录导入功能](%E4%BB%8B%E7%BB%8Dimages/1.1%E4%BB%8E%E5%9B%BA%E5%AE%9A%E7%9B%AE%E5%BD%95%E5%AF%BC%E5%85%A5%E6%95%B0%E6%8D%AE%E9%9B%86%EF%BC%88%E9%9D%9E%E5%8E%8B%E7%BC%A9%E5%8C%85%E6%A0%BC%E5%BC%8F%EF%BC%89.png) 目录导入功能(非压缩格式)自动列出datasets_import下的所有目录名 ![展示验证结果](%E4%BB%8B%E7%BB%8Dimages/1.3%E8%87%AA%E5%8A%A8%E9%AA%8C%E8%AF%81%E6%95%B0%E6%8D%AE%E9%9B%86%E5%86%85%E5%AE%B9%E5%8F%8A%E7%B1%BB%E5%88%AB.png) 展示验证结果 ![数据集分割](%E4%BB%8B%E7%BB%8Dimages/1.4%E4%B8%A4%E7%A7%8D%E5%88%86%E5%89%B2%E6%A8%A1%E5%BC%8F.png) 数据集分割 ![具备两种分割模式](%E4%BB%8B%E7%BB%8Dimages/1.2%E5%88%86%E5%89%B2%E6%95%B0%E6%8D%AE%E9%9B%86.png) 具备两种分割模式 #### 1.2.2 模型管理 - **上传功能**:支持上传预训练的 YOLO模型以及训练后的模型(.pt 文件) - **模型列表**:查看所有可用的模型,包括预训练模型和训练生成的模型 - **模型详情**:查看模型的详细信息,包括模型类型、任务类型和来源 - **模型删除**:删除不再需要的模型,自动验证模型是否正在被训练任务使用,如被使用则无法删除 ![模型管理](%E4%BB%8B%E7%BB%8Dimages/2%E6%A8%A1%E5%9E%8B%E7%AE%A1%E7%90%86.png) #### 1.2.3 训练管理 - **创建训练任务**:选择数据集、预训练模型和训练参数 - **训练参数配置**:配置批次大小、学习率、训练轮数和图像大小等参数 - **硬件资源配置**:配置 CPU、GPU 和内存使用限制 - **训练监控**:实时监控训练进度,包括损失曲线和指标 - **TensorBoard 集成**:通过 TensorBoard 可视化训练过程 - **训练管理**:查看、暂停和取消训练任务 ![训练任务](%E4%BB%8B%E7%BB%8Dimages/3%E8%AE%AD%E7%BB%83%E4%BB%BB%E5%8A%A1.png) ![GPU显存控制](%E4%BB%8B%E7%BB%8Dimages/GPU%E6%98%BE%E5%AD%98%E6%8E%A7%E5%88%B6.png) ![tensorboard](%E4%BB%8B%E7%BB%8Dimages/tensorboard.png) #### 1.2.4 模型测试功能 - **图像检测**:上传图像并使用选定的模型进行目标检测 - **视频检测**:上传视频并使用选定的模型进行目标检测 - **检测参数配置**:配置置信度阈值、IoU 阈值和类别过滤等参数 - **结果可视化**:显示检测结果,包括边界框、类别标签和置信度 - **结果下载**:下载检测结果图像或视频 ![模型验证](%E4%BB%8B%E7%BB%8Dimages/4%E9%AA%8C%E8%AF%81%E5%8A%9F%E8%83%BD.png) ![验证结果](%E4%BB%8B%E7%BB%8Dimages/%E9%AA%8C%E8%AF%81%E6%95%88%E6%9E%9C.png) ## 2. 项目结构说明 ### 2.1 目录结构 ``` yolov8-platform/ ├── app/ # 应用程序代码 │ ├── api/ # API 端点 │ │ ├── endpoints/ # API 路由处理函数 │ │ └── api.py # API 路由注册 │ ├── core/ # 核心配置 │ │ └── config.py # 应用程序配置 │ ├── crud/ # 数据库 CRUD 操作 │ │ ├── dataset.py # 数据集 CRUD │ │ ├── model.py # 模型 CRUD │ │ ├── training.py # 训练任务 CRUD │ │ └── detection.py # 检测任务 CRUD │ ├── db/ # 数据库连接 │ │ ├── init_db.py # 数据库初始化 │ │ └── session.py # 数据库会话 │ ├── models/ # 数据库模型 │ │ ├── dataset.py # 数据集模型 │ │ ├── model.py # 模型模型 │ │ ├── training_task.py # 训练任务模型 │ │ └── detection_task.py # 检测任务模型 │ ├── schemas/ # Pydantic 模式 │ │ ├── dataset.py # 数据集模式 │ │ ├── model.py # 模型模式 │ │ ├── training.py # 训练任务模式 │ │ └── detection.py # 检测任务模式 │ ├── services/ # 业务逻辑 │ │ ├── dataset_service.py # 数据集服务 │ │ ├── model_service.py # 模型服务 │ │ ├── training_service.py # 训练服务 │ │ ├── detection_service.py # 检测服务 │ │ ├── process_monitor.py # 进程监控服务 │ │ └── tensorboard_service.py # TensorBoard 服务 │ ├── static/ # 静态文件 │ │ ├── css/ # CSS 样式 │ │ ├── js/ # JavaScript 脚本 │ │ ├── uploads/ # 上传文件临时存储 │ │ ├── datasets/ # 数据集存储 │ │ ├── models/ # 模型存储( :exclamation: 训练生成的所有文件存储,包括模型文件) │ │ └── results/ # 检测结果存储 │ └── main.py # 应用程序入口点 ├── logs/ # 日志文件 │ └── tensorboard/ # TensorBoard 日志( :exclamation: 训练过程日志) ├── models/ # 预训练模型存储 ├── datasets_import/ # 数据集导入目录(存在这里的数据集可以通过文件导入,不需要压缩) ├── config.yaml # 配置文件 ├── create_example_dataset.py # 创建示例数据集脚本 ├── dataset.py # 数据集处理脚本 ├── detect.py # 检测脚本 ├── docker-compose.yml # Docker Compose 配置 ├── Dockerfile # Docker 配置 ├── init_db.py # 数据库初始化脚本 ├── README.md # 项目说明 ├── requirements.txt # 依赖项 ├── run.py # 运行脚本(主程序运行脚本) ├── setup_venv.bat # Windows 虚拟环境设置脚本 ├── setup_venv.py # 虚拟环境设置脚本 ├── setup_venv.sh # Linux 虚拟环境设置脚本 ├── start.py # 启动脚本(此启动脚本作为初始化功能,会重置数据库,请谨慎操作) └── train.py # 训练脚本(独立的训练脚本) ``` ## 3. 部署方法 ### 3.1 系统要求 - **操作系统**:Windows 10/11、Linux(Ubuntu 18.04+)或 macOS - **Python**:Python 3.12 - **数据库**:PostgreSQL 12 或更高版本 - **硬件**: - CPU:建议 4 核心以上 - 内存:建议 8GB RAM以上 - 存储:至少 10GB 可用空间 - GPU:支持 CUDA 的 NVIDIA GPU(推荐,但不是必需) ### 3.2 Windows 部署(推荐) #### 3.2.1 安装 PostgreSQL 1. 从 [PostgreSQL 官网](https://www.postgresql.org/download/windows/) 下载并安装 PostgreSQL 2. 安装过程中设置用户名为 `postgres`,密码为 `postgres`(密码可以在根目录下inid_db.py中修改) 3. 安装完成后,确保 PostgreSQL 服务已启动 #### 3.2.2 安装 Python 1. 从 [Python 官网](https://www.python.org/downloads/) 下载并安装 Python 3.12 2. 安装时勾选"Add Python to PATH"选项 #### 3.2.3 克隆项目 1. 使用 Git 克隆项目或下载项目压缩包并解压 ``` git clone https://gitee.com/rock_kim/Myolotrain.git cd Myolotrain-master ``` #### 3.2.4 脚本安装(推荐) 使用管理员运行:启动.bat cmd窗口不要关闭,否则系统将停止 #### 3.2.5 手动安装 1. 运行虚拟环境设置脚本 ``` setup_venv.bat ``` 2. 激活虚拟环境 ``` venv\Scripts\activate ``` 3. 运行数据库初始化脚本 ``` python init_db.py ``` 4. 运行服务器启动脚本 ``` python run.py ``` 2. 打开浏览器访问 http://localhost:8000 ### 3.3 Linux 部署 #### 3.3.1 安装 PostgreSQL 1. 安装 PostgreSQL ``` sudo apt update sudo apt install postgresql postgresql-contrib ``` 2. 设置 PostgreSQL 用户和密码 ``` sudo -u postgres psql postgres=# ALTER USER postgres WITH PASSWORD 'postgres'; postgres=# \q ``` #### 3.3.2 安装 Python 依赖 1. 安装 Python 和开发工具 ``` sudo apt install python3.12 python3.12-dev python3.12-venv python3-pip ``` #### 3.3.3 克隆项目 1. 使用 Git 克隆项目 ``` git clone https://gitee.com/rock_kim/Myolotrain.git cd Myolotrain-master ``` #### 3.3.4 设置虚拟环境 1. 运行虚拟环境设置脚本 ``` chmod +x setup_venv.sh ./setup_venv.sh ``` 2. 激活虚拟环境 ``` source venv/bin/activate ``` #### 3.3.5 初始化数据库 1. 运行数据库初始化脚本 ``` python init_db.py ``` #### 3.3.6 启动应用 1. 启动 TensorBoard ``` python -m tensorboard.main --logdir=logs/tensorboard --port=6006 --bind_all & ``` 2. 启动 Web 服务器 ``` python run.py ``` 3. 打开浏览器访问 http://localhost:8000 ### 3.4 Docker 部署 #### 3.4.1 安装 Docker 和 Docker Compose 1. 安装 Docker:[Docker 安装指南](https://docs.docker.com/get-docker/) 2. 安装 Docker Compose:[Docker Compose 安装指南](https://docs.docker.com/compose/install/) #### 3.4.2 使用 Docker Compose 部署 1. 构建并启动容器 ``` docker-compose up -d ``` 2. 打开浏览器访问 http://localhost:8000 #### 3.4.3 使用 GPU 支持的 Docker 部署 1. 确保已安装 NVIDIA Container Toolkit 2. 使用 GPU 支持的 Docker Compose 文件 ``` docker-compose -f docker-compose-gpu.yml up -d ``` ## 4. 使用指南 ### 4.1 数据集准备 1. 准备 YOLO 格式的数据集,目录结构如下: ``` dataset/ ├── classes.txt # 类别名称文件 ├── train/ │ ├── images/ # 训练图像 │ └── labels/ # 训练标签 └── val/ ├── images/ # 验证图像 └── labels/ # 验证标签 ``` 2. 将数据集打包为 ZIP 文件 3. 在 Web 界面中点击"添加数据集",上传 ZIP 文件 **:exclamation: :exclamation: :exclamation: 注意事项:** **1、上传数据集建议使用classes.txt格式,每个类别名称一行即可(必须有yaml或者classes.txt文件,如果没有Yaml文件,系统则根据classes.txt自动生成)** **2、压缩为zip格式,并为根目录(即打开后显示文件,不得有高一层的总目录,否则将无法识别数据集)** **3、建议自行下载预训练模型,如果没有系统将自动下载,但速度较慢** ### 4.2 模型管理 1. 准备 YOLOv8 模型文件(.pt 格式) 2. 在 Web 界面中点击"添加模型",上传模型文件 ### 4.3 训练模型 1. 在 Web 界面中点击"创建训练任务" 2. 选择数据集和预训练模型(可选) 3. 设置训练参数 4. 点击"开始训练" 5. 通过 TensorBoard 监控训练进度 ### 4.4 执行检测 1. 在 Web 界面中选择模型 2. 上传图片或视频 3. 设置检测参数 4. 点击"开始检测" 5. 查看检测结果 ### 5.2 核心模块说明 #### 5.2.1 数据库模型 项目使用 SQLAlchemy ORM 与 PostgreSQL 数据库交互,主要数据模型包括: 1. **Dataset(数据集)** - `id`: UUID 主键 - `name`: 数据集名称 - `description`: 数据集描述 - `path`: 数据集存储路径 - `classes`: 类别列表(JSON 格式) - `image_count`: 图像数量 - `created_at`: 创建时间 - `updated_at`: 更新时间 - `status`: 数据集状态(processing, available, error) 2. **Model(模型)** - `id`: UUID 主键 - `name`: 模型名称 - `description`: 模型描述 - `path`: 模型存储路径 - `type`: 模型类型(yolov8n, yolov8s, yolov8m, yolov8l, yolov8x) - `task`: 任务类型(detect, segment, classify, pose) - `created_at`: 创建时间 - `updated_at`: 更新时间 - `source`: 模型来源(upload, training) 3. **TrainingTask(训练任务)** - `id`: UUID 主键 - `name`: 任务名称 - `dataset_id`: 数据集 ID(外键) - `model_id`: 预训练模型 ID(外键) - `output_model_id`: 输出模型 ID(外键) - `parameters`: 训练参数(JSON 格式) - `hardware_config`: 硬件配置(JSON 格式) - `status`: 任务状态(pending, downloading_model, training, completed, failed, cancelled) - `start_time`: 开始时间 - `end_time`: 结束时间 - `log_path`: 日志路径 - `tensorboard_path`: TensorBoard 日志路径 - `process_id`: 训练进程 ID - `last_checkpoint`: 最后一次检查点路径 4. **DetectionTask(检测任务)** - `id`: UUID 主键 - `model_id`: 模型 ID(外键) - `input_path`: 输入文件路径 - `output_path`: 输出文件路径 - `parameters`: 检测参数(JSON 格式) - `status`: 任务状态(pending, running, completed, failed) - `created_at`: 创建时间 #### 5.2.2 API 端点 平台提供以下主要 API 端点: 1. **数据集 API** - `POST /api/datasets/`: 上传数据集 - `GET /api/datasets/`: 获取数据集列表 - `GET /api/datasets/{dataset_id}`: 获取数据集详情 - `DELETE /api/datasets/{dataset_id}`: 删除数据集 2. **模型 API** - `POST /api/models/`: 上传模型 - `GET /api/models/`: 获取模型列表 - `GET /api/models/{model_id}`: 获取模型详情 - `DELETE /api/models/{model_id}`: 删除模型 3. **训练 API** - `POST /api/training/`: 创建训练任务 - `GET /api/training/`: 获取训练任务列表 - `GET /api/training/{task_id}`: 获取训练任务详情 - `DELETE /api/training/{task_id}`: 取消训练任务 - `GET /api/training/{task_id}/logs`: 获取训练日志 4. **检测 API** - `POST /api/detection/`: 创建检测任务 - `GET /api/detection/`: 获取检测任务列表 - `GET /api/detection/{task_id}`: 获取检测任务详情 - `GET /api/detection/{task_id}/result`: 获取检测结果 #### 5.2.3 服务模块 1. **数据集服务**:处理数据集上传、解压、验证和管理 2. **模型服务**:处理模型上传、下载和管理 3. **训练服务**:处理训练任务创建、执行和监控 4. **检测服务**:处理检测任务创建、执行和结果生成 5. **进程监控服务**:监控训练和检测进程的状态 6. **TensorBoard 服务**:管理 TensorBoard 实例 ## 6. 故障排除 ### 6.1 数据库连接问题 - 确保 PostgreSQL 服务正在运行 - 检查数据库连接参数是否正确 - 尝试手动连接数据库以验证凭据 ### 6.2 模型训练问题 - 检查数据集格式是否正确 - 确保有足够的磁盘空间和内存 - 查看训练日志以获取详细错误信息 ### 6.3 Web 服务器问题 - 检查端口 8000 是否被占用 - 确保已安装所有依赖项 - 查看应用程序日志以获取详细错误信息 ### 6.4 TensorBoard 问题 - 检查端口 6006 是否被占用 - 确保 TensorBoard 已正确安装 - 尝试手动启动 TensorBoard 以验证配置 # 7.下一步优化计划 - 优化数据集导入功能,实现自动化导入和自动化格式转换 - 增加更多的训练参数配置 - 增加其他版本的支持(yolov5)