2201_75625088 2023-07-14 00:00 采纳率: 0%
浏览 24

在yolo中添加bifpn模块,为什么会使map为零。但别人能跑起来

我在yolov8模型中添加bifpn模块,但我运行结果map为0,但别人却能运行成功,这错在哪?

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-07-14 02:09
    关注
    • 这篇文章讲的很详细,请看:芒果改进YOLOv7系列:首发改进特征融合网络BiFPN结构,融合更多有效特征
    • 除此之外, 这篇博客: 【YOLOv5-6.x】设置可学习权重结合BiFPN(Add操作)中的 只修改一处 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
    • 本文以yolov5s.yaml为例进行修改,修改模型配置文件时要注意以下几点:

      • 这里的yaml文件只修改了一处,也就是将19层的Concat换成了BiFPN_Add,要想修改其他层的Concat,可以类比进行修改
      • BiFPN_Add本质是add操作,不是concat操作,因此,BiFPN_Add的各个输入层要求大小完全一致(通道数、feature map大小等),因此,这里要修改之前的参数[-1, 13, 6],来满足这个要求:
        • -1层就是上一层的输出,原来上一层的输出channel数为256,这里改成512
        • 13层就是这里[-1, 3, C3, [512, False]], # 13
        • 这样修改后,BiFPN_Add各个输入大小都是[bs,256,40,40]
        • 最后BiFPN_Add后面的参数层设置为[256, 256]也就是输入输出channel数都是256
      # YOLOv5 🚀 by Ultralytics, GPL-3.0 license
      
      # Parameters
      nc: 80  # number of classes
      depth_multiple: 0.33  # model depth multiple
      width_multiple: 0.50  # layer channel multiple
      anchors:
        - [10,13, 16,30, 33,23]  # P3/8
        - [30,61, 62,45, 59,119]  # P4/16
        - [116,90, 156,198, 373,326]  # P5/32
      
      # YOLOv5 v6.0 backbone
      backbone:
        # [from, number, module, args]
        [[-1, 1, Conv, [64, 6, 2, 2]],  # 0-P1/2
         [-1, 1, Conv, [128, 3, 2]],  # 1-P2/4
         [-1, 3, C3, [128]],
         [-1, 1, Conv, [256, 3, 2]],  # 3-P3/8
         [-1, 6, C3, [256]],
         [-1, 1, Conv, [512, 3, 2]],  # 5-P4/16
         [-1, 9, C3, [512]],
         [-1, 1, Conv, [1024, 3, 2]],  # 7-P5/32
         [-1, 3, C3, [1024]],
         [-1, 1, SPPF, [1024, 5]],  # 9
        ]
      
      # YOLOv5 v6.0 BiFPN head
      head:
        [[-1, 1, Conv, [512, 1, 1]],
         [-1, 1, nn.Upsample, [None, 2, 'nearest']],
         [[-1, 6], 1, Concat, [1]],  # cat backbone P4
         [-1, 3, C3, [512, False]],  # 13
      
         [-1, 1, Conv, [256, 1, 1]],
         [-1, 1, nn.Upsample, [None, 2, 'nearest']],
         [[-1, 4], 1, Concat, [1]],  # cat backbone P3
         [-1, 3, C3, [256, False]],  # 17 (P3/8-small)
      
         [-1, 1, Conv, [512, 3, 2]],  # 为了BiFPN正确add,调整channel数
         [[-1, 13, 6], 1, BiFPN_Add3, [256, 256]],  # cat P4 <--- BiFPN change 注意v5s通道数是默认参数的一半
         [-1, 3, C3, [512, False]],  # 20 (P4/16-medium)
      
         [-1, 1, Conv, [512, 3, 2]],
         [[-1, 10], 1, Concat, [1]],  # cat head P5
         [-1, 3, C3, [1024, False]],  # 23 (P5/32-large)
      
         [[17, 20, 23], 1, Detect, [nc, anchors]],  # Detect(P3, P4, P5)
        ]
      
    评论

报告相同问题?

问题事件

  • 创建了问题 7月14日

悬赏问题

  • ¥15 编辑cmake lists 明明写了project项目名,但是还是报错怎么回事
  • ¥15 关于#计算机视觉#的问题:求一份高质量桥梁多病害数据集
  • ¥15 特定网页无法访问,已排除网页问题
  • ¥50 如何将脑的图像投影到颅骨上
  • ¥15 提问一个关于vscode相关的环境配置问题,就是输入中文但是显示不出来,代码在idea可以显示中文,但在vscode不行,不知道怎么配置环境
  • ¥15 netcore使用PuppeteerSharp截图
  • ¥20 这张图页头,页脚具体代码该怎么写?
  • ¥15 关于#sql#的问题,请各位专家解答!
  • ¥20 WPF MVVM模式 handycontrol 框架, hc:SearchBar 控件 Text="{Binding NavMenusKeyWords}" 绑定取不到值
  • ¥15 需要手写数字信号处理Dsp三个简单题 不用太复杂