现在yolov5的neck用的是PANet,在EfficientDet论文中提出了BiFPN结构,还有更加不错的性能。所以就尝试将yolov5中的PANet层改为BiFPN。
需要修改的地方
- 主要是修改yaml配置文件
我修改的是yolov5x.yaml,将concat层连接不同的layer。有三层BiFPN,最后输出为了和yolov5对应,我没有用在论文里写的p3-p7五个节点,我只用了三个。(这里应该要用relu使w>0,我训练报错就没有用relu) - 修改common.py
class Concat(nn.Module):
# Concatenate a list of tensors along dimension
def __init__(self, c1, c2):
super(Concat, self).__init__()
# self.relu = nn.ReLU()
self.w1 = nn.Parameter(torch.ones(2, dtype=torch.float32), requires_grad=