Backbone、Neck 和 Head

目标检测网络的两个重要部分:Backbone和Detection head。

一、Backbone
Backbone在整个目标检测网络当中指的是特征提取网络,其作用是提取图片当中的特征信息。通常,为了实现从图像中检测目标的位置和类别,我们会先从图像中提取出些必要的特征信息,比如HOG特征,然后利用这些特征去实现定位和分类。

常用的Backbone主要有

提取能力强:VGG、ResNet(ResNet18,50,100)、ResNeXt、DenseNet、SqueezeNet、Darknet(Darknet19,53)、DetNet、DetNASSpineNet、EfficientNet(EfficientNet-B0/B7)、CSPResNeXt50、CSPDarknet53等。
轻量:MobileNet、GhostNet、VoVNet、ShuffleNet、ThunderNet等。
 

从某种意义上来说,如何设计好的backbone,更好地从图像中提取信息,是至关重要的,特征提取不好,自然会影响到后续的定位检测。在目标检测任务之前,深度学习技术在图像分类领域中发挥了重大的作用,起到了非常好的效果,尤其是在ResNet系列的工作问世后,图像分类任务几乎达到了一个顶峰。虽然后续这个领域还在陆陆续续地出现些新工作,但大多数都只是换汤不换药,涨涨点罢了。

深度学习技术之所以能够这么出色地完成图像分类任务,基本上体现出了其在图像特征提取这一块的出色表现。另外,考虑到目标检测任务中,也需要对图像中的物体进行类别的识别,因此,一个很直接的想法就是将图像分类的网络直接拿来做目标检测的任务。但目标检测除了需要分类,更重要的一点是在于定位,而这一点恰恰是做分类任务的网络所不具备的。

随着迁移学习概念的兴起和普及,通过在检测任务中的数据集上对分类网络进行微调似乎是一个很不错的想法,所谓的“ImageNet pretrained model”概念就诞生了。简单地来说,就是目标检测和图像分类这两个任务具有一定的相似性,因为可以将分类的网络,比如VGG、ResNet等,用来做特征提取器。这一部分,我们就称其为backbone。

所谓的backbone,直接翻译过来就是“骨干网络”,很明显,这个单词的含义就表明了它并不是整体的网络。既然两个任务具有相似性,再加之迁移学习思想的普及,为什么还会要用这么个单词来描述它呢?事实上,尽管目标检测和图像分类两个任务具有相似性,但不完全是等价的,目标检测的目标是实现对物体的定位和分类,而图像分类仅仅是对图像中的物体进行分类,而不会去定位。于是,就在“定位”这一点上,完全将分类网络搬过来使用显然是不恰当的。

从优化目标上来看,分类任务只做分类,而目标检测还需要做定位,因此,任务驱动不同,目标不同,因此,完全有理由相信二者的优化空间有很大的差异。所以,仅仅是微调网络是无法完成目标检测任务的,当然,这一点,我们会在后续的实践来验证的。

二、Neck
Neck,中文翻译为颈部、脖子。Neck是目标检测框架中承上启下的关键环节。Neck在目标检测网络主要是把Backbone提取的特征进行融合,使得网络学习到的特征更具备多样性,提高检测网络的性能。更好地融合/提取Backbone所给出的feature,然后再交由后续的Head去检测,从而提高网络的性能。

它对Backbone提取到的重要特征进行再加工及合理利用,有利于下一步Head的具体任务学习,如分类、回归、keypoint、instance mask等常见的任务。Neck放在backbone和head之间的,是为了更好的利用backbone提取的特征。 像是最著名的FPN——《Feature Pyramid NetworksforObject Detection》 提出的FPN结构,将不同尺度的特征进行融合,充分利用Backbone提取的特征信息。

常用的Neck主要有

Additional blocks:SPP、ASPP、RFB、SAM

Path-aggregation blocks:FPN、PAN、NAS-FPN、Fully-connected FPN、BiFPN、ASFF、SFAM、NAS-FPN
 

三、Detection head
Head,中文翻译为头部。在目标检测网络中一般叫做检测头。Head是获取网络输出内容的网络,利用之前提取的特征,Head利用这些特征,做出预测。Head可以理解为是根据Backbone提取出来的特征,从这些特征中预测目标的位置和类别。目标检测除了识别出物体的类别,更重要的是还要对物体进行定位,主要作用是定位和分类

常用的Head主要有

Dense Prediction (one-stage):RPN、SSD、YOLO、RetinaNet(anchor based)、CornerNet、CenterNet、MatrixNet、FCOS(anchor free)

Sparse Prediction (two-stage):Faster R-CNN、R-FCN、Mask RCNN (anchor based)、RepPoints(anchor free)
 

