1.下载代码
GitHub - ultralytics/ultralytics: Ultralytics YOLO 🚀
https://github.com/ultralytics/ultralytics2.使用自己配置好的环境,在终端进行激活自己的环境

3.安装所需文件架包
pip install -e . -i https://pypi.tuna.tsinghua.edu.cn/simple

等待安装完成

4.进行数据集划分
找到你制作好的数据集

由上面的结构转换为yolo格式的数据集,进行8:2划分
D:\data\YanJi\
├── yolo_data/ # 图像文件夹(jpg/png)
└── labels_txt/ # 对应的 YOLO 格式标签(.txt 文件)
变为

D:\data\YanJi\my_dataset/
├── images/
│ ├── train/ → 包含所有训练图片
│ └── val/ → 包含验证图片(可选)
└── labels/
├── train/ → 对应 .txt 标签
└── val/ → 对应 .txt 标签
划分代码如下
import os
import shutil
from pathlib import Path
# 设置路径
image_dir = Path(r"D:\data\YanJi\yolo_data")
label_dir = Path(r"D:\data\YanJi\labels_txt")
output_dir = Path(r"D:\data\YanJi\my_dataset")
# 创建输出目录
output_dir.mkdir(exist_ok=True)
for folder in ["images", "labels"]:
(output_dir / folder).mkdir(exist_ok=True)
for split in ["train", "val"]:
(output_dir / folder / split).mkdir(exist_ok=True)
# 获取所有文件名(去掉后缀)
files = [f.stem for f in image_dir.glob("*.jpg") if f.stem in [f.stem for f in label_dir.glob("*.txt")]]
# 划分训练/验证(8:2)
train_ratio = 0.8
train_count = int(len(files) * train_ratio)
train_files = files[:train_count]
val_files = files[train_count:]
# 复制文件
for fname in train_files:
img_src = image_dir / f"{fname}.jpg"
label_src = label_dir / f"{fname}.txt"
img_dst = output_dir / "images" / "train" / f"{fname}.jpg"
label_dst = output_dir / "labels" / "train" / f"{fname}.txt"
shutil.copy(img_src, img_dst)
shutil.copy(label_src, label_dst)
for fname in val_files:
img_src = image_dir / f"{fname}.jpg"
label_src = label_dir / f"{fname}.txt"
img_dst = output_dir / "images" / "val" / f"{fname}.jpg"
label_dst = output_dir / "labels" / "val" / f"{fname}.txt"
shutil.copy(img_src, img_dst)
shutil.copy(label_src, label_dst)
print("✅ 数据集已成功划分!")
5.开始训练
# train_guo.py
from ultralytics import YOLO
import torch
# 检查 GPU 是否可用(这部分可以放在外面,因为不涉及多进程启动)
print(f"✅ CUDA 可用: {torch.cuda.is_available()}")
if torch.cuda.is_available():
print(f"🎮 使用 GPU: {torch.cuda.get_device_name(0)}")
# ✅ 关键:将训练逻辑包裹在 if __name__ == '__main__': 中
if __name__ == '__main__':
# 加载模型
model = YOLO("yolov8n.pt")
# 开始训练
results = model.train(
data="data/my_data.yaml",
epochs=100,
imgsz=640,
batch=4,
device=0, # 使用 GPU
half=True, # 启用 FP16 半精度(节省显存)
name="guo_detection",
cache=False,
workers=2 # 启用 2 个子进程加载数据(Windows 必须加主模块保护)
)
print(f"✅ 训练完成!最佳模型保存在: {results.save_dir}/weights/best.pt")
