训练代码(很简单):

from ultralytics import YOLO

if __name__ == '__main__':
    model = YOLO('yolov8-starnet1-s.yaml')
    # model = model.scales('s')  # 显式切换到s规模
    results = model.train(
        data='./data.yaml',
        epochs=600,
        patience=500,
        batch=128,
        imgsz=320,
        degrees=30,
        optimizer='SGD',
        mixup=0.2,
    )


"""
yolov8n-starnet

nohup python det_train_starnet1.py > ./train_logs/det_train_starnet1.log 2>&1 &
"""
names:
  0: hand


path: /home/sss/shoushi/0107data2

train: images/train
val: images/train

训练结果在runs/train中

效果图:

接下来就是环境配置啦:

一、环境准备 🛠️
  1. Python 版本:推荐 Python 3.8 ~ 3.11,该版本区间与 YOLOv8、PyTorch 兼容性最佳。
  2. 虚拟环境(强烈推荐)
    • venv创建:
      python -m venv yolov8_hand
      # 激活环境
      # Windows: yolov8_hand\Scripts\activate
      # Linux/Mac: source yolov8_hand/bin/activate
      
    • conda创建:
      conda create -n yolov8_hand python=3.10
      conda activate yolov8_hand
      
  3. GPU 加速(可选但必选):需提前安装 NVIDIA 驱动 + 对应版本的 CUDA Toolkit,否则只能用 CPU 训练(速度极慢)。

二、核心 pip 安装指令 📦

先安装 PyTorch(根据你的 CUDA 版本选择),再安装 YOLOv8 依赖:

# 1. 安装PyTorch(以CUDA 11.8为例,其他版本请查PyTorch官网)
pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118

# 2. 安装YOLOv8官方库(包含所有训练/推理依赖)
pip install ultralytics

# 3. (可选)补装常用工具库(若运行时报缺库)
pip install opencv-python pyyaml matplotlib pillow tensorboard

若仅用 CPU 训练,可直接执行 pip install ultralytics,PyTorch 会自动安装 CPU 版本。


三、训练与配置注意事项 💡
1. 数据配置(data.yaml)
  • 路径规范
    • path 必须是数据集根目录的绝对路径 / 相对路径,避免中文、空格或特殊字符。
    • train/val 需指向对应图像文件夹(示例中val误写为images/train,实际应单独划分验证集,建议比例 8:2)。
  • 类别对齐names 必须与数据集标注类别完全一致,示例中 0: hand 表示仅 1 类目标。

    yaml

    names:
      0: hand
    path: /home/sss/shoushi/0107data2  # 数据集根目录
    train: images/train  # 训练集路径(相对于path)
    val: images/val      # 验证集路径(建议与训练集分开)
    
2. 模型配置(yolov8-starnet1-s.yaml)
  • 若使用自定义 Starnet 结构,需确保该 yaml 文件与训练脚本同目录,或填写完整路径。
  • 若仅用官方 YOLOv8s 模型,可直接替换为 yolov8s.pt(自动下载预训练权重)或 yolov8s.yaml
3. 训练参数调优
  • batch=128:若 GPU 显存≤16G,建议降至32/64,避免OOM(显存溢出)
  • epochs=600patience=500patience是早停阈值,若验证集损失 500 轮不下降则停止训练;小数据集可适当调小(如patience=100)。
  • imgsz=320:手势识别任务 320×320 足够,若需更高精度可调至 640,但显存占用会翻倍。
  • 数据增强:degrees=30(随机旋转 ±30°)、mixup=0.2(混合增强),可提升泛化能力;数据集过小时可适度增强。
  • optimizer='SGD':也可尝试Adam/AdamW,SGD 在小数据集上更稳定,Adam 收敛更快。
4. 后台运行与日志
  • 指令解析:
    nohup python det_train_starnet1.py > ./train_logs/det_train_starnet1.log 2>&1 &
    
    • nohup:后台运行,断开 SSH 后仍继续训练。
    • > ./train_logs/...log:将标准输出重定向到日志文件。
    • 2>&1:将错误输出也写入日志(方便排查报错)。
    • &:放到后台执行。
  • 注意:需先创建日志目录,否则会报错:mkdir -p train_logs
5. 训练结果与排查
  • 结果路径:训练日志、权重文件、可视化结果均保存在 runs/train/ 目录下,weights/best.pt 为最优模型。
  • 常见问题:
    • 显存 OOM:降低batchimgsz,或在model.train()中添加gradient_checkpointing=True
    • 验证集精度低:检查数据集划分是否合理、类别标注是否正确,或增加数据增强、延长训练轮数。
    • 路径错误:确保所有路径(数据集、模型 yaml、日志目录)均存在且权限正常。

四、额外建议 ✨
  • 数据集划分:务必将数据集按train/val严格划分(如 8:2),避免用训练集做验证,否则会高估模型性能。
  • 预训练权重:首次训练时加载 YOLOv8s 预训练权重(model = YOLO('yolov8s.pt')),可加速收敛并提升精度。
  • 训练监控:用 tensorboard --logdir runs/train 启动 TensorBoard,实时查看损失、精度曲线。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