零基础保姆级YOLOv8教程:从安装训练到注意力机制改进(超详细点击操作)
核心内容环境搭建→数据集准备→基础训练→CBAM注意力机制改进→测试对比→报错解决全程点击级操作重点补充下载双选项国外/国内镜像适配不同网络。核心要求全程无中文路径、无中文文件名避免报错无需Python和深度学习基础复制命令、点击操作即可完成。核心Miniconda创建独立虚拟环境避免依赖冲突全程在Miniconda PromptWindows或终端macOS操作。1.1 打开Miniconda PromptWindows开始菜单找到「Miniconda3 (64-bit)」打开「Miniconda Prompt」不要用系统自带命令行命令行前显示「(base)」进入基础环境准备创建YOLOv8专属环境。1.2 创建并激活YOLOv8虚拟环境# 1. 创建yolov8_env虚拟环境Python3.8兼容性最优 conda create -n yolov8_env python3.8 # 2. 弹出提示输入y小写确认回车安装 # 3. 激活环境后续所有操作均在此环境中 conda activate yolov8_env激活成功后命令行前显示「(yolov8_env)」。1.3 安装PyTorchGPU/CPU通用双下载选项核心依赖分CPU/GPU版本每个版本提供国外官方源和国内镜像源国外下载不了直接用国内源。情况1CPU版本所有电脑可用新手首选# 选项1国外官方源网络通畅可直接用 pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cpu # 选项2国内镜像源国外下载慢/失败时用优先清华源 pip install torch torchvision torchaudio -i https://pypi.tuna.tsinghua.edu.cn/simple情况2GPU版本有NVIDIA显卡训练更快先通过NVIDIA控制面板查看CUDA版本以CUDA 11.8为例其他版本替换对应后缀即可双下载选项如下# 选项1国外官方源网络通畅可直接用 pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118 # 选项2国内镜像源国外下载慢/失败时用优先清华源 pip3 install torch torchvision torchaudio -i https://pypi.tuna.tsinghua.edu.cn/simple验证安装输入python -c import torch; print(torch.cuda.is_available())显示True说明GPU可用False则用CPU版本。1.4 下载YOLOv8源码双下载选项选项1国外官方下载GitHub无需科学上网网络通畅首选浏览器访问https://github.com/ultralytics/ultralytics点击右上角「Code」→「Download ZIP」下载源码压缩包。选项2国内镜像下载GitHub访问失败时用浏览器访问国内镜像地址https://gitee.com/ultralytics/ultralytics码云镜像国内访问更快点击右上角「克隆/下载」→「下载ZIP」下载源码压缩包。解压压缩包到英文路径如D:\yolov8\ultralytics记住解压路径后续要用。1.5 安装YOLOv8依赖双下载选项进入YOLOv8源码解压文件夹替换为自己的路径cd D:\yolov8\ultralytics安装依赖双选项适配不同网络# 选项1国外官方源网络通畅可直接用pip install -e .# 选项2国内镜像源国外下载慢/失败时用优先清华源pip install -e . -i https://pypi.tuna.tsinghua.edu.cn/simple无报错即说明环境搭建成功。二、数据集准备模型训练基础必做2.1 安装LabelImg标注工具双下载选项# 选项1国外官方源网络通畅可直接用 pip install labelimg # 选项2国内镜像源国外下载慢/失败时用优先清华源 pip install labelimg -i https://pypi.tuna.tsinghua.edu.cn/simple验证安装输入labelimg弹出界面即成功。2.2 标注图片简单操作打开LabelImg「Open Dir」选择待标注图片文件夹英文路径快捷键W框选目标输入标签如cat、dog同类标签一致不混用大小写CtrlS保存自动生成TXT标注文件快捷键D切换下一张至少标注20张。2.3 整理数据集文件夹严格按此结构否则报错ultralytics/ ├─ datasets/ │ ├─ images/ │ │ ├─ train/ # 70%-80%标注图片 │ │ └─ val/ # 20%-30%标注图片 │ ├─ labels/ │ │ ├─ train/ # train图片对应TXT标注 │ │ └─ val/ # val图片对应TXT标注2.4 创建数据集配置文件打开「ultralytics/datasets」新建文本文档重命名为「my_data.yaml」Windows需显示文件扩展名复制以下代码修改3处类别数量、类别名path: datasets/train: images/trainval: images/val# 修改1nc类别数量如cat和dognc2nc: 2# 修改2names类别名与标注标签一致names: [cat, dog]CtrlS保存关闭。三、第一次训练YOLOv8复制命令即可跑确保激活yolov8_env环境且进入YOLOv8源码文件夹复制训练命令参数无需修改新手直接用yolo detect train modelyolov8s.pt datadatasets/my_data.yaml epochs50 imgsz640 batch4yolov8s.pt预训练权重下载双选项选项1自动下载命令执行后自动从国外源下载约200MB选项2国内手动下载自动下载失败时下载地址https://download.openmmlab.com/mmyolo/v0/yolov8/yolov8s.pt下载后放入「ultralytics」文件夹命令不变。等待训练完成CPU耗时久GPU更快训练完成后「ultralytics/runs/detect/train/weights/best.pt」为训练好的基础模型保存好。四、预测测试验证模型效果在「ultralytics」新建「test」文件夹放入待测试图片英文命名如test.jpg复制预测命令修改图片路径即可yolo detect predict modelruns/detect/train/weights/best.pt sourcetest/test.jpg执行后自动弹出测试结果有框选和标签即成功。五、重点给YOLOv8添加CBAM注意力机制提升准确率新手可操作核心添加CBAM代码→注册CBAM→修改模型配置全程复制粘贴点击级操作。第一步修改conv.py文件添加CBAM代码打开「ultralytics→nn→modules」双击打开「conv.py」记事本/VS Code均可光标移到文件顶部粘贴以下CBAM代码不删原有代码import torch import torch.nn as nn import torch.nn.functional as F class ChannelAttention(nn.Module): def __init__(self, in_channels, reduction16): super().__init__() self.avg_pool nn.AdaptiveAvgPool2d(1) self.max_pool nn.AdaptiveMaxPool2d(1) self.fc nn.Sequential( nn.Conv2d(in_channels, in_channels//reduction, 1, biasFalse), nn.ReLU(), nn.Conv2d(in_channels//reduction, in_channels, 1, biasFalse) ) self.sigmoid nn.Sigmoid() def forward(self, x): avg_out self.fc(self.avg_pool(x)) max_out self.fc(self.max_pool(x)) out avg_out max_out return self.sigmoid(out) class SpatialAttention(nn.Module): def __init__(self, kernel_size7): super().__init__() self.conv nn.Conv2d(2, 1, kernel_size, paddingkernel_size//2, biasFalse) self.sigmoid nn.Sigmoid() def forward(self, x): avg_out torch.mean(x, dim1, keepdimTrue) max_out, _ torch.max(x, dim1, keepdimTrue) x torch.cat([avg_out, max_out], dim1) x self.conv(x) return self.sigmoid(x) class CBAM(nn.Module): def __init__(self, in_channels, reduction16, kernel_size7): super().__init__() self.channel_attention ChannelAttention(in_channels, reduction) self.spatial_attention SpatialAttention(kernel_size) def forward(self, x): x x * self.channel_attention(x) x x * self.spatial_attention(x) return xCtrlS保存不关闭conv.py。第二步在Conv类中添加CBAM调用代码CtrlF查找「class Conv(nn.Module):」找到Conv类在Conv类「__init__」方法最后一行添加self.cbam CBAM(in_channels)在Conv类「forward」方法最后一行return x之前添加CtrlS保存关闭conv.py。第三步注册CBAM避免报错打开「ultralytics→nn→modules」双击打开「__init__.py」找到「from .conv import Conv」修改为from .conv import Conv, CBAMCtrlS保存关闭文件。第四步修改模型配置文件打开「ultralytics」复制「yolov8s.yaml」重命名为「yolov8s_cbam.yaml」双击打开CtrlF查找「backbone:」在每个C2f模块后添加一行CBAM配置通道数与上一层一致backbone: # [from, repeats, module, args] - [-1, 1, Conv, [64, 3, 2]] # 0 - [-1, 1, Conv, [128, 3, 2]] # 1 - [-1, 3, C2f, [128, True]] # 2 - [-1, 1, CBAM, [128]] # 新增CBAM - [-1, 1, Conv, [256, 3, 2]] # 3 - [-1, 6, C2f, [256, True]] # 4 - [-1, 1, CBAM, [256]] # 新增CBAM - [-1, 1, Conv, [512, 3, 2]] # 5 - [-1, 6, C2f, [512, True]] # 6 - [-1, 1, CBAM, [512]] # 新增CBAM - [-1, 1, Conv, [1024, 3, 2]] # 7 - [-1, 3, C2f, [1024, True]] # 8 - [-1, 1, CBAM, [1024]] # 新增CBAM - [-1, 1, SPPF, [1024, 5]] # 9CtrlS保存关闭文件。第五步训练改进版模型yolo detect train modelyolov8s_cbam.yaml datadatasets/my_data.yaml epochs50 imgsz640 batch4训练完成后「ultralytics/runs/detect/train2/weights/best.pt」为改进版模型保存好。六、改进版模型测试对比效果yolo detect predict modelruns/detect/train2/weights/best.pt sourcetest/test.jpg对比基础模型改进版对小目标、模糊目标检测准确率更高。七、新手常见报错及解决方法报错1NameError: name CBAM is not defined → 重新检查「__init__.py」确保添加「from .conv import Conv, CBAM」报错2RuntimeError: CUDA out of memory → 把batch改为2或添加devicecpu用CPU训练报错3FileNotFoundError: datasets/my_data.yaml → 检查文件路径、文件名确保在「ultralytics/datasets」中报错4训练mAP为0 → 检查标签与配置文件一致、文件夹结构正确不混用大小写报错5ModuleNotFoundError: No module named ultralytics → 激活yolov8_env重新执行pip install -e .报错6yaml.scanner.ScannerError → 重新复制yaml代码确保缩进正确不混用空格和Tab。