EfficientNet与EfficientDet的详解

一:几大主流backbone的效果比较

当前主流的几大backbone,从发布时间开始排序,有VGG,Resnet, Mobilenet,swimtransformer等,VGG作为最早期的网络架构提出,有里程碑式的价值,但因为结构思想的简单,总体的提取特征效果远不如后继者。Resnet的提出,解决了先前网络深度最大只能到30几层就会过拟合与梯度消失的问题,盘活了深度学习,其中的残差结构至今也被广泛使用,整体性能也是不错的。Mobilenet v1-v3无疑是轻量级backbone网络的首选,深度可分离卷积的提出大大减少了网络的param和multi-add,同时巧用SE模块中的通道注意力思想,在“偷工减料”的同时还增加了网络的强健性,可谓妙不可言。近几年屠杀CV界backbone的代表作swimtransformer,将NLP中的self-attention机制运用到了CV领域,将图像数据转化为Patch序列,不断学习patch与patch间的关系,最后提取出的特征效果也很乐观,但是最大的问题就是需要大量的训练数据。

今天,我想主要谈一谈2019年末谷歌大脑团队提出的Efficient Net,可以说是当下武林比较强悍的backbone!话不多说,上图:
在这里插入图片描述
效果有点碾压了前几年的backbone大佬,其中B0-B7表示各种参数的版本,这事也就谷歌爸爸能干出来了,没错,就是用的NAS搜索出来的!但我们做搬运工就行啦,还是感谢!!下面我们来仔细聊一聊这个牛×的backbone网络。

二:EfficientNet

EfficientNet的核心其实是如何利用复合系数统一缩放模型的所有维度(说人话就是每个方面都顾及到,每个维度缩放都加入),达到精度最高效率最高,符合系数包括w,d,r,其中,w表示卷积核大小,决定了感受野大小;d表示神经网络的深度;r表示分辨率大小。
首先总结一下我们常用的三种提升网络能力的方式:增大感受野w,增大网络深度d,增大分辨率大小r,三种方式示意图如下:
在这里插入图片描述
其中,(a)为基线网络,也可以理解为小网络;(b)为增大感受野的方式扩展网络;©为增大网络深度d的方式扩展网络;(d)为增大分辨率r的方式扩展网络;(e)为EfficientNet所采用的混合参数扩展方式;

深度(d):缩放深度越深,越有更好的非线性表达能力,可以学习更复杂的变换,从而可以拟合更加复杂的特征,更深的网络可以更简单地学习复杂特征。但网络加深会带来梯度不稳定、网络退化的问题,过深的网络会使浅层学习能力下降。深度到了一定程度,性能就不会提升了,还有可能会下降。尽管有一些技术,例如跨层连接、批量归一化等可以有效减缓训练问题,但是深层网络的精度回报减弱了,Figure 3(中)可见。

宽度(w):缩放网络宽度也是一种常用的手段,足够的宽度可以保证每一层都学到丰富的特征,比如不同方向,不同频率的纹理特征。宽度太窄,特征提取不充分,学习不到足够信息,模型性能受限。
但是,宽度贡献了网络大量计算量,太宽的网络会提取过多重复特征,加大模型计算负担。同时,非常宽而又很浅的网络在捕捉高层次特征时有困难,Figure 3(左)表明了当网络宽度随着w变大时,精度很快就饱和了。

Resolution(r):使用更高分辨率的输入图像,ConvNets可能可以捕捉到更细粒度的模式。从最早的 224x224,现在有些ConvNets为了获得更高的精度选择使用 229x229 或者 331x331。目前,GPipe使用 480x480 的分辨率获得了最先进的ImageNet精度,更好的精度比如 600x600 也被广泛使用在目标检测网络中。Figure 3(右)展示了缩放网络分辨率对精度的影响,同样可以看到在非常高的分辨率时网络精度回报会减弱。
在这里插入图片描述
我们经验上可以观察到不同缩放维度之间是不独立的,直观上来讲,对于分辨率更高的图像,我们应该增加网络深度,因为需要更大的感受野来帮助捕获更多像素点的类似特征,同时也应该增加网络宽度来获得更细粒度的特征。这些直觉指导着我们去协调平衡不同缩放维度而不是传统的单个缩放维度。

简言之,为了追去更好的精度和效率,在缩放时平衡网络所有维度至关重要google团队提出了一个新的复合缩放方法——使用一个复合系数ϕ统一缩放网络宽度、深度和分辨率:
在这里插入图片描述
这里的α,β,γ都是由一个很小范围的网络搜索得到的常量,直观上来讲ϕ是一个特定的系数,可以控制用于资源的使用量,α,β,γ决定了具体是如何分配资源的。值得注意的是,常规卷积op的计算量是和d,w2,r2成正比的,加倍深度会使得FLOPS加倍,但是加倍宽度和分辨率会使得FLOPS加4倍。由于卷积ops经常在CNN中占据了大部分计算量,使用等式(3)缩放ConvNet将会使得整体计算量近似增加(α⋅β2⋅γ2)ϕ倍。

最终,谷歌团队运用以上所述的搜索策略,得到了一个高效的网络,便称之为EfficientNet-B0,因为谷歌团队使用的搜索空间和MnasNet相似,所以得到的网络结构也很相似,不过因为FLOPS的预算更高所以EfficientNet-B0稍微大了点。
在这里插入图片描述
在这里插入图片描述
下面我来详细讲解一下EfficientNet的架构。

1.EfficientNet网络结构

它的主要构建块就是倒置瓶颈MBConv,其网络结构如下:

