目标检测算法——YOLOv5结合BiFPN

Posted 加勒比海带66

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了目标检测算法——YOLOv5结合BiFPN相关的知识,希望对你有一定的参考价值。

将YOLOv5中的PANet层修改为EfficientDet-BiFPN,实现自上而下与自下而上的深浅层特征双向融合,增强不同网络层之间特征信息的传递,明显提升YOLOv5算法检测精度,并且具有更加不错的检测性能。想要代码咨询的小伙伴请私聊喔~

那么,YOLOv5结合BiFPN需要修改以下几个地方:

1.修改common.py

class Concat_BiFPN(nn.Module):
    def __init__(self, c1):
        super(Concat, self).__init__()
        # self.relu = nn.ReLU()
        self.w = nn.Parameter(torch.ones(2, dtype=torch.float32), requires_grad=True)
        self.epsilon = 0.0001
        self.swish = Swish()
        
    def forward(self, x):
        weight = self.w / (torch.sum(self.w, dim=0) + self.epsilon)
        # Connections for P6_0 and P7_0 to P6_1 respectively
        x = self.swish(weight[0] * x[0] + weight[1] * x[1])
        return x

2.修改yolo.py

channel现在不是直接concat了,而是进行pairwise add操作,所以out-channel不再是sum。

# elif m is Concat:
#    c2 = sum([ch[x] for x in f])
  elif m is Concat:
     c2 = max([ch[x] for x in f])

3.修改配置文件

根据自身结构在yolov5代码的hub/yolov5s.yaml 中加入Concat_BiFPN,这样就大功告成啦~

《新程序员》:云原生和全面数字化实践 50位技术专家共同创作,文字、视频、音频交互阅读

以上是关于目标检测算法——YOLOv5结合BiFPN的主要内容,如果未能解决你的问题,请参考以下文章

深度学习实战 1 YOLOv5结合BiFPN

目标检测算法——YOLOv5/YOLOv7改进之结合​RepVGG(速度飙升)

将yolov5中的PANet层改为BiFPN

目标检测算法——YOLOv5/YOLOv7改进之结合​ASPP(空洞空间卷积池化金字塔)

目标检测算法——YOLOv5/YOLOv7改进之结合SPD-Conv(低分辨率图像和小目标涨点明显)

Yolov5如何更换BiFPN?