当前位置: 首页 > news >正文

LVC | 一种简单的小样本目标检测方法

欢迎关注我的公众号 [极智视界],获取我的更多笔记分享

  大家好,我是极智视界,本文解读一下 Label, Verify, Correct (LVC):一种简单的小样本目标检测方法
在这里插入图片描述

  本文的目标是小样本目标检测 (FSOD),即在给定少量训练实例的情况下,就将一个目标检测器扩展到一个新类别的检测上。作者引入了一种简单的伪标注方法,从训练集中提取高质量的伪标注,对于每一个新类别,大大增加了训练的数据量,减少了类别的不平衡,另外还会查找以前未标注的实例。用模型预测进行训练会产生次优的性能,作者提出了两种新的方法来提高伪标注过程的准确性:(1) 引入了一种验证技术来删除具有不正确类标签的候选检测;(2) 训练一个专门的模型来纠正质量差的 bounding box。在这两个新的步骤之后,获得了一大组高质量的伪标注,这些伪标注允许最终检测器进行端到端的训练。此外,还证明了该方法保持了基类的性能,以及 FSOD 中简单扩充的效果。当在 PASCAL VOC 和 MS-COCO 上进行 benchmarking 测试时,与现有方法相比,本文的方法达到了最好 或 第二好的性能。

  论文地址:https://arxiv.org/abs/2112.05749

  代码地址:https://github.com/prannaykaul/lvc.git

文章目录

    • 1. 简介
    • 2. 背景和监督崩溃
      • 2.1 问题定义
      • 2.2 训练策略
        • 2.2.1 RPNs 的通用性
        • 2.2.2 基于基类特征的可迁移性
      • 2.2.3 小结
    • 3. 方法
      • 3.1 候选来源
      • 3.2 标签验证
      • 3.3 Box 验证
    • 4. 实验
    • 5. 总结
    • 6. 参考

1. 简介

  目标检测是指在图像中是否包含特定类别的目标,若包含 则对其进行定位的任务。近年来,依赖于对一组预定义的目标类别的训练计算模型 以及 大量的人工标注标签的数据集 (例如 MS-COCO 和 PASCAL VOC),促使目标检测取得了巨大的成功。然而,这种训练范式对于模型具有一定的限制,限制模型只能在一个封闭的、小的类别集合上表现良好,而这也只是因为这些类别有大量的训练数据可用。

  与此相反,人类可以不断地扩展他们的词汇量,即使只是观察几个例子,也能够学会检测更加多的类别。这也是现代计算机视觉系统所需要的能力,而小样本目标检测就是在做这个事情。本文工作的目标是:给定一个现有的目标检测器,该检测器已经针对某些类别 (称为基类) 的大量数据进行了训练,咱们希望学习仅仅使用少数标注来检测新类别,例如每个类别 1-30 张图片,同时还能够保持原始基类上的检测性能。

  在本文中,作者仔细研究了 two-stage 检测器 Faster R-CNN,并指出了限制其在 FSOD 上性能的两个关键因素。(1) 基于基类的训练导致了一种 “监督崩溃” 的情况;该模型经过自然训练,可以检测来自新类别的实例,因为它们没有被标注为背景;(2) FSOD 问题涉及到需要从极不平衡的数据中进行学习,每个新的类别只有 K 个实例 (K <= 30) 可以用于训练,因此基类的训练样本数量远远大于新类的训练样本数量。一个模型只是进行了少量新实例的样本叠加,自然缺乏泛化能力。

  作者采用了一种简单的伪标注技术,如图1,并解决了限制性能的两个因素:作者展示了区域建议网络 (RPN) 可以被修改以成功地为新类别提出区域建议,并使用少量新数据训练的检测器在大型训练数据集的图像上标记这些区域,为每个类别产生一组候选检测。本文方法的新颖之处在于用于提高该候选集精度的两个步骤:(1) 首先建立一个新类别的分类器,使用自监督训练的网络中的特征来对候选检测进行优化 (如图1 中间);(2) 其次,训练了一个专门的 box 回归器,以提高验证候选 bounding box 的质量 (如图1 右边)。这两个步骤一起为新类别产生了大量的高精度伪标注,减弱了训练数据中的类别不平衡问题。这使得检测器可以使用新类别的伪标注和基类的原始 tround truth 标注进行端到端的训练,同时避免了检测器特征的 “监督崩溃” 的影响。
在这里插入图片描述

  总结起来,作者的贡献如下:(1) 仔细研究了现代 two-stage 目标检测器 如 Faster R-CNN 的小样本目标检测问题,并明确了 “监督崩溃” 问题;(2) 提出了一种新的伪标注验证和矫正过程,它显著地提高了伪标注的精度,包括类标签和 bounding box 坐标;(3) 分析了数据增强的几个关键因素,并进行了彻底的消融实验来验证它们的必要性;(4) 通过伪标签和积极的数据增强的结合,使用标准 Faster R-CNN,在具有挑战性的 MS-COCO benckmark 和 PASCAL VOC benchmark 上获得了最好的 或 具有可比性的性能。


