1、Backbone(主干网络)
- 定义 : Backbone是目标检测模型的基础部分,通常是一个预训练的卷积神经网络(如ResNet、VGG、MobileNet等),负责从输入图像中提取多层特征图。这些特征图包含了不同尺度和抽象级别的信息,是后续步骤进行目标定位和识别的基础。
- 作用: 提供丰富的特征表示,是整个模型的基础。
2、Neck(颈部网络)
- 定义 : Neck 通常位于 Backbone 和检测头(Head)之间,用于进一步处理或增强特征图。它可以帮助模型更好地理解图像内容。Neck可以包含多种模块,如特征金字塔网络(FPN)、SPP(Spatial Pyramid Pooling)、ASPP(Atrous Spatial Pyramid Pooling)等,用于优化特征表示。
- 作用 : 增强特征的表达能力,提高检测性能。
- 2.1 FPN(特征金字塔网络)
- 定义: FPN是一种特殊的Neck结构,它通过自顶向下和自底向上的路径聚合不同尺度的特征图,创建一个丰富的多尺度特征金字塔。这样做的目的是让每个层级的特征都能同时具备高语义信息和精确的空间位置信息,从而提高小物体的检测能力。
- 作用: 处理多尺度目标,提高对小目标和大目标的检测能力。
- 2.1 FPN(特征金字塔网络)
3、RPN(Region Proposal Network)
- 定义 : RPN是两阶段目标检测器(如Faster R-CNN)的一部分,位于Neck之后或直接与某些Backbone层相连。它的作用是从Neck或Backbone产生的特征图中生成一系列可能包含对象的区域提议(Region Proposals),这些提议随后被送入Head进行分类和边框回归。
- 作用: 减少后续处理的搜索空间,提高检测效率。
4、Head(检测头)
- 定义 : Head位于Neck或特征处理模块之后,负责最终的分类和定位任务。它通常包括两个部分:一个用于分类,判断提议框内是否包含对象以及是哪种对象;另一个用于回归,精调提议框的位置使其更准确地包围目标。Head的设计会根据检测器是一阶段还是两阶段有所不同。
- 作用: 完成最终的分类和边界框预测。
5、Loss(损失函数)
- 定义 : Loss是衡量模型预测结果与真实标签之间差异的一个量化指标,用于指导模型在训练过程中的参数更新。在目标检测中,常用的损失函数组合包括分类损失(如交叉熵损失)和定位损失(如平滑L1损失),确保模型既能够正确分类也能精确定位目标。
- 作用: 指导模型学习,确保预测结果尽可能接近真实值。
在两阶段目标检测模型(如 Faster R-CNN)中,Backbone 提取特征,RPN 生成候选区域,然后这些区域通过 RoI Pooling 传递给 FPN(作为 Neck 的一种),FPN 增强特征后传递给 Head 进行分类和边界框回归。整个过程中,Loss 函数用来衡量预测结果与真实值之间的差异,并指导模型的训练。