论文阅读《Meta R-CNN : Towards General Solver for Instance-level Low-shot Learning》

Meta Rcnn

本文的模型基于 Fsater/Mask Rcnn,提出了一种 PRN(Predictor-head Remodeling Network)模块。用元学习的方法对 RoI 上产生的特征图进行处理,再输入到后面的预测部分中完成预测。

RPN 模块接收包含 low-shot 物体的图像及其标注,是一个全卷积网络并与 Faster Rcnn 的特征提取模块共享权重,来产生不同类别的注意力向量(class attentive vectors)。得到的注意力向量与所有的 RoI 特征进行注意力计算,产生每个类的检测结果。

在小样本检测的任务上,传统的元学习模型往往只能识别只含单一物体的图片,不能分解复杂的信息。但是 Faster/Mask Rcnn 可以利用 RPN 检测图片中的不只一个物体,因为 RPN 产生的 RoI 只包含一个物体,就可以用来进行元学习。这也是本文的动机,将元学习与 Faster Rcnn 结合。

具体实现

网络结构

对于图像分类任务,一个元学习器 h(x_{i},D_{meta};\theta ),输入一张属于 D_{train} 的图片 x_{i} 和整个元数据集 D_{meta},这个元学习器应通过学习可以将 D_{train} 中的图片分类到 D_{meta} 的类别 C_{meta} 上。之后用 D_{novel} 取代 D_{meta},迁移其泛化能力到新数据集上,但目前为止的方法都效果不佳。对于目标检测任务,上述定义扩展为 h(\hat{z}_{i,j},D_{meta};\theta ),其中 \hat{z}_{i,j} 是 RPN 输出的特征图。

将 RPN 输出的特征图 \hat{z}_{i,j} 与 PRN 输出的注意力向量 v^{meta} 相结合,来检测新颖类别。

其中 θ 和 φ 分别为 Faster Rcnn 和 PRN 的参数(大部分都是重合的,因为共享了参数)。

PRN 模块 f(D_{meta};\phi ),整个元数据集都是其输入,元数据集包含 C_{meta} 个类,每类 K 个目标物体(数据是四维,RGB 和掩膜 mask)及标注。因此如果 C_{meta} 为 m,PRN 模块输入 m*k 个四维数据。为了减少计算负担,将输入减为224*224。在使用该模块时,首先将数据输入到与 Faster Rcnn 共享参数的 backbone 里(即图中 shared 连接的两部分),增设一个通道域的软注意力层计算来产生 object attentive vector。该软注意力层先使用空间池化操作将物体特征图与 RoI 对齐,之后对特征图进行 element-wise sigmoid 操作来得到 object attentive vector。再将这 m*k 个 object attentive vector 中同一类的向量使用平均池化得到 class attentive vectors。

将产生的 class attentive vectors 与 RPN 输出的特征图进行通道域点乘(Channel-wise product,见附录。但是这里好像指的还是 element-wise sigmoid ?)再喂到后面 Faster Rcnn 的检测模块里面,完成类别预测和位置回归。

损失函数

使用交叉熵损失函数来惩罚 object attentive vectors 对类别预测的偏差 L(\O)_{meta},见下表 Ablation(2),分别为 without 和 with。

类别和位置损失和 Faster Rcnn 中保持一致,其中 λ 表示是否了激活分割分支:

训练策略

分为两阶段元训练和元测试,在元训练阶段只考虑基类的数据来构建 D_{meta} 和 D_{train},如果图像中出现新颖类别的物体则忽略,且当训练图片改变时,C_{meta} 和 D_{meta} 也要跟着改变。将基类数据同时输入 D_{meta} 和 D_{train},使 PRN 和 Faster Rcnn 同时对同一类别的数据计算损失函数,学习表征。训练策略如下图:

元测试阶段则基类和新颖类中的物体都要考虑,即 C_{meta}=C_{base}\cup C_{novel} 。这是因为包含 unknown objects 的测试图像中的可能涵盖所有可能的类别。PRN 接收所有类别的 K-shot 目标,生成对应 class attentive vectors。用 object attentive vectors 来替代 class attentive vectors 来与 RPN 的特征图进行 Channel-wise product 计算,输入 Faster Rcnn 检测模块完成推理。

 

实验结果

对比了在 PASCAL VOC 和 MS COCO 这两个数据集上的四个 baseline:

  • FRCN+joint。使用基类和新颖类数据一起训练 Faster Rcnn。
  • FRCN+ft。第一阶段使用基类训练,第二阶段使用新颖类微调。且这两个阶段与本文模型的两个训练阶段迭代次数相同。
  • FRCN+ft-full。第一阶段使用基类训练,第二阶段使用新颖类微调。但第二阶段训练至完全收敛。
  • YOLO-Low-shot。采用 YOLOv2,也采用元学习的方法。只不过是在整张图像上,而是不像 Meta Rcnn 那样在 RoI 上使用元学习的策略。

一些消融实验:

PASCAL VOC

Table 3. 是 Table 1. 中 Setup 1 的各类别详细数据。FRCN+joint 在基类的检测中达到了 SOTA,但是在新颖类别上的精度太低。类别不均衡是导致这种现象的原因,并且新颖类别数据过少使得其在新颖类别上的泛化能力大打折扣。同时 Meta Rcnn 的 mAP 最高,表明 Meta R-CNN 没有牺牲整体性能来进行小样本学习。

MS COCO

COCO 数据集上的任务更具有挑战性,因为其包含更复杂的情况,如遮挡,模糊和小物体。

附录

  • Channel-wise product。网上查到的资料也不多,只能到时看代码再理解。

倒是查到了一些 Channel-wise Attention 的内容,论文《SCA-CNN: Spatial and Channel-wise Attention in Convolutional Networks for Image Captioning》里的图:

图中 channel wise attention 就会使得提取到物体特征的 feature map 的权重加大,这样最后output结果就会准确不少。

前面 channel wise attention 只会关注到图像的一个小部分,而 spatial attention 的作用为关键部分配更大的权重,让模型的注意力更集中于这部分内容。spatial attention 是以特征图的每个像素点为单位,对特征图的每个像素点都配一个权重值,因此这个权重值应该是一个矩阵,大小是图片的大小;channel wise attention 则是以特征图为单位,对每个 channel 都配一个权重值,因此这个权重值应该是一个向量。

简单点来说,channel wise attention是在回答“是什么”,而spatial attention是在回答“在哪儿”。

而之所以使用 multi-layers 的原因是底层网络提取到的更多是底层的细节,而高层网络才能提取到全局的语义信息,那么只有低层 kernel 提取到更多物体边缘特征,高层才能更好地抽象出帅哥来。如果只在最后一个卷积层做 attention,其特征图的感受野已经很大了(几乎覆盖整张图像),那么特征图之间的差异就比较小,不可避免地限制了 attention 的效果,所以对 multi-layer 的特征图做 attention 是非常有必要的。参考:深入理解注意力机制 - 知乎

  • 上文字体加粗带问号的地方需要从代码中寻找解释。
  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值