2. 背景和监督崩溃

2.1 问题定义

  本文中,考虑了与 TFA 中相同的问题设置,具体来说,假设给定了一个图像数据集D 和 两个标注数据集。首先是 Ybase - 对一组基类 Cbase 进行了详尽的标注。然后是 Ynovel^k - 在一组新类别 Cnovel 上只有 K 个注释。需要注意的是,基类的标注是详尽无遗的,而对于新类,大多数实例都没有标注,在小样本任务中,只为图像数据集 D 提供了 K 个注释。

2.2 训练策略

  首先描述了一个 baseline two-stage 检测器来解决小样本目标检测问题,参考 TFA。一般来说,一个 Faster R-CNN 检测器可以描述为:
在这里插入图片描述

  其中,每个输入图像由一组操作依次处理:图像编码器 (ΦENC)、区域建议网络 (ΦRPN)、感兴趣区域特征模型 (ΦROI) 以及 RoI特征上的分类层 (ΦCLS),映射到一组 bounding box 和 类。注意这里的每个模块包含的卷积层 或 MLP层的数量与标准 Faster R-CNN 中的相同。

  训练小样本目标检测器涉及两个阶段的训练过程,如下:

Base Training 指仅使用基类注释的 Faster R-CNN 模型的标准训练 Ybase,在这个过程中,不进行其他的修改。

Novel Training 需要扩展基本检测器,使其能够额外的检测来自新类的实例。在最近的工作中,这通常是通过只在新类和基类数据上训练 (相对较少) 的层来完成的,检测器没有在新类数据上进行端到端的训练。例如,在 TFA 中,只在新类数据上训练尽可能少的参数。

  这样的两阶段训练策略自然会导致两个问题:(1) 在基类上训练的 RPN 是否具有泛化能力,即是否可以为新类别的实例提出建议区域?(2) 仅在基类上训练的特征 实际上的泛化能力如何,换句话说,RoI 特征在分类新类时是否具有判别性?作者的目标是在 MS-COCO 30-shot 目标检测 benchmark 上回答这两个问题。具体来说,遵循 TFA 中相同的数据划分:60个类别被视为基类,20个类别被视为新类。

2.2.1 RPNs 的通用性

  在标准的 two-stage 目标检测器中,由于分类和 bounding box 回归只作用于所提出的区域,因此 RPN 被认为是高性能检测的必要条件。这里,咱们的目标是基于对新类的召回率来评估 FSOD 的 RPN 的质量。具体来说,考虑了以下三个设置:(1) 首先,为了了解在 60 个基类上训练的 RPN 是否可以直接提出新的目标实例,评估了来自基本检测器的 RPN 的召回率;(2) 其次,在基类和新类数据上对 RPN 进行了微调 (由 2 个卷积层组成);(3) 第三,理想的 RPN,它继承自对所有类别的详尽数据进行训练的现成的 Faster R-CNN。

Discussion 表1给出了从基本检测器的RPN 和 从新类中召回实例的理想RPN 之间的巨大性能差距。然而,在少数几个实例 (K=30) 上,对 RPN 的具体参数进行精细微调,不仅平均召回率显著提高,最小类召回率也显著提高,在很大程度上弥补了与理想RPN之间的平均召回率差距。
在这里插入图片描述

2.2.2 基于基类特征的可迁移性

  这里的目标是测试在基类上训练的视觉特征的可迁移性,具体来说,在新的训练中,保持编码器固定,并在后续的新类训练中对模块的单个或组合进行精细微调。

Discussion 如表2所示,将 TFA 与微调更多层进行对比,这往往是有益的,但它仍然大大低于理想的 Faster R-CNN。为了消除由于数据标注不足而引起的影响,将 TFA 和 Oracle 测试进行对比,该测试使用所有类别的详尽数据微调最终的分类器。然而,该结果仍然在很大程度上低于理想的 Faster R-CNN,这表明特征编码器严重偏向基类,并且几乎不包含用于从新类中分类实例提取的判别信息。这可能是意料之中的,因为这些类别在基类训练过程中被视为背景。
在这里插入图片描述

  这些实验证明了 FSOD 检测器中存在的 “监督崩溃” 问题。注意到 “监督崩溃” 表现在两个方面:(1) 由于类混淆和 bounding box回归差 (检测精度差),会出现许多误报;(2) 尽管 RPN 有所改进 (检测召回率低),但仍有许多误报 或 漏检。