在这里插入图片描述
其中的MBConv1指的是MBCon层中没有expand网络宽度,MBConv6则指的是层中expand网络宽度到6倍。整个网络架构基本都是由MBConv层构建的,MBConv层的结构框图如下:在这里插入图片描述
总体而言,和MobileNet的bneck结构有异曲同工之妙,有关MobileNet的讲解可看本人另一篇文章

2.细节描述

1)Depthwise separative卷积

有关DS的详细讲解在本人另一篇文章中
在这里插入图片描述

2)SE模块

有关SE模块的详细讲解在本人另一篇文章中

在这里插入图片描述

3)Drop connect

Drop connect的思想和Dropout的思想相似,都可以有效的减少过拟合风险,只是Dropout是直接随机杀死神经元,而这里的Drop-connect只是随机去掉权重连接线,依旧保留所有的神经元。如图:
在这里插入图片描述

三:EfficientDet检测算法

既然讲完了EfficientNet,那么必然也得讲讲目标检测领域中,运用EfficientNet作为backbone的EfficientDet检测算法。一如既往一个字,牛!!,上图给大伙儿看一看它的威力:
在这里插入图片描述
总体而言,EfficientDet = EfficientNet + BiFPN,那么接下来讲一讲什么是BiFPN呢,想必FPN(图像金字塔)大家都耳熟能详,就是融合多尺度特征,将高层的语义信息和底层的空间信息巧妙混合,同时在YOLO_v4中还提出了变种PANet,如下图:
在这里插入图片描述
当然,特征融合的花活,也是琳琅满目,再看下图:
在这里插入图片描述
在这里插入图片描述

最后,展现一下我们的BiFPN:
在这里插入图片描述
当然,不同版本的BiFPN网络层数,需要根据精度和速度要求来选择,如下图:
在这里插入图片描述


  至此我对EfficientNet和EfficientDet进行了简单讲解,希望对大家有所帮助,有不懂的地方或者建议,欢迎大家在下方留言评论。

我是努力在CV泥潭中摸爬滚打的江南咸鱼,我们一起努力,不留遗憾!

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: EfficientDet和YOLOv5都是目标检测算法,但它们的设计思路和实现方式有所不同。 EfficientDet是一种基于EfficientNet网络结构的目标检测算法,它通过使用BiFPN(Bi-directional Feature Pyramid Network)和Swish激活函数等技术,提高了检测精度和速度的平衡。EfficientDet在COCO数据集上的表现优于其他目标检测算法,但它的训练时间和计算资源要求较高。 YOLOv5是一种基于YOLO系列的目标检测算法,它采用了一系列优化策略,如PANet、CSPNet、SPP等,提高了检测精度和速度的平衡。YOLOv5在COCO数据集上的表现也非常优秀,而且它的训练时间和计算资源要求相对较低。 综上所述,EfficientDet和YOLOv5都是优秀的目标检测算法,它们的优劣取决于具体应用场景和需求。如果需要更高的检测精度和有足够的计算资源,可以选择EfficientDet;如果需要更快的检测速度和较低的计算资源要求,可以选择YOLOv5。 ### 回答2: 近年来,物体检测技术不断发展,其中EfficientDet和YOLOv5是目前比较火热的物体检测方法。它们都能够在精度和速度上取得很好的平衡,具有比较高的应用价值。但是在实际应用中,EfficientDet和YOLOv5具体的优缺点是怎样的呢? EfficientDet是由谷歌公司提出的一种基于EfficientNet的目标检测器。它是一种高效的物体检测器,兼顾了准确率和速度。EfficientDet利用基于轻量级网络的多尺度特征融合和复合缩放策略,在尽可能少的计算量下获得了比其他方法更高的精度。在对比中,EfficientDet在目标检测精度上表现更优秀,而且具有更好的鲁棒性和准确性,适用于更广泛的应用场合,但是它需要一定的计算资源。 YOLOv5是一种流行的目标检测器,由Ultralytics公司提出。它的优势在于速度更快,可用于实时物体检测。通过权重移植等技术,YOLOv5对比YOLOv4在速度上有非常大的提升。同时,YOLOv5在目标检测精度上也获得了不俗的表现,较YOLOv4有所提高。因此,YOLOv5需要较少的计算资源,适用于实时检测、嵌入式开发和移动应用等领域。 综上,EfficientDet和YOLOv5的性能各有优劣,在不同的应用场合下有不同的优先考虑因素。EfficientDet更适合用于需要较高的检测精度和鲁棒性的应用场合,而YOLOv5更适合用于实时检测、移动应用等需要较高的速度和较小计算资源的应用场合。 ### 回答3: EfficientDet和YOLOv5都是目标检测领域的先进算法,它们之间有着各自的优势和劣势。 首先,EfficientDet是由Google提出的一种新的目标检测算法,它采用了双向特征金字塔网络,并使用了高效的NAS和强化学习技术,从而实现了更高的检测性能和更低的计算成本。EfficientDet的速度和准确度都比较优秀,其中在COCO数据集上,EfficientDet-D7的mAP为53.7%、FPS为27.4。 相比之下,YOLOv5则是由ultralytics公司研发的全新一代目标检测算法,其采用了基于SPP和PANET的多尺度特征融合,同时引入了Motivation Attention、CSP网络等新的技术,整体上可以实现更加高效的检测任务。在COCO数据集上,YOLOv5一系列的模型均取得了领先的性能,其中在YOLOv5x模型中,它的FPS可以高达109.6,而mAP也可以达到了52.8。 综合而言,两种算法都有着各自的优点和劣势。对于计算资源有限的任务来说,EfficientDet可能是更好的选择,而对于需要更高检测速度的任务,YOLOv5则是更加适合的算法。因此,我们需要根据不同的应用场景和任务需求来选择最合适的算法。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值