计算机视觉中的主动学习(Active Learning)介绍

发布时间 2023-03-31 12:10:17作者: CV技术指南(公众号)
前言 Active Learning主动学习是机器学习 (ML) 的一个研究领域,旨在通过以智能方式查询管道的下一个数据来降低构建新机器学习解决方案的成本和时间。在开发新的 AI 解决方案和处理图像、音频或文本等非结构化数据时,我们通常需要人工对数据进行注释,然后才能使用它们来训练我们的模型。这个数据注释过程非常耗时且昂贵。它通常是现代 ML 团队中最大的瓶颈之一。

本文转载自GiantPandaCV

作者 | Garfield

仅用于学术分享,若侵权请联系删除

欢迎关注公众号CV技术指南,专注于计算机视觉的技术总结、最新技术跟踪、经典论文解读、CV招聘信息。

CV各大方向专栏与各个部署框架最全教程整理

计算机视觉入门1v3辅导班

计算机视觉中的主动学习(Active Learning)

1. 什么是Active Learning?

通过主动学习,您可以创建一个反馈循环,您可以在注释、训练和选择之间进行迭代。使用良好的选择算法,您可以减少训练模型以达到所需精度所需的数据量。

2. 不同的Active learning方法

在进行主动学习时,我们通常使用模型的预测。每当利用模型进行预测时,我们还会获得相关的预测概率。由于模型天生就无法了解自身的局限性,因此我们尝试在研究中使用其他技巧来克服这些局限性。在计算机视觉中,Active Learning 是一种主动学习方法,它可以通过最小化标记数据的量来提高机器学习模型的准确性和效率。以下是一些常见的 Active Learning 方法:

  1. Uncertainty Sampling:选择那些让模型不确定的样本进行标记,如模型输出的概率值最大的前几个样本,或者模型预测结果的方差最大的前几个样本。
  2. Query-by-Committee:从多个训练好的模型中挑选出相互矛盾的样本进行标记,以期望在后续的训练中降低模型的误差。
  3. Expected Model Change:通过计算在当前模型下对标记某个样本的贡献,选择那些最有可能改善模型性能的样本进行标记。
  4. Diversity Sampling:选择那些与当前已经标记的样本差异最大的样本进行标记,以期望能够提高模型的泛化能力。
  5. Information Density Sampling:选择那些在当前模型下信息密度最大的样本进行标记,即选择对模型最有帮助的样本。
  6. Active Transfer Learning:在已经标记的数据集和目标任务的数据集之间进行迁移学习,以期望能够提高模型的泛化能力和训练效率。

这些方法可以单独或结合使用,具体选择哪种方法取决于具体的问题和应用场景。

举个例子,我们不仅可以考虑单个模型,还可以考虑一组模型(集成)。这为我们提供了有关实际模型不确定性的更多信息。如果模型组都同意预测,则不确定性很低。如果他们都不同意,那么不确定性就很高。但是拥有多个模型非常昂贵。像“Training Data Subset Search with Ensemble Active Learning, 2020”这样的论文使用了 4 到 8 种不同的集成方法模型。

绘图来自“使用集成主动学习训练数据子集搜索,2020”论文,展示了他们的不同方法与 ImageNet 上的随机基线相比如何。

我们可以通过使用 Monte Carlo dropout 来提高效率,我们在模型的最后几层之间添加了 dropout。这允许我们使用一个模型来创建多个预测(使用 Dropout),类似于使用模型集成。但是,这样做的缺点是我们需要更改模型架构并添加 dropout 层。

3. 在Active Learning中利用embedding

插图来自“目标检测的可扩展主动学习,2020”

最近,论文也开始使用embedding。通过embedding,我们可以了解不同样本的相似程度。在计算机视觉中,我们可以使用嵌入来检查相似的图像甚至相似的对象。然后我们可以在embedding空间中使用距离度量,例如欧几里德距离或余弦相似度,并将其与预测的不确定性结合起来。

然而,使用来自同一个模型的embedding和预测有一个缺点,即两者都依赖于模型学习到的相同特征。通常,嵌入是预测前一层或几层模型的输出。为了克服这个限制,我们开始使用来自其他模型的嵌入,而不是我们所说的“任务”模型。任务模型就是您想要使用主动学习改进的实际模型。

我们自己的基准和与自动驾驶、卫星想象、机器人技术和视频分析等领域的数十家公司合作的经验表明,使用使用自我监督学习训练的模型具有最强大的嵌入。最近的模型,如 CLIP 或 SEER 都在使用自监督学习。

4. 我们可以利用active learning做什么?

首先,请注意主动学习是一种工具,与您使用的大多数其他工具一样,您必须微调一些参数才能从中获得最大价值。经过广泛的研究并尝试从最近的主动学习研究中复制许多论文,我们观察到这些基本规则似乎适用于我们认为是“好的”训练数据:

  • 选择多样化的数据——拥有多样化的数据(多样化的图像、多样化的对象)是最重要的因素
  • 平衡数据集——确保数据在你的模式(天气、性别、一天中的时间)之间保持平衡
  • 与模型架构无关 — 根据我们自己的实验,看起来大型 ViT 模型的好数据对小型 ResNet 也有帮助

前两点表明,我们的目标应该是从所有模式中获取等量的多样化数据。第三点很高兴知道。这意味着,我们今天可以用一个模型选择训练数据,一年后训练一个全新的模型时,我们仍然可以重用相同的数据。请注意,这些只是观察。如果实施得当,主动学习可以显着提高模型的准确性。

我们评估了结合 AL、多样性和平衡选择在检测鲑鱼片问题任务中的性能。目标是提高鲑鱼“血肿”的模型准确性,因为这是最关键的类别。

