【Active Learning - 07】面向图像分类任务的主动学习系统(实践篇 - 展示)

主动学习系列博文:

【Active Learning - 00】主动学习重要资源总结、分享(提供源码的论文、一些AL相关的研究者):https://blog.csdn.net/Houchaoqun_XMU/article/details/85245714
【Active Learning - 01】深入学习“主动学习”:如何显著地减少标注代价:https://blog.csdn.net/Houchaoqun_XMU/article/details/80146710
【Active Learning - 02】Fine-tuning Convolutional Neural Networks for Biomedical Image Analysis: Actively and Incrementally:https://blog.csdn.net/Houchaoqun_XMU/article/details/78874834
【Active Learning - 03】Adaptive Active Learning for Image Classification:https://blog.csdn.net/Houchaoqun_XMU/article/details/89553144
【Active Learning - 04】Generative Adversarial Active Learning:https://blog.csdn.net/Houchaoqun_XMU/article/details/89631986
【Active Learning - 05】Adversarial Sampling for Active Learning:https://blog.csdn.net/Houchaoqun_XMU/article/details/89736607
【Active Learning - 06】面向图像分类任务的主动学习系统(理论篇):https://blog.csdn.net/Houchaoqun_XMU/article/details/89717028
【Active Learning - 07】面向图像分类任务的主动学习系统(实践篇 - 展示):https://blog.csdn.net/Houchaoqun_XMU/article/details/89955561
【Active Learning - 08】主动学习(Active Learning)资料汇总与分享:https://blog.csdn.net/Houchaoqun_XMU/article/details/96210160
【Active Learning - 09】主动学习策略研究及其在图像分类中的应用:研究背景与研究意义:https://blog.csdn.net/Houchaoqun_XMU/article/details/100177750


本文目的:

本文主要围绕主动学习方法的实际应用场景,首先,简要介绍了主动学习方法在实际应用中可能遇到的问题。然后,针对这些问题,我们设计并实现了一个面向图像分类任务的主动学习系统,并围绕部分核心功能模块展开介绍。最后,通过模拟实际应用场景对系统的有效性和稳定性进行验证。

雏形

  • 详见我的2019年04月份总结(提供了一个演示小视频):https://mp.weixin.qq.com/s/syzW3jtd5K3ipPhQp9SKZg

导言

近几年,随着主动学习方法不断地改进,工业界对此产生了越来越多的相关需求。主动学习方法在每次迭代过程中,需要完成如下基本步骤:首先,通过策略筛选出一批样本给专家标注;然后,将已标注的样本加入训练样本集;最后,对模型进行训练。但是,在上述的迭代过程中,往往同时需要多种不同角色的互相配合。例如,当主动学习方法应用到医疗图像处理领域时,不仅需要多名具有较强领域技能的医生负责标注样本,还需要算法工程师完成如下工作: 1)将已标注样本导入模型; 2)时刻关注模型的性能,并告知标注者是否继续标注样本; 3)将主动学习方法筛选的样本交给标注者。上述过程将同时消耗大量的人力成本,使得主动学习方法难以高效地应用到实际应用场景中。据调查,大多数主动学习相关研究仍使用模拟实验的方式展开(数据集都是已标注的样本,如 MNIST 数据集),而主动学习系统相关的研究和应用仍较少。目前,仅有少数关于开发主动学习策略库的相关研究[99,100,101,102]。 Yang 等[100]使用 Python 语言将一些基于未标注样本池的主动学习策略集成到 libact 库。 Ying[101]提出的 ALiPy 库集成了 20 多种主流的主动学习方法。然而,上述提及的函数库虽然能够便于技术人员进一步深入研发,但在应用到实际生产时未能直接面向非技术人员。

综上所述,我们设计并实现了一个面向图像分类任务的主动学习系统(下文简称为主动学习系统),解决如下问题: 1)为标注专家和主动学习方法提供一座桥梁,使得专家直接在系统进行操作,就能够发挥主动学习方法的效率; 2)将算法工 程师从上述提及的繁琐工作中释放出来,从而拥有更多的时间完善相关的算法研发;3)通过系统不断积累实际应用数据,并基于数据分析为用户提出有价值的建议。

主动学习系统简介

本文的主动学习系统主要面向图像分类任务,包括如下几个核心目标。 1)系统的可用性和稳定性:主动学习方法筛选出待标注样本,专家标注样本并将已标注样本上传至后台,系统根据相关指令对模型进行训练并实时展示模型性能; 2)性能的基本要求:在适用的业务需求中,主动学习系统能够显著地减少标注成本; 3)具有一定的可扩展性:除了与图像分类任务相关的模型/算法和标注功能之外,在未来的工作中能够快速地扩展到其他领域中,从而能够胜任更多的实际需求。本节将围绕上述的核心目标,对系统的设计和开发框架的选择进行简要的介绍。

