当前位置:   article > 正文

YOLOv8自定义模型架构,及训练自己的数据集代码(论文,软著创新)_yolov8训练自己的数据集paddlepaddle

yolov8训练自己的数据集paddlepaddle

一、代码块目录详情

二、SEAttention.py(创新示例)

在ultralytics/nn目录下,创建SEAttention.py文件,并。

  1. import numpy as np
  2. import torch
  3. from torch import nn
  4. from torch.nn import init
  5. class SEAttention(nn.Module):
  6. def __init__(self, channel=512,reduction=16):
  7. super().__init__()
  8. self.avg_pool = nn.AdaptiveAvgPool2d(1)
  9. self.fc = nn.Sequential(
  10. nn.Linear(channel, channel // reduction, bias=False),
  11. nn.ReLU(inplace=True),
  12. nn.Linear(channel // reduction, channel, bias=False),
  13. nn.Sigmoid()
  14. )
  15. def init_weights(self):
  16. for m in self.modules():
  17. if isinstance(m, nn.Conv2d):
  18. init.kaiming_normal_(m.weight, mode='fan_out')
  19. if m.bias is not None:
  20. init.constant_(m.bias, 0)
  21. elif isinstance(m, nn.BatchNorm2d):
  22. init.constant_(m.weight, 1)
  23. init.constant_(m.bias, 0)
  24. elif isinstance(m, nn.Linear):
  25. init.normal_(m.weight, std=0.001)
  26. if m.bias is not None:
  27. init.constant_(m.bias, 0)
  28. def forward(self, x):
  29. b, c, _, _ = x.size()
  30. y = self.avg_pool(x).view(b, c)
  31. y = self.fc(y).view(b, c, 1, 1)
  32. return x * y.expand_as(x)

三、tasks.py

在tasks.py文件里导入SEAttention注意力机制

然后引用SEAttention注意力机制到parse_model函数中,CTRT+F查找parse_model,在下图红框中添加如下代码(如图所示)

  1. # SEAttention注意力机制
  2. elif m in {SEAttention}:
  3. args = [ch[f], *args]

或者直接用以下代码直接替换tasks.py的代码

  1. # Ultralytics YOLO
    声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/539741
    推荐阅读
    相关标签