5. Active Learning Algorithms的简单Implement

  • 以下是一个简单的Active Learning伪代码:
    # 假设我们已经有了一批标记好的数据集合和一个未标记的数据池
    labeled_dataset = ...
    unlabeled_pool = ...

    # 在每一轮迭代中,我们都会选择一些未标记的数据点并请求标记
    while len(unlabeled_pool) > 0:
    # 从未标记的数据池中选择一些样本
    selected_samples = select_samples(unlabeled_pool)

    # 请求这些样本的标签
    labeled_samples = query_labels(selected_samples)

    # 将新标记的样本添加到已标记的数据集中
    labeled_dataset = labeled_dataset + labeled_samples

    # 更新未标记的数据池,移除已经被标记的样本
    unlabeled_pool = remove_labeled_samples(unlabeled_pool, labeled_samples)

    # 训练模型,根据当前的已标记数据集和模型更新策略
    model = train_model(labeled_dataset)

    # 在验证集上评估模型表现
    validation_accuracy = evaluate_model(model, validation_dataset)

    # 如果模型的表现已经满足了停止准则,则停止训练
    if stopping_criterion(validation_accuracy):
    break

    以上伪代码中的主要步骤包括:
    • 从未标记的数据池中选择一些样本
    • 请求这些样本的标签
    • 将新标记的样本添加到已标记的数据集中
    • 移除已经被标记的样本,更新未标记的数据池
    • 根据当前的已标记数据集和模型更新策略训练模型
    • 在验证集上评估模型表现
    • 如果模型的表现已经满足了停止准则,则停止训练。

6. Active Learning的应用场景

Active Learning在计算机视觉中具有广泛的应用前景。以下是一些可能的应用:

  1. 目标检测:在目标检测任务中,每个图像都可能包含多个对象。Active Learning可以帮助减少需要手动标注的对象数量,从而降低人力成本。
  2. 语义分割:语义分割任务涉及将每个像素标记为特定的对象或类别。Active Learning可以帮助减少需要手动标注的像素数量,从而减少人工标注的工作量。
  3. 人脸识别:在人脸识别任务中,Active Learning可以帮助识别出哪些人的图像需要被标记,以及哪些特征可以提高识别准确性。
  4. 图像分类:在图像分类任务中,Active Learning可以帮助选择需要标注的图像,以便提高模型的准确性。

总之,Active Learning在计算机视觉中的应用前景非常广泛,可以帮助降低人力成本、提高模型准确性和提高算法的效率。随着技术的进步和数据集的不断扩大,Active Learning将变得越来越重要。

7. 参考


欢迎关注公众号CV技术指南,专注于计算机视觉的技术总结、最新技术跟踪、经典论文解读、CV招聘信息。

计算机视觉入门1v3辅导班

【技术文档】《从零搭建pytorch模型教程》122页PDF下载

QQ交流群:470899183。群内有大佬负责解答大家的日常学习、科研、代码问题。

其它文章

AI最全资料汇总 | 基础入门、技术前沿、工业应用、部署框架、实战教程学习

改变几行代码,PyTorch炼丹速度狂飙、模型优化时间大减

AAAI 2023 | 轻量级语义分割新范式: Head-Free 的线性 Transformer 结构

TSCD:弱监督语义分割新方法,中科院自动化所和北邮等联合提出

CVPR 2023 | 基于Token对比的弱监督语义分割新方案!

比MobileOne还秀,Apple将重参数与ViT相结合提出FastViT

CVPR 2023 | One-to-Few:没有NMS检测也可以很强很快

ICLR 2023 | Specformer: Spectral GNNs Meet Transformers

重新审视Dropout

RestoreDet:低分辨率图像中目标检测

AAAI 2023 | 打破NAS瓶颈,AIO-P跨任务网络性能预测新框架

CLIP:语言-图像表示之间的桥梁

目标检测Trick | SEA方法轻松抹平One-Stage与Two-Stage目标检测之间的差距

少样本学习综述:技术、算法和模型

CVPR 2023 | 标注500类,检测7000类!清华大学等提出通用目标检测算法UniDetector

CVPR 2023|基于多层多尺度重建任务的MIM改进算法

CVPR 2023 | 超越MAE!谷歌提出MAGE:图像分类和生成达到SOTA!

称霸Kaggle的十大深度学习技巧

CVPR 2023 | 用于半监督目标检测的知识蒸馏方法

目标跟踪方向开源数据集资源汇总

CVPR2023 | 书生模型霸榜COCO目标检测,研究团队解读公开

Vision Transformer的重参化也来啦 | RepAdpater让ViT起飞

高效压缩99%参数量!轻量型图像增强方案CLUT-Net开源

一文了解 CVPR 2023 的Workshop 都要做什么

CVPR'23 最新 70 篇论文分方向整理|包含目标检测、图像处理、人脸、医学影像、半监督学习等方向

目标检测无痛涨点新方法 | DRKD蒸馏让ResNet18拥有ResNet50的精度

PyTorch 2.0正式版来了!

CVPR2023最新Backbone | FasterNet远超ShuffleNet、MobileNet、MobileViT等模型

CVPR2023 | 集成预训练金字塔结构的Transformer模型

AAAI 2023 | 一种通用的粗-细视觉Transformer加速方案

大核分解与注意力机制的巧妙结合,图像超分多尺度注意网络MAN已开源!

计算机视觉各个方向交流群与知识星球

CV小知识讨论与分析(7) 寻找论文创新点的新方式

CV小知识分析与讨论(6)论文创新的一点误区

计算机视觉入门1v3辅导班

计算机视觉交流群

聊聊计算机视觉入门