主动学习系统的设计

首先,为了保证系统的可用性和稳定性,我们对主动学习系统进行多次模型实验。如图5.1为主动学习系统的设计框图,我们分别对每个核心部分的可用性和稳定性进行了验证。其中,初始化模块(编号 0)表示用户根据实际需求配置相关的基础信息,主要包括: 1)上传未标注样本池以及类标信息等; 2)选择合适的目标分类模型和策略; 3)设置模型的预期性能以及程序的结束条件。第 1 个和第 3 个模块分别表示“筛选样本”和“训练模型”,主动学习系统根据预设的参数在后台执行相关的程序,并将结果实时反馈在界面。标注专家只需根据界面显示的结果进行下一步操作即可。当系统后台执行完第 1 个模块的相关程序,并将待标注样本展示到界面后,专家开始对待标注样本进行标注,并将已标注的样本上传到指定的目录下(如图5.1的第 2 个模块)。至此,主动学习系统执行了一次完整的迭代。紧接着,用户根据界面反馈的信息命令系统继续下一次迭代或者终止程序(编号 4)。

然后,为了保证主动学习系统在性能上的基本要求,我们引入了大量与图像分类任务相关的主动学习策略(详见本文的2.3.2节)。在未来的工作中,我们将通过由主动学习系统积累而来的大量实际应用数据进行分析,并根据用户配置的基础信息给出相应的建议。例如,根据未标注样本池的规模提供合适的策略。

最后,为了便于未来的扩展工作,我们将主动学习系统的各个核心组件设计成独立的模块。如图5.1展示了主动学习模块(绿色框图部分)与标注样本模块(橙色框图部分)之间的交互。我们通过不断地完善和丰富主动学习模块和标注样本模块的功能,从而实现系统的扩展。例如,在未来的工作中,需要将主动学习系统扩展到目标检测领域。我们只需要分别扩展如下两个模块: 1)目标检测相关的模型/算法以及相关的主动学习策略; 2)目标检测的标注功能(也可以直接使用线下标注功能,将于下文介绍)。至此,升级后的主动学习系统便具有胜任目标检测任务的能力。
【Active Learning - 07】面向图像分类任务的主动学习系统(实践篇 - 展示)_第1张图片
综上所述,我们将通过不断完善上图展示的各个模块,使得主动学习系统能够满足上述总结的核心目标。

主动学习系统的实际应用演示

基于前文介绍的主动学习系统设计框图和开发工具/框架,我们完成了主动学习系统的程序开发工作。当用户使用主动学习系统完成相关的需求时,需要完成如下基本步骤: 1)成功登录系统进入如图5.2展示的主页; 2)根据实际需求创建主动学习任务,并上传相应的未标注样本池和验证样本集; 3)激活主动学习任务; 4)根据主动学习策略筛选样本; 5)训练目标模型。本节将结合实际应用场景,重点围绕如下三个部分展开介绍:创建主动学习任务、专家标注样本、训练目标模型。
【Active Learning - 07】面向图像分类任务的主动学习系统(实践篇 - 展示)_第2张图片

创建主动学习任务

如图5.2所示的主页提供了创建主动学习任务的接口,主要由“基础信息配置”和“上传样本”等两个模块组成。其中,基础信息配置包括: 1)填写数据集名称及其对应的类别集合:例如,数据集名称为 MNIST 及其对应的类别集合为“0,1, 2, 3, 4, 5, 6, 7, 8, 9”; 2)选择分类器模型并设置目标准确率;3)选择主动学习策略并设置每次筛选样本数量:例如,选择 entropy 作为不确定性策略,并且每次筛选 20 个样本作为待标注样本集。

上传样本模块主要包括: 1)通过数据采集技术获取大量的未标注样本并进行数据清理后,上传到未标注样本池中; 2)随机选择部份样本进行标注,将此作为验证样本集并上传到系统中。至此,用户完成了主动学习任务的创建。紧接着,在对应的任务列表中点击“激活”进入样本筛选环节和训练模型环节。值得一提的是,主动学习系统会根据用户上传的未标注样本池进行分析,并给出部分基础配置的建议值。例如,用户上传的图像(未标注样本池)复杂度较低时,首先,系统将建议使用网络结构较简单的模型;然后,再根据已确定的分类器给出对应的策略建议。最后,再给出每次筛选样本个数的建议值。在未来的工作中,我们还将通过大数据分析给出更加精确的建议。

专家标注

