呃 这篇文章的目的在于补充一些知识以便于理解Neck部分的网络
特征提取网络 与 目标检测之间的关系
一个特征提取网络,假设有1000层,开始的特征图包含的细节信息就很多,而随着网络的加深,特征提取网络经过多次被卷积和池化操作,会逐渐抛弃原始图像中的细节信息,而更偏向于抽象的语义信息。
语义信息:
语义信息是指描述了物体的类别、形状、位置、空间关系等高层次抽象特征,比如说在图像中,猫和狗就是不同的语义信息。
对于一个特征提取网络来说,浅层特征图,会拥有以下的特点:
较小的感受野 -----> 较少的语义信息 ------> 难以获得更广泛的上下文信息
尺寸较大的特征图 ----> 更多的细节信息 -----> 更高的分辨率
那么同理,对于深层特征图
会具有较大的感受野 -----> 具有较强的语义抽象能力 ----->能够获得更广泛的上下文信息(获得较为全局的特征信息)
尺寸较小的特征图 -----> 丧失较多的细节信息 ----->难以获得最够的分辨率
那么对于大目标和小目标的检测问题
相对于大目标,小目标的定位和检测更加困难一些。
由于小目标的尺寸较小,因此小目标的需要更高的分辨率和更准确的定位信息,因此更加注重图像细节的表达能力,常常采用浅层特征图来判断(浅层特征更好地捕捉图像的细节信息,包括边缘、纹理等低层次特征),深层特征图注重更高层次的语义信息提取,导致在图像的细节上缺失。
对于大目标,大目标通常具有更为明显的高层次语义信息,比如物体的形状、结构和类别,而这些信息在深层特征图中更能够清洗地表达,此外,深层特征图具有更大的感受野,能够获得更为广泛的上下文信息,也就更能把握全局特征,因此深层特征图更适合大目标的定位和检测。
简而言之,在进行目标检测和定位时,对于大目标,深层特征和大的感受野通常更加适合;而对于小目标,则需要更注重浅层特征和更高的分辨率。
插一嘴,图像的分类需要深层特征图,
而对于目标检测,则得分大目标和小目标选择合适的特征图(当然后面都是浅层信息和深层信息融合了)。
Neck 特征融合
其实看论文更好,找英翻嘛
FPN详解_技术挖掘者的博客-CSDN博客
深度学习-路径聚合网络(PANet网络)_Tc.小浩的博客-CSDN博客
对于FPN结构(细节不概述了)其实可以总结为
将处理过的低层特征和处理过的高层特征进行累加,这样做的目的是因为低层特征可以提供更加准确的位置信息,而多次的降采样和上采样操作使得深层网络的细节信息存在误差,因此我们将其结合其起来使用,这样我们就构建了一个更深的特征金字塔,融合了多层特征信息。
看似好像我们确实深层特征图通过concat融合了低层特征图,然后似乎拥有了低层特征图的细节信息。但是如果构建很深的网络,其实即使是相对于低层的特征图也走过了很多层(这也是PANet的改进:
- 缩短信息路径和用低层级的准确定位信息增强特征金字塔,创建了自下而上的路径增强
)。因此当一个网络深度较大,其实FPN的特征融合仍然损失了巨大的细节特征信息。
那么PANet网络的缩短信息路径是什么意思。
我们知道P5、P4、P3融合的是主干网络里特征图(这种特征图可能已经经过了100层,只是特征图大小大而已,语义信息更多,细节信息已经较少了)。
那么我另辟一个只有降维行为通道不就行了(也就是我们的PAN)
官方的图其实需要配着文字说明才好阅读,PAN那一列其实与第一列的特征提取层数并不相同,PAN那一列只有降维而已,而N2也就是P2,N2~N5这一列,并不是主干网络的提取特征图,因此这样特征传递需要“穿越”的特征图数量大大减少,几层就到了,特征图保留的也更多的是细节信息了。
BiFPN
[Reading] EfficientDet: Scalable and Efficient Object Detection | nex3z's blog