ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Few-shot Object Detecion via Feature Reweighting论文解读

2021-12-29 21:02:09  阅读:197  来源: 互联网

标签:加权 via shot 模块 训练 Reweighting 样本 新颖 mathcal


Few-shot Object Detecion via Feature Reweighting

最近入坑小样本检测,所以会更新一些论文解读,调研一下

本文使用元学习的方法进行训练,基础框架为单阶段目标检测框架(作者提供的代码使用的是yolov2)

建议先了解小样本学习的形式化定义,这里不细讲,由于我最近要写中文论文,所以尽量避免使用英文,base类一律翻译为基础类,novel类一律翻译为新颖类

论文主要提出了两个模块:元学习器和特征重加权模块

  • 元学习器:利用基础类的训练数据获取能够用于新颖类的元特征。
  • 特征重加权模块:将新颖类的少量支持样本转为一种全局向量,在检测目标物体时用于指明元特征的重要性和关联性

该方法在多数数据集和多种设置下取得了很好的效果,同时良好的迁移性(从一个数据集迁移到另一个数据集)
主要贡献(此处为论文中翻译而来)

  • 我们大概是第一个研究小样本目标检测的,这个问题有很好的实际意义但是在小样本学习文献中比图像分类的研究更少
  • 我们设计了一个新颖的小样本目标检测模型,该模型可以学习概括性的元特征,还可以通过从少量支持集样本产生特定类的激活置信度来自动重加权用于新颖类检测的特征。
  • 我们通过实验证明了我们的模型大幅领先baseline方法,尤其是标签极度缺少的情况下。我们的模型调整到适用于新颖类明显更快(存疑,和谁比更快,感觉这句话加的有点多余

整体架构

在这里插入图片描述

论文方法框架如图所示,假设有 N 个新颖类需要检测,那么重加权模块需要输入N个类的支持集图片(每个类一张),然后将其转换为N个重加权向量,每个向量负责从对应类别中检测新颖类目标。整个训练过程分为两步:

  • 在基础类上训练
  • 在新颖类上微调

特征重加权

作者将整个模型分为三部分:

  • 元特征学习器 D \mathcal D D:采用YOLOv2的骨干网络(DarkNet-19)
  • 重加权模块 M \mathcal M M:轻量级的CNN,文中由于篇幅限制放在了附加材料中。
  • 检测预测模块 P \mathcal P P:YOLOv2的回归和分类部分
    该模型的形式化流程定义:
  • 设查询样本(图片)为 I I I
  • 将 I I I输入到 D \mathcal D D得到元特征输出 F ∈ R w × h × m F \in \mathbb R^{w\times h\times m} F∈Rw×h×m,即 F = D ( I ) F = \mathcal D(I) F=D(I),该元特征有 m m m张特征图(通道数为 m m m)
  • 标记 I i I_i Ii​为支持集图片, M i M_i Mi​为对应的图片上第i类的目标物的协助标注(有目标的位置为1,无目标的位置为0的单通道掩码图),其中 i i i代表类别,且 i ∈ [ 1 , ⋯   , N i \in [1, \cdots, N i∈[1,⋯,N
  • 重加权模块 M \mathcal M M的输入为 ( I i , M i ) (I_i, M_i) (Ii​,Mi​),将其编码为第 i i i类的特征表示 w i ∈ R m w_i \in \mathbb R^m wi​∈Rm,即 w i = M ( I i , M i ) w_i = \mathcal M(I_i, M_i) wi​=M(Ii​,Mi​)
  • 将元特征 F F F与第 i i i类的重加权向量融合得到第 i i i类的元特征,公式为:
    F i = F ⊗ w i , i = 1 , ⋯   , N F_i = F \otimes w_i, i = 1, \cdots, N Fi​=F⊗wi​,i=1,⋯,N
    其中 ⊗ \otimes ⊗表示通道维度相乘(注意 F F F的通道数和 w w w的维度相同,都是 m m m),这里作者是通过 1 × 1 1\times1 1×1的深度维度卷积实现的。
  • 将 N N N个 F i F_i Fi​输入到预测模块 P \mathcal P P中得到位置回归得分 o o o,位置 ( x , y , h , w ) (x, y, h, w) (x,y,h,w),以及分类得分 c c c,具体公式为:
    o i , x i , y i , h i , w i , c i = P ( F i ) , i = 1 , ⋯   , N {o_i, x_i, y_i, h_i, w_i, c_i} = \mathcal P(F_i), i = 1, \cdots, N oi​,xi​,yi​,hi​,wi​,ci​=P(Fi​),i=1,⋯,N
    其中 c i c_i ci​表示对应目标物属于第 i i i类的概率。

学习策略

论文介绍了具体的元学习学习策略(就是将一个大任务,拆成多个小任务,每个小任务抽取一部分支持集,一个查询样本训练,然后不断重复)。论文奖整个训练过程分为两个部分:

  • 第一部分使用基础类数据训练 D \mathcal D D, M \mathcal M M, P \mathcal P P;
  • 第二部分同时使用基础类和新颖类数据进行微调,此时,基础类和新颖类都只使用 k k k个样本训练,其余部分与第一阶段相同。
  • 在推理部分,论文将微调部分每个类的 k k k个样本的重加权向量求平均作为该类的重加权向量,所以,推理阶段只需要输入查询样本,并且重加权模块 M \mathcal M M可以删除。

检测损失函数

作者发现使用简单的二值交叉熵会导致多余的结果(例如,把火车检测成公交车或者汽车),这是因为一个区域应该只有属于 N N N个类中的一个目标物是真正的正样本

  • 这里感觉作者解释的有点不清楚,我的理解是,最终的分类得分c可能有几个类都很高,但是我们需要的只有一个,这时很可能出现错误

作者设计了softmax层解决这个问题。将分类得分 c c c进行进一步计算,抑制错误类的得分,得到第 i i i类的真正得分 c ^ i = e c i Σ j = 1 N e c j \widehat c_i = \frac{e^{c_i}}{\Sigma^N_{j=1}e^{c_j}} c i​=Σj=1N​ecj​eci​​。
训练过程分类得分的最终损失函数为:
L c = − Σ i = 1 N 1 ( ⋅ , i ) l o g ( c ^ i ) \mathcal L_c = -\Sigma^N_{i=1}{\mathbb 1(\cdot, i)log(\widehat c_i)} Lc​=−Σi=1N​1(⋅,i)log(c i​)
其中 1 ( ⋅ , i ) \mathbb 1(\cdot, i) 1(⋅,i)是指示函数,当前目标框真正属于当前类别时等于1,否则为0。
其余loss与YOLOv2大致相同,只是去掉了一些负样本的损失。

重加权模块输入

输入时将RGB图像加入一个维度mask维度,该维度在有目标物的部分为1,其余为0。如果一张图片有多个目标,只选择其中一个。

实验

数据集

  • VOC:VOC07的测试集用于测试,VOC12和VOC07的训练验证集用于训练,一共20个类,随机抽取5个类作为新颖类,生育15个类作为基础类,评估了3种不同的划分。实验取 k = 1 , 2 , 3 , 5 , 10 k = 1,2,3,5,10 k=1,2,3,5,10
  • MS-COCO:使用验证集的5000张图片作评估,训练集和验证集的剩余样本用于训练,一共80个类,选择与VOC重复的20个类作为新颖类,其余作为基础类。
  • 还实验了将COCO的60类作为基础类,将VOC的20类作为新颖类的实验,记为COCO to PASCAL
  • 测试集可能有基础类的目标物(不用检测的),还有一些图片不含目标新颖类的目标物,使得识别很难。

基准

  • YOLO-joint:YOLOv2框架;同时使用基础类和新颖类进行训练
  • YOLO-ft:YOLOv2框架;使用基础类训练,使用新颖类微调,同样迭代次数。
  • YOLO-ft-full:YOLOv2框架;使用基础类训练,新颖类微调,完全收敛。

实验效果

  • VOC
    请添加图片描述

  • COCO
    在这里插入图片描述

  • 学习速度
    在这里插入图片描述

  • 重加权置信度可视化
    在这里插入图片描述

  • 元学习比直接训练在基础类的效果
    在这里插入图片描述

消融实验

  • 哪一层的特征用于重加权
    在这里插入图片描述

  • 不同的损失函数
    在这里插入图片描述

  • 重加权模块的输入
    在这里插入图片描述

标签:加权,via,shot,模块,训练,Reweighting,样本,新颖,mathcal
来源: https://blog.csdn.net/weixin_44340538/article/details/122224110

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有