当用户激活了主动学习任务后,进入如图5.3所示的界面。此时,主动学习系统会先进行如下判断: 1)如果用户使用目标领域的样本对模型进行初始化,系统将随机策略筛选出一批待标注样本。 2)反之,主动学习系统将直接使用迁移学习方法进行初始化,再根据当前模型和策略筛选出第一批待标注样本。如图5.3的正下方位置展示了当前迭代筛选的待标注样本。专家标注样本是主动学习系统最重要的环节之一,从第 2 次迭代起,待标注样本都是根据主动学习策略进行筛选。目前,我们实现了两种标注样本的渠道,包括在线标注样本和线下标注样本。

线下标注样本

如图5.4所示展示了由主动学习筛选的待标注样本。如果专家选择了线下标注样本,首先,通过点击“线下标注样本”按钮,将经过预分类的待标注样本集下载到本地。然后,使用本地工具完成样本的标注工作。最后,通过“上传已标注样本”的按钮,将已标注的样本及其对应的类标上传到系统。至此,专家已完成了本次迭代的标注工作,系统根据专家提供的路径和类标将已标注的样本移至指定的目录下。
【Active Learning - 07】面向图像分类任务的主动学习系统(实践篇 - 展示)_第3张图片

在线标注样本

对于图像分类任务,我们将在线标注功能设计成单选题的形式,如图5.4展示了在线标注样本的界面。首先,专家进入在线标注界面查看待标注的样本,此时每个样本的类标已经根据预分类进行初始化。然后,对每个样本对应的类标进行调整。最后,点击对应的提交按钮即可完成当前样本的标注。此外,考虑到实际应用场景需要并行的标注环境,主动学习系统会根据标注专家的个数,将所有待标注样本按照一定的比例分配给每个标注专家。
【Active Learning - 07】面向图像分类任务的主动学习系统(实践篇 - 展示)_第4张图片

训练目标模型

当专家完成样本的标注工作后,进入如图5.5所示的界面。其中,图5.5左侧展示了系统后台实时反馈的信息,图5.5右侧提供了“筛选样本”和“训练模型”等两项功能。用户点击“开始训练”按钮调用系统后台训练目标模型的程序,并观察模型的实时性能。这样设计的主要原因在于,用户可以根据当前分类器的性能进一步决定是否继续提供标注样本,从而增强系统与用户的交互性。模型一旦满足预设的条件,意味着完成了当前被激活的主动学习任务。此时,用户可以进入如图5.6所示的实验分析模块,查看主动学习任务相关的图表数据。
【Active Learning - 07】面向图像分类任务的主动学习系统(实践篇 - 展示)_第5张图片

【Active Learning - 07】面向图像分类任务的主动学习系统(实践篇 - 展示)_第6张图片

此外,为了让用户能够深入了解主动学习系统的模型和算法,如图5.7展示了主动学习系统的算法模块。首先,用户选择不同的模型应用到不同的数据集中。然后,通过可视化的实验分析报告了解模型在不同类型数据集的效果。最后,选择合适的模型应用到相关的实际需求中。之后,我们将不断丰富不同的模型和数据集。
【Active Learning - 07】面向图像分类任务的主动学习系统(实践篇 - 展示)_第7张图片

总结

在本文中,我们充分考虑到主动学习方法的实际应用场景,设计并实现了一个面向图像分类任务的主动学习系统。首先,我们围绕系统的可用性和稳定性、性能的基本要求以及系统的可扩展性等三个核心目标对主动学习系统进行设计。然后,通过合适的开发工具和框架进行程序开发。最后,我们通过结合实际应用场景,并分别围绕“配置基础信息”、“样本标注功能”和“训练目标模型”等核心模块展开介绍。此外,主动学习系统具有重要的实际应用价值,我们将在未来的工作中,不断进行完善和升级。

参考文献

  • O. Reyes, E. Pérez, M. Del Carmen Rodríguez-Hernández, H. M. Fardoun, S. Ventura. Jclal: A java framework for active learning[J]. Machine Learning, 2016, 17(1):3271-3275.
  • Y.-Y. Yang, S.-C. Lee, Y.-A. Chung, T.-E. Wu, S.-A. Chen, H.-T. Lin. libact: Pool-based active learning in python[J]. arXiv preprint arXiv:1710.00379, 2017.
  • Y. Tang, G. Li, S. Huang. Alipy: Active learning in python[J]. Computer Science, 2019.
  • F. P. S. Luus, N. Khan, I. Akhalwaya. Active learning with tensorboard projector[J].
    Computer Science, 2019.

你可能感兴趣的:(【机器学习】,【深度学习】,【python】)