resnet50、FPN、Panet结构及代码

     起初faster-r-cnn,只采用最后一层特作为rpn以及head部分的特征图 ,后来不断改进,有了FPN, 再后来有了Panet,一般来说网络的层数越深它的语义信息越丰富。但是随着网络层数的加深,检测所需的位置信息就会越差,CNN分类网络只需要知道一张图像的种类即可所以很多时候网络越深效果越好,但是不是分类效果越好的网越适合检测。FPN如下图所示,它用了不同大小的特征图进行预测,图中:下方的特征图较大,对应的感受野较小可以用来检测小目标,上部分的特征图尺寸较小,但是感受野较大适合检测大目标。

                                                              

        Panet 是对FPN的改进,如下图红线所示,在fpn中顶层底层信息距离太远,不要看红线中间只有三四个框,这是一个示意,其中 有好多的卷积操作所以顶层底层距离很远,所以在右侧 开辟了一条新的路(绿线),只要几个个卷积层,顶层信息就能快速与底层信息汇合。特征提取对结果的影响特别大,融合不同尺度的信息十分必要,M2det在SSD的基础上增加了部分网络来优化特征提取,得到的效果就比SSD效果好得多    

   
   

代码是基于resnet50的特征提取部分实现的,上一张resnet50的网络结构

 

        具体实现如下,其中fpn参考mmdetection种fpn的结构,Panet部分自己写的,如有不对请告知。

        其中图像经过下采样再进行上采样的时候有可能大小不同,某一层图像下采样前的尺寸为单数。可以提前计算图像大小对输入图像直接padding,我用的是上采样时直接输入尺寸。

import torch
from torch im
  • 9
    点赞
  • 89
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
Yolov5的网络结构主要包括以下几个层: 1. 卷积层(Convolutional Layer):用于提取输入图像的特征,常见的卷积层有普通卷积层、深度可分离卷积层等。 2. 池化层(Pooling Layer):用于减小特征图的尺寸,常见的池化层有最大池化层和平均池化层等。 3. 残差块(Residual Block):用于解决深度神经网络中的梯度消失和梯度爆炸问题,常见的残差块有ResNet、ResNeXt等。 4. 特征金字塔网络(Feature Pyramid Network, FPN):用于处理不同尺度下的目标检测问题,常见的特征金字塔网络有FPNPANet等。 5. 非极大值抑制层(Non-Maximum Suppression, NMS):用于去除重叠的预测框,保留最优的预测结果。 6. 批归一化层(Batch Normalization, BN):用于加速模型的训练,提高模型的泛化能力。 7. 上采样层(Upsample Layer):用于将低分辨率的特征图上采样到高分辨率,常见的上采样层有双线性插值、反卷积等。 8. 激活函数层(Activation Layer):用于增加模型的非线性能力,常见的激活函数层有ReLU、LeakyReLU、sigmoid、softmax等。 9. 损失函数层(Loss Layer):用于计算模型预测结果和真实结果之间的误差,常见的损失函数层有BCELoss、SmoothL1Loss、GIoU-Loss等。 10. 骨干网络层(Backbone Network):用于提取图像的高级语义特征,常见的骨干网络有CSPDarknet53、ResNet、EfficientNet等。 以上是Yolov5中常见的网络结构层,它们的组合和顺序可以根据具体任务进行调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值