PPN-SSD笔记

文章地址Pooling Pyramid Network for Object Detection

摘要

对SSD做了改进,一方面降低了模型的大小,同时保持了准确度。对于普通的SSD有两个优点:

  • 它避免了不同尺度上的score校准失误
  • 共享的predictor可以看见所有的scale上的feature map,只有一个predictor(MultiBoxLayer)。

这些改变不会降低SSD的准确度。

Intro

大部分的SSD都是输出好几个不同尺度上的feature map,每个都拥有独立的predictor。但是实际中,当数据的分布在尺度scale上是偏态的,比如全部集中在小的scale上,那么这个设计就有问题了。当一个数据集中的图片都是尺度很大的物体的时候,那些small scale feature map就会被浪费掉,因为他们很少看见非背景的东西。这种数据的偏态分布,同样会导致不同scale上的anchor预测出的conf score在类别上的误差,即使这些anchor看到的是同一个anchor。另一个问题就是不同scale不一定看到物体的全貌,同样容易出现误差

对原始SSD做的改进:

  • 所有feature map共享一个predictor。
  • 用maxpool代替base network之后的conv

Pooling Pyramid Network

在原始SSD中,每个box实际上用一部分ground truth(和这个box match的那个部分)去训练,不同的box实际上看到的正例和反例的个数是非常不同的,即使是对着同一个物体的box他们预测出的结果也是非常不同的。所以最终还需要nms来抑制。使用单一的predictor可以避免预测的conf score在对着同一个物体的不同scale的box中不稳定的情况。

Max Pooling Pyramid

文章的目标是构建多尺度的特征金字塔结构,使用一系列的最大池化。原始的SSD使用额外的卷积层,FPN使用额外的从上到下的path。使用最大池化的原因如下:

  • 池化保证了不同尺度的特征都在同一个嵌入空间(embedding space)中
  • 池化不需要额外的加法和乘法,降低了计算复杂度,适合对效率敏感的应用。

Architecture

使用base network提取过特征后再进行一次1x1卷积,之后就使用2x2 stride2的maxpool。文章中实验的backbone是MobileNet,输入的图片是300x300,产生了19×19, 10×10, 5×5, 3×3, 2×2, and 1×1的feature map。他们都输入到一个共享的1x1 512channel的卷积层中,然后再进行预测conf loc。SmoothL1Loss作为loc的loss,focal loss alpha=0.25 gamma=2 作为分类的loss。

PPN-SSD

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值