目标检测算法——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,这样就大功告成啦~
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
二维码