本人在YOLOv8中添加注意力机制发现新的模型,例如将yolov8s.yaml文件更改成为yolov8s-Attention.yaml文件,也就是在C2f里添加了注意力机制。
原文件:
更改后:
训练的py文件就可以写成:
model = YOLO("yolov8s.pt")
# 使用模型
model.train(model="yolov8s-Attention.yaml",
data="VOC2028.yaml",
epochs=300,
project='runs/VOC2028/train',
name='exp-SE',
resume=False,
lr0=0.0001,
lrf=0.001)
但是我们会发现在运行的界面当中并没有添加注意力机制,如图所示:
所以我们需要在源文件中更改,打开ultralytics/engine/model.py,找到train方法,找到如下图这一行:
将这一行画圈的代码改成:
self.trainer.model = self.trainer.get_model(weights=self.model if self.ckpt else None, cfg=self.trainer.model)
然后我们再来测试一下:
发现注意力机制添加成功!!!
所以我们需要进一步看看是否真的添加成功,就需要看看重新开始训练的第一轮能得到什么样的结果:
这里我们发现第一轮的训练结果为0,说明是从头开始训练。
再看看更改后的代码,发现第一轮的训练结果为0.832,说明预训练加载到模型当中了。
yolov8模型以此完成了添加注意力机制并且完成了预训练的加载,谢谢!!!