当前位置:首页 > 工业用地 >计算机视觉在自动驾驶的应用(计算机视觉主成分分析)

计算机视觉在自动驾驶的应用(计算机视觉主成分分析)

1.什么是主动学习?

主动学习主动学习是机器学习(ML) 的一个研究领域,旨在通过智能查询管道中的下一段数据来减少构建新机器学习解决方案的成本和时间。在开发新的人工智能解决方案并处理图像、音频或文本等非结构化数据时,我们通常需要手动注释数据,然后才能使用它来训练模型。这种数据注释过程既耗时又昂贵。这通常是现代机器学习团队最大的瓶颈之一。

计算机视觉在自动驾驶的应用(计算机视觉主成分分析)

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

2. 主动学习方式不同

在进行主动学习时,我们通常会使用模型的预测。每当使用模型进行预测时,我们也会得到相关的预测概率。由于模型本质上不知道自己的局限性,因此我们尝试在研究中使用其他技术来克服这些局限性。在计算机视觉中,主动学习是一种主动学习方法,通过最小化标记数据量来提高机器学习模型的准确性和效率。以下是一些常见的主动学习方法:

不确定性采样:选择并标记那些使模型不确定的样本,例如模型输出的概率值最大的前几个样本,或者模型预测结果方差最大的前几个样本。

委员会查询:从多个训练好的模型中选择冲突的样本并进行标记,以期减少后续训练中的模型误差。

预期模型变化:通过计算当前模型下对某个样本进行标注的贡献,选择那些最有可能提高模型性能的样本进行标注。

多样性采样:选择与当前标记样本差异最大的样本进行标记,希望提高模型的泛化能力。

信息密度采样:选择当前模型下信息密度最高的样本进行标记,即选择对模型最有帮助的样本。

主动迁移学习:在标记数据集和目标任务的数据集之间进行迁移学习,以提高模型的泛化能力和训练效率。

这些方法可以单独使用,也可以组合使用,具体取决于具体问题和应用场景。

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

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

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

3. 在主动学习中利用嵌入

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

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

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

我们自己的基准测试以及与自动驾驶、卫星成像、机器人和视频分析等领域的数十家公司合作的经验表明,最强大的嵌入是使用自我监督学习训练的模型。最近的模型(例如CLIP 或SEER)使用自我监督学习。

4.我们可以利用主动学习来做什么?

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

选择多样化的数据——拥有多样化的数据(多样化的图像、多样化的对象)是最重要的因素

平衡数据集—— 确保数据在您的模式(天气、性别、一天中的时间)之间保持平衡

独立于模型架构——根据我们自己的实验,看起来大型ViT 模型的良好数据也对小型ResNet 有帮助

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

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

5. 主动学习算法的简单实现

以下是一个简单的主动学习伪代码:

#假设我们已经有一批标记数据集和一个未标记数据池labeled_dataset=.unlabeled_pool=.#在每次迭代中,我们会选择一些未标记数据点并请求标记whilelen(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)#如果模型的性能有满足停止标准,停止训练ifstopping_criterion(validation_accuracy):break

上述伪代码中的主要步骤包括:

从未标记的数据池中选择一些样本

请求这些样品的标签

将新标记的样本添加到已标记的数据集中

删除标记样本并更新未标记数据池

根据当前标记数据集和模型更新策略训练模型

评估验证集上的模型性能

如果模型的性能满足停止标准,则停止训练。

六、主动学习的应用场景

主动学习在计算机视觉领域具有广阔的应用前景。以下是一些可能的应用:

对象检测:在对象检测任务中,每个图像可能包含多个对象。主动学习可以帮助减少需要手动标记的对象数量,从而降低劳动力成本。

语义分割:语义分割的任务涉及将每个像素标记为特定对象或类别。主动学习可以帮助减少需要手动标记的像素数量,从而减少手动标记的工作量。

人脸识别:在人脸识别任务中,主动学习可以帮助识别哪些图像需要标记以及哪些特征可以提高识别准确率。

图像分类:在图像分类任务中,主动学习可以帮助选择需要注释的图像,以提高模型的准确性。

总之,主动学习在计算机视觉领域具有广阔的应用前景,有助于降低人力成本、提高模型精度、提高算法效率。随着技术进步和数据集不断扩大,主动学习将变得越来越重要。

审稿人:刘庆

最新资讯

推荐资讯