You Only Look One-level Feature

动机

此前一般认为,FPN的成功之处在于进行了多级特征的融合,这引发了一系列人工设计或者NAS搜索更加复杂融合方法的研究,如EfficientDet中的BiFPN。遗憾的是,这种观念忽视了FPN分治的功能,这就导致很少有研究研究这两个收益对FPN的成功贡献究竟如何,也一定程度上阻碍了目标检测领域新的进展。

FPN的再思考

这篇论文就是针对FPN在单阶段检测器中这两个收益的。作者在RetinaNet的基础上通过解耦多尺度特征融合和分治功能设计了实验。具体而言,将FPN视作一个多进多出(Multiple-in-Multiple-out,MiMo)编码器,它从骨干网络编码多尺度特征并且为解码器即检测head提供特征表示。作者对MiMo(多进多出)、单进多出(SiMo)、多进单出(MiSo)和单进单出(SiSo)编码器进行了对比实验,结果如下图。
image.png

这些实验结果表明两个事实:
第一,C5特征图上其实就包含了检测各种尺度目标的足够的上下文信息,这就导致SiMo编码器可以获得相当不错的效果;
第二,多尺度特征融合带来的收益要远远小于分治策略带来的收益,因此多尺度特征融合在FPN不是最关键的功能。

YOLOF

Dilated Encoder

(a)表示特征的接受域只能覆盖有限的尺度范围;
(b)表明放大后的尺度范围使特征能够覆盖大对象而忽略小对象;
©表示所有尺度都可以覆盖有多个接受域的特征。
image.png

使用空洞残差块进行多尺度特征融合,得到上图c。

Decoder

采用了retanet的主要设计,它由两个并行的任务专用头组成:分类头和回归头。我们只添加了两个小的修改。首先,我们遵循DETR中FFN的设计,并使两个头的卷积层数不同。回归头部有4个卷积,后面是批处理归一化层和ReLU层,而分类头部只有2个。第二,我们遵循Autoassign,并为回归头上的每个锚添加一个隐式对象性预测(没有直接监督)。所有预测的最终分类分数是通过将分类输出与相应的隐式对象性相乘生成的。

Uniform matching

为了充分发挥 FPN 功效,一般会从 scale 和 spatial 两个方面着手进行设计,scale 用于处理不同尺度大小的 gt bbox 应该属于哪些输出层负责,而 spatial 用于处理在某个输出特征图上哪些位置才是最合适的正样本点。不同的 bbox 正负样本分配策略对最终性能影响极大。
一般来说,由于自然场景中,大的gt box比小的gt box诱导出更多的正锚点,这导致了正锚点的不平衡问题。最终性能就会偏向大物体,导致整体性能较差。YOLOF 算法采用单尺度特征图输出,锚点的数量会大量的减少(比如从 100K 减少到 5K),导致了稀疏锚点,如果不进行重新设计,会加剧上述现象。为此作者提出了新的均匀匹配策略,核心思想就是不同大小物体都尽量有相同数目的正样本。
image.png

因此,作者设计了一个均衡匹配(Uniform Matching)策略,即对每个GT框而言,只采用最接近的k个anchor作为正anchor,这就能如上图一样保证每个GT框不论尺寸大小都有相同数目的正anchor。平衡的正样本确保所有的GT框平等地参与训练。在Max-IoU匹配的基础上,作者在均匀匹配中设置IoU阈值,忽略大IoU(>0.7)的负锚点和小IoU(<0.15)的正锚点。

思考

FPN是否真的能被替代了?

个人认为这篇文章的dilated encoder承担了FPN中特征融合的作用,但作者采用的SiSo结构相当于放弃了FPN的分治效应。

Dilated Encoder的特征融合真的对所有尺度有效吗?

从下图可以看到dilated encoder对小目标的贡献微乎其微,真正受益的是大目标检测。这说明了dilated encoder真正的作用是扩大感受野,加强大目标检测效果,同时这也意味着yolof对小目标检测的不友好。

image.png

Uniform Matching是通用插件吗?

从下图可以看到uniform matching效果十分明显。但要注意一个问题,这是在single out基础上进行的测试,将uniform matching直接用于FCOS等基于MiMo结构时,效果是未知的(作者没给出相关实验)。
image.png

### One-Stage目标检测算法最新研究进展综述 One-Stage目标检测算法因其高效性和简洁性而受到广泛关注。这类算法直接从输入图像中预测物体类别的概率分布和位置坐标,无需生成候选区域。 #### YOLO系列的发展 YOLO(You Only Look Once)是最早的一批one-stage检测器之一[^3]。最初的YOLO版本虽然实现了快速的端到端训练与推理过程,但在小目标识别及密集场景下的表现欠佳。随后推出的YOLOv2不仅提高了检测速度还增强了准确性;到了YOLOv3,则通过引入多尺度预测机制进一步提升了性能,并成为许多实际应用中的首选方案。此外,还有针对特定需求优化过的变体如Tiny-YOLO用于嵌入式平台上的轻量化部署[Tiny Fast YOLO]。 #### 特征增强技术的应用 为了改善one-stage模型对于复杂背景或遮挡情况下的鲁棒性,研究人员探索了各种特征增强手段。例如FSSD(Feature Fusion Single Shot MultiBox Detector),它通过对不同层次特征图进行融合来捕捉更多上下文信息,从而提高检测精度[^4]。这种策略允许低级细节特征与高级语义特征相结合,有助于解决因视角变化引起的目标形变等问题。 #### 新兴趋势与其他改进方向 近年来,随着硬件计算能力的增长和技术进步,一些新的设计理念被应用于one-stage框架之中: - **Anchor-Free设计**:摒弃传统的锚点设定方式,转而采用中心点偏移量表示法或其他无先验假设的方法来进行边界框编码解码操作; - **Transformer架构融入**:借鉴自然语言处理领域的成功经验,利用自注意力机制加强全局依赖关系建模,提升长距离交互能力和抗干扰特性; - **弱监督/半监督学习**:当标注成本过高时,可以借助少量高质量标签样本指导大规模未标记数据的学习过程,降低人工干预程度的同时保持良好的泛化水平。 总之,尽管已经取得显著成就,但围绕着如何平衡效率同效能之间的矛盾仍是当前one-stage目标检测领域内亟待突破的关键课题之一。 ```python import torch.nn as nn class FeatureFusionModule(nn.Module): """简单的特征融合模块示例""" def __init__(self, low_level_channels, high_level_channels): super().__init__() self.conv_low = nn.Conv2d(low_level_channels, 256, kernel_size=1) self.conv_high = nn.Conv2d(high_level_channels, 256, kernel_size=1) def forward(self, x_low, x_high): fused_feature = self.conv_low(x_low) + self.conv_high(x_high) return fused_feature ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值