2.2.3 小结

  经过仔细评估,得出以下两个结论:(1) 更新 RPN 的所有参数对于提高新类的召回率是必要的;(2) 基于基类训练的特征对新类的识别能力不足,导致性能严重下降,因此在 RoI 特征模块中更新所有参数,以补充分类层。这两个选择构成了新的训练过程,产生了更加强大的 baseline 检测器。这可以充分缓解 “监督崩溃”,以便 baseline 检测器可以用作咱们的伪标注方法的起点。


3. 方法

  针对 “监督崩溃” 问题,采用了一种简单的伪标注方法来挖掘新类的实例,有效地扩展了它们的标注集。然而,从检测器中提取的伪标注 (经过新类训练) 是不可靠的,会带来大量的假阳性。这里作者提出了一种方法来提高这些候选伪标注的精度,通过自动过滤掉具有不正确类标签的候选,并为剩余的那些改进 bounding box 坐标。这样的方法产生了大量的新类的高精度伪标注数据集,允许最终的检测器在基类和新类数据上进行端到端的训练。

3.1 候选来源

  这里的目标是生成一组候选检测,它们可能是新类的有效伪标注。具体来说,来自新类训练的检测器用于对训练图像进行推理,以生成一组候选检测,每个检测器包含一个类标签和预测的 bounding box 坐标 (如图1 左边)。通过采用具有高置信度得分的新类检测 将这个集合的大小限制为 1000 个。正如之前评估所证明的,来自新类训练的检测器不能很好地检测来自新类的实例,从而在候选集中留下了大量不正确的预测,要么是错误的分类,要么是不精确的 bounding box 坐标。现在的问题变成了:咱们如何才能提高这个列表的精度?

3.2 标签验证

  从 Chum等人的关于查询扩展的工作中获得了灵感,它采用空间验证,在检索期间接受或拒绝新实例。这里的目标是验证每个候选检测的预测类别标签。具体来说,考虑用非常有限的少量标注来构建一个新类的分类器。仅使用少量标注构建分类器显然不是一件简单的任务,因为它通常需要高质量的特征表示。在这里,作者借鉴了最近发展起来的自监督模型,如 MoCo、SwAV、DINO,并利用这些模型产生的高质量特征构建了 kNN 分类器。在实践中,使用了 ViT 模型输出的 CLS token,并使用自监督 DINO 进行训练,其中 NN 的性能被证明是非常强的。

  为了执行标签验证,首先使用自监督模型为每个给定的新类 ground truth 计算特征,这些特征作为 kNN 分类器的训练数据。类似的,使用相同的自监督模型为候选检测集合中的每个位置计算特征。具体来说,为了计算给定标注/候选检测的特征,首先使用 bounding box 对相关图像进行裁剪,然后调整裁剪的大小 并将其作为输入传递给自监督模型。

  采用一个简单的验证策略:如果 kNN 分类器使用余弦相似度预测出的标签 与 检测器预测的类别标签相同,则接受/验证 给定的候选检测。通过这样的一个验证步骤,得到了一组对分类标签具有高精度的验证候选检测。

3.3 Box 验证

  除了验证分类标签之外,还考虑对验证集中所有剩余候选的 bounding box 进行细化。从 Cascade R-CNN 中汲取灵感,构建了一个单独的模型,其中包含三个与模型无关的回归器,它们逐渐生成更加高质量的 bounding boxes,每个模型只处理与 ground truth 相似的 IOU 的 boxes。具体来说,在新类的训练过程中,使用不同的 IoU 阈值将 RPN 分成三个部分,并通过相应的回归器传递 RoI 特征。例如,IoU > 0.3 boxes 的所有池化特征传递给第一个回归器,IoU > 0.5 boxes 的所有池化特征传递给第二个回归器,IoU > 0.7 boxes 的所有池化特征传递给第三个回归器。一旦训练好了,验证集的 bounding boxes 就可以通过连续的三个回归器输入它们的 RoI 特征来进行修正。咱们现在拥有大量的以前未标注的新实例,具有高精度的类标签和高质量的 bounding boxes。这个经过验证和校正的集合,随后被用作伪标注来重新在基类和新类实例上端到端地训练咱们的检测器。


4. 实验

  表3展示了 MS-COCO 30-shot 任务上新类的小样本目标检测的性能。
在这里插入图片描述

  表4展示了伪标注方法的消融实验结果数据。
在这里插入图片描述

  表5展示了在 MS-COCO benchmark 上各小样本目标检测方法的性能。
在这里插入图片描述

  表6展示了在 PASCAL VOC benchmark 上三个拆分结构中的小样本目标检测的性能。
在这里插入图片描述

  图2中,在伪标注过程的每个步骤之后展示了定性结果。