随着技术的发展,除了backbone和head这两部分,更多的新奇的技术和模块被提了出来,最著名的,莫过于FPN了——《Feature Pyramid NetworksforObject Detection》提出的FPN结构,在不同的尺度(实际上就是不同大小的feature map)上去提取不同尺度的信息,并进行融合,充分利用好backbone提取的所有的特征信息,从而让网络能够更好地检测物体。有了FPN,backbone提取出的信息可以被利用的更加充分,使得detector能够很好地应对多尺度情况——图像中,目标的大小不一,大的、中等的、小的,都有,尤其是小物体,几乎成为了目标检测这一块的单独研究点。

三、Neck
除了FPN这种新颖的结构,还有诸如ASFF、RFB、SPP等好用的模块,都可以接在backbone后面,而这一部分,我们称之为“neck”,有些文章中直接把它翻译成“瓶颈”或“脖子”,neck这部分的作用就是更好地融合/提取backbone所给出的feature,从而提高网络的性能。

四、detector=backbone+neck+head


neck:提出一个好的结构或模块,更好适应feature

head:分类+定位

backbone:提取基础特征网络

补充backbone:尽管现在学术界已经知道了不用那些在ImageNet上预训练的模型作为backbone,而是自己搭建backbone网络或者使用分类网络,但不会加载预训练模型,也能够达到同样的效果,但是这样的代价就是需要花更多的实践来训练,如何对数据进行预处理也是要注意的,换句话说,给调参带来了更多的压力。关于这一点,感兴趣的读者可以阅读Kaming He的《Rethinking ImageNet Pre-training》。即便如此,大家还是会优先使用预训练模型,这么做,仅仅是减少我们的调参压力和训练时间所耗费的成本。
 

  • 10
    点赞
  • 75
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: YOLOv8是一种基于单阶段目标检测器的深度学习模型,使用了类似于YOLOv5的设计,并在其基础上进行了改进。下面从backboneneckhead三个方面来介绍YOLOv8。 1. Backbone YOLOv8使用了Darknet53网络作为backbone,这是一种经典的卷积神经网络,具有较强的特征提取能力。Darknet53对输入图像进行了多次下采样,从而在一定程度上保留了图像的空间信息。 2. Neck YOLOv8的neck部分使用了多尺度特征融合技术,主要包括PANet和FPN两种方法。PANet通过对特征图进行不同尺度的池化和上采样来获得多尺度特征图,然后使用特征金字塔结构将它们融合在一起。FPN则通过对不同层级的特征图进行融合,产生具有不同大小的感受野的特征图,从而提高模型对目标的检测能力。 3. Head YOLOv8的head部分使用了YOLOv5的设计,包括SPP、PAN和SAM三种模块。其中,SPP模块通过对特征图进行金字塔式的池化操作,获得不同尺度的特征,从而提高模型对目标尺度变化的适应性;PAN模块则通过将多个小尺寸的特征图拼接成一个大尺寸的特征图,增强了模型对目标的检测能力;SAM模块则使用了注意力机制,通过学习不同区域的重要性,进一步提高了模型的性能。 综上所述,YOLOv8在backboneneckhead三个方面都进行了优化,使得模型在目标检测任务上表现出了较好的性能和鲁棒性。 ### 回答2: Yolo8是一种目标检测算法,它是基于深度学习的实时物体检测方法。它的整体架构包括backboneneckhead三个部分。 首先是backbone,它是整个算法的基础,通常使用一些经典的卷积神经网络(CNN)架构,例如ResNet、Darknet等,用于提取输入图像的特征。通过多层卷积和池化操作,backbone可以从原始图像中提取出底层到高层的特征表示,这些特征表示具有不同的语义信息,能够更好地揭示图像中的目标。 接下来是neck部分,它的作用是进一步提升特征的表达能力。在Yolo8中,neck采用了特征金字塔网络(Feature Pyramid Network,FPN)的结构,通过引入多尺度的特征图,使得算法能够更好地处理不同大小的目标。通过上采样和下采样的操作,neck将从backbone输出的特征图连接在一起,形成多层次的特征金字塔,使得Yolo8可以在不同尺度上进行物体检测,并获得更精确的检测结果。 最后是head部分,它负责对生成的特征图进行分类和定位操作,以检测出图像中的目标物体。在Yolo8中,head采用了单个卷积层来实现目标的识别和定位。这个卷积层同时输出了目标的类别概率及其位置的坐标,通过对特征图进行逐个像素的分类和回归,可以得到每个目标在图像中的位置和类别。 综上所述,Yolo8采用了backboneneckhead三个部分,通过特征提取、特征金字塔和分类回归来实现实时的目标检测。这种算法结构使得Yolo8在速度和准确性上取得了较好的平衡,成为目标检测领域的重要算法之一。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值