YOLOv5改进之五:改进特征融合网络PANET为BIFPN

2年前Python源码13896
YOLOv5改进之五:改进特征融合网络PANET为BIFPN 人工智能算法研究院 已于2022-07-05 14:06:00修改 10130 收藏 158 分类专栏: YOLOv5 文章标签: 深度学习 计算机视觉 目标检测 于2022-06-21 15:05:55首次发布 YOLOv5 专栏收录该内容 34 篇文章 228 订阅 订阅专栏

 前      言:作为当前先进的深度学习目标检测算法YOLOv5,已经集合了大量的trick,但是在处理一些复杂背景问题的时候,还是容易出现错漏检的问题。此后的系列文章,将重点对YOLOv5的如何改进进行详细的介绍,目的是为了给那些搞科研的同学需要创新点或者搞工程项目的朋友需要达到更好的效果提供自己的微薄帮助和参考。

解决问题:加入BIFPN加权双向金字塔结构,提升不同尺度的检测效果

添加方法:

第一步:common.py构建Concat_BIFPN模块。

class Concat_BIFPN(nn.Module): # Concatenate a list of tensors along dimension def __init__(self, c1, c2): super(Concat_BIFPN, self).__init__() self.relu = nn.ReLU() self.w1 = nn.Parameter(torch.ones(2, dtype=torch.float32), requires_grad=True) self.w2 = nn.Parameter(torch.ones(3, dtype=torch.float32), requires_grad=True) self.epsilon = 0.0001 self.conv = nn.Conv2d(c1, c2, kernel_size=1, stride=1, padding=0) self.swish = MemoryEfficientSwish() def forward(self, x): outs = self._forward(x) return outs def _forward(self, x): if len(x) == 2: # w = self.relu(self.w1) w = self.w1 weight = w / (torch.sum(w, dim=0) + self.epsilon) # Connections for P6_0 and P7_0 to P6_1 respectively x = self.conv(self.swish(weight[0] * x[0] + weight[1] * x[1])) elif len(x) == 3: # w = self.relu(self.w2) w = self.w2 weight = w / (torch.sum(w, dim=0) + self.epsilon) x = self.conv(self.swish(weight[0] * x[0] + weight[1] * x[1] + weight[2] * x[2])) return x

第二步:yolo.py中注册Concat_BIFPNt模块

elif m is Concat_BIFPN: c2 = max([ch[x] for x in f])#2021.11.11更改配合bifpn使用

第三步:修改yaml文件,需要修改head(特征融合网络)。

 

第四步:将train.py中改为本文的yaml文件即可,开始训练。

 结    果:本人在多个数据集上做了大量实验,针对不同的数据集效果不同,同一个数据集的不同添加位置方法也是有差异,需要大家进行实验。有效果有提升的情况占大多数。

预告一下:下一篇内容分享增加小目标检测层。有兴趣的朋友可以关注一下我,有问题可以留言或者私聊我哦

PS:,不仅仅是可以添加进YOLOv5,也可以添加进任何其他的深度学习网络,不管是分类还是检测还是分割,主要是计算机视觉领域,都可能会有不同程度的提升效果。

最后,希望能互粉一下,做个朋友,一起学习交流。

相关文章

钱扣了,订单却是未支付,用户炸了——聊聊如何防止支付掉单

钱扣了,订单却是未支付,用户炸了——聊聊如何防止支付掉单...

Transformer:注意力机制(attention)和自注意力机制(self-attention)的学习总结

Transformer:注意力机制(attention)和自注意力机制(self-attention)的学习总结...

【云原生 • Kubernetes】配置管理 - Secret & ConfigMap

【云原生 • Kubernetes】配置管理 - Secret & ConfigMap...

[ 云原生之谜 ] 云原生背景 && 定义 && 相关技术详解?

[ 云原生之谜 ] 云原生背景 && 定义 && 相关技术详解?...

深度学习——VGG16模型详解

深度学习——VGG16模型详解...

云原生DevOps篇:使用Pipeline流水线将know-system项目自动化发版到Kubernetes集群

云原生DevOps篇:使用Pipeline流水线将know-system项目自动化发版到Kubernetes集群...