在这里插入图片描述

  图3中,使用更加严格的 IoU=0.75 在 K=30 的 MS-COCO benchmark 上显示了一些新类的 precision-recall 曲线。
在这里插入图片描述


5. 总结

  本文通过对伪标注的训练来解决小样本目标检测问题。提出了两种新的方法来提高伪标注过程的精度:(1) 使用给定的 K 个小样本标注构造分类器验证来自 baseline 检测器的类别标记;(2) 训练一个专门的 box 校正模型,极大地提高了伪标注 bounding box 坐标的精度。该方法通过精确的 bounding boxes 生成大量高精度的伪标注,消除了 FSOD 中类别不平衡的问题,这使得本文的检测器能够端到端地重新进行训练,减少识别误检/漏检问题。


6. 参考

  [1] Label, Verify, Correct: A Simple Few Shot Objection Detection Method.


  好了,以上解读了 一种简单的小样本目标检测方法 LVC。希望我的分享能对你的学习有一点帮助。


 【极智视界】

《LVC | 一种简单的小样本目标检测方法》


在这里插入图片描述

搜索关注我的微信公众号【极智视界】,获取我的更多经验分享,让我们用极致+极客的心态来迎接AI !

相关文章:

  • TypeScript 贪吃蛇游戏详细教程
  • 无需内嵌代码的全新GUI截图方案在TouchGFX,ThreadX GUIX,emWin,LVGL,AWTK全部测试通过,含多缓冲方式玩法
  • 【信息科学技术与创新】机器学习 深度学习 人工神经网络相关分析
  • YOLO v7详解
  • 简简单单的结构体
  • Spring Cloud Zookeeper 优雅下线优化
  • 《计算机视觉基础知识蓝皮书》第3篇 卷积神经网络
  • 【JavaScript】四个常用功能/案例:表格排序 | 替换链接 | 倒计时 | 双色球机选一注
  • 数据结构-复杂度(深入学习版+Java版)
  • 【opencv-c++】cv::addWeighted图像加权混合
  • C++开发坦克大战--补充(加入传送门)--附完整代码
  • 浅谈梯度下降算法(模拟退火实战)
  • 5种优化你的安卓5.0 Lollipop代码的方法
  • [平台运维、Hadoop]Spark Streaming 实时计算框架
  • 【云原生丨Kubernetes系列15】创建 ConfigMap 资源对象
  • 【从零开始安装kubernetes-1.7.3】2.flannel、docker以及Harbor的配置以及作用
  • Angular 2 DI - IoC DI - 1
  • C++类的相互关联
  • CentOS 7 防火墙操作
  • JavaScript类型识别
  • learning koa2.x
  • leetcode讲解--894. All Possible Full Binary Trees
  • Nginx 通过 Lua + Redis 实现动态封禁 IP
  • php中curl和soap方式请求服务超时问题
  • python学习笔记 - ThreadLocal
  • QQ浏览器x5内核的兼容性问题
  • Redis的resp协议
  • Spark RDD学习: aggregate函数
  • 三分钟教你同步 Visual Studio Code 设置
  • 算法-插入排序
  • 一些基于React、Vue、Node.js、MongoDB技术栈的实践项目
  • 移动端 h5开发相关内容总结(三)
  • 用quicker-worker.js轻松跑一个大数据遍历
  • 不要一棍子打翻所有黑盒模型,其实可以让它们发挥作用 ...
  • ​卜东波研究员:高观点下的少儿计算思维
  • # MySQL server 层和存储引擎层是怎么交互数据的?
  • #LLM入门|Prompt#2.3_对查询任务进行分类|意图分析_Classification
  • #基础#使用Jupyter进行Notebook的转换 .ipynb文件导出为.md文件
  • $.ajax()方法详解
  • (C语言)球球大作战
  • (ibm)Java 语言的 XPath API
  • (Python第六天)文件处理
  • (八十八)VFL语言初步 - 实现布局
  • (办公)springboot配置aop处理请求.
  • (附源码)springboot 基于HTML5的个人网页的网站设计与实现 毕业设计 031623
  • (附源码)基于ssm的模具配件账单管理系统 毕业设计 081848
  • (黑客游戏)HackTheGame1.21 过关攻略
  • (论文阅读23/100)Hierarchical Convolutional Features for Visual Tracking
  • (牛客腾讯思维编程题)编码编码分组打印下标(java 版本+ C版本)
  • (一)u-boot-nand.bin的下载
  • (原)Matlab的svmtrain和svmclassify
  • (正则)提取页面里的img标签
  • (转)母版页和相对路径
  • ... fatal error LINK1120:1个无法解析的外部命令 的解决办法
  • .NET Core MongoDB数据仓储和工作单元模式封装