改进yolo11模型学习
文章目录
- YOLOv8本地环境配置与调试自定义模块全过程(含断点调试)
- 配置环境
- 创建 Anaconda 虚拟环境
- 安装 PyTorch
- 下载 YOLOv8 代码
- 安装依赖
- 新建训练入口脚本 `train.py`
- 修改 `data.yaml`
- 设置解释器(确保使用 Anaconda 的 yolov8 虚拟环境)
- 运行报错解决
- 原因分析:
- 解决办法:
- 成功运行模型后,进行断点调试
- 查找并打断点(以 sppf 为例)
- 加入 ViT 模块进行调试
- 修改模型结构(以 yolov8n 为例)
- 验证前向传播
- 小技巧:快速定位卷积层
- 总结
YOLOv8本地环境配置与调试自定义模块全过程(含断点调试)
学习视频:【教程】改进yolov8,缝合yolov8
up主:学不会电磁场
配置环境
创建 Anaconda 虚拟环境
conda create -n yolov8 python=3.8
可根据需要修改 Python 版本,建议 3.8 是因为与 YOLOv8 和 PyTorch 的兼容性好。
安装 PyTorch
pip install torch==1.8.1+cu111 torchvision==0.9.1+cu111 torchaudio==0.8.1 -f https://download.pytorch.org/whl/torch_stable.html
下载 YOLOv8 代码
链接: https://pan.baidu.com/s/1fTd5_OCKjz5JxWuVxPHVjg?pwd=6qv7 提取码: 6qv7
将代码下载并解压至本地,例如路径为:
G:\BaiduNetdiskDownload\yolo_change\yolov8\YOLOv8-main
把所有的文件解压后放在一起:
安装依赖
cd G:\BaiduNetdiskDownload\yolo_change\yolov8\YOLOv8-main
pip install -r requirements.txt
新建训练入口脚本 train.py
内容如下:
from ultralytics import YOLOif __name__ == "__main__":model = YOLO("ultralytics/models/v8/yolov8n.yaml")model.train(data="dataset/data.yaml", epochs=300, imgsz=640, batch=2)
修改 data.yaml
train: G:/BaiduNetdiskDownload/yolo_change/yolov8/YOLOv8-main/dataset/train/images
val: G:/BaiduNetdiskDownload/yolo_change/yolov8/YOLOv8-main/dataset/valid/images
test: G:/BaiduNetdiskDownload/yolo_change/yolov8/YOLOv8-main/dataset/test/imagesnc: 10
names: ['cat', 'chicken', 'cow', 'dog', 'fox', 'goat', 'horse', 'person', 'racoon', 'skunk']
设置解释器(确保使用 Anaconda 的 yolov8 虚拟环境)
运行报错解决
当运行 train.py
报如下错误:
ModuleNotFoundError: No module named 'cv2'
原因分析:
YOLOv8 使用了 OpenCV 进行图像处理,当前环境未安装 cv2
模块。
解决办法:
pip install opencv-python
成功运行模型后,进行断点调试
查找并打断点(以 sppf 为例)
找到 modules.py
文件中 sppf
模块的位置:
运行调试,查看模型结构:
确认模型能运行时,观察以下变量的 shape:
self.cv2(torch.cat((x, y1, y2, self.m(y2)), 1)).shape
加入 ViT 模块进行调试
先在 vit.py
中编写自己的模块,测试无误后:
将 vit.py
中的模块复制粘贴至 modules.py
中,确保模块功能正常。
修改模型结构(以 yolov8n 为例)
将自定义模块插入网络第10层,并修改后续结构以匹配输出维度:
记得在 yaml 文件中更新该结构。
验证前向传播
再次打断点调试,确认进入了自定义模块的 forward 流程:
小技巧:快速定位卷积层
若要调试模型中第一个卷积层,可结合名称查找:
总结
本文从环境配置、训练脚本编写、运行调试到模型结构修改,完整记录了 YOLOv8 本地部署及自定义模块调试的全过程。你可以在此基础上深入修改结构、添加注意力模块或融合 Transformer。