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 结合。
具体实现
网络结构
对于图像分类任务,一个元学习器 ,输入一张属于 的图片 和整个元数据集 ,这个元学习器应通过学习可以将 中的图片分类到 的类别 上。之后用 取代 ,迁移其泛化能力到新数据集上,但目前为止的方法都效果不佳。对于目标检测任务,上述定义扩展为 ,其中 是 RPN 输出的特征图。
将 RPN 输出的特征图 与 PRN 输出的注意力向量 相结合,来检测新颖类别。
其中 θ 和 φ 分别为 Faster Rcnn 和 PRN 的参数(大部分都是重合的,因为共享了参数)。
PRN 模块 ,整个元数据集都是其输入,元数据集包含 个类,每类 K 个目标物体(数据是四维,RGB 和掩膜 mask)及标注。因此如果 为 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 对类别预测的偏差 ,见下表 Ablation(2),分别为 without 和 with。
类别和位置损失和 Faster Rcnn 中保持一致,其中 λ 表示是否了激活分割分支:
训练策略
分为两阶段元训练和元测试,在元训练阶段只考虑基类的数据来构建 和 ,如果图像中出现新颖类别的物体则忽略,且当训练图片改变时, 和 也要跟着改变。将基类数据同时输入 和 ,使 PRN 和 Faster Rcnn 同时对同一类别的数据计算损失函数,学习表征。训练策略如下图:
元测试阶段则基类和新颖类中的物体都要考虑,即 。这是因为包含 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 是非常有必要的。参考:深入理解注意力机制 - 知乎
- 上文字体加粗带问号的地方需要从代码中寻找解释。