工业视觉智能团队在交付了多个工业视觉智能质检项目后,发现了工业视觉智能的共性问题和解法,打造了工业视觉智能平台,通过平台的方式积累和提升工业视觉的通用能力。
在平台建设上最核心的能力是算法能力。算法能力包括不断增强的单点算法能力和不断扩充的新算法能力。那么如何将算法能力输出到平台呢?答案是算法框架。算法框架是算法能力的载体,通过它能够将能力输出到平台。同时通过算法框架,我们可以进行进行算法能力的研究和扩充。所以算法框架设计和演进对于算法能力不足的探查、算法能力增强、算法能力扩充和算法能力输出都是至关重要的。
在图像识别领域,分类、检测、分割是使用最广泛的算法。目前人脸、城市、医疗、工业、娱乐、安全等大量场景都需要图像识别算法。在不同的场景或同个场景出现变化时,算法需要训练或重新训练。
现有的训练框架的问题和我们的改进点:
IVI算法框架是一个模块解耦可扩展的深度学习视觉模型训练框架。该框架主要负责三个任务:分类、检测、分割。该框架主要分为八个模块:数据准备、配置生成、数据载入、数据集分析、模型训练、模型推理、模型评估和模型转换。数据准备模块、数据载入模块、数据集分析模块、模型评估模块是继承于可扩展模块的,模块增加操作时只需要根据扩展模块的要求编写操作即可。开发者开发难度下降,团队合作开发更顺畅。
图1:主要模块示意图
图2:主要任务示意图
图3:可扩展模块实现示意图
可扩展模块主要分为四个部分。流程配置文件描述模块使用的算子和算子执行的流程。算子执行流程分为初始化、构建和执行三种状态。算子执行流程在初始化时,会根据算子注册表获得已注册的算子集合。算子执行流程构建时,根据流程配置文件,寻找算子注册流程中已注册的算子,并根据流程配置文件的内容初始化算子,并根据流程配置文件组合算子执行的流程。在算子执行流程执行时,根据算子执行流程对输入数据进行操作。可扩展模型的扩展性主要体现在以下算子新增的扩展性和算子执行的扩展性两个方面。算子新增的扩展性在增加新的算子时,只需要按照固定规则将算子加入到算子集合中即可。算子执行的扩展性体现在算子执行是根据配置文件描述进行的,配置文件描述可以对算子执行顺序、次数和参数等多方面进行控制。
以【阿里云的智能工业·工业视觉智能平台】的一个训练任务为例,如图4所示。在平台上开启一个默认训练任务,任务可以分为以下四个步骤:数据选择、训练、评估和模型提取。其中数据选择部分会调用数据准备、配置生成、数据集分析的模块。训练部分会调用数据载入、模型训练、模型推理和模型评估的模块。评估部分会调用模型推理和模型评估模块。模型提取部分会调用模型转换模块。
1 数据准备模块
图4:平台训练流程示意图
图5:数据准备模块示意图
数据准备模块是继承于可扩展模块的。主要分为三个步骤。
图6:平台数据准备示意图
数据准备模块的数据配置文件由默认配置文件和平台交互信息融合获得。如图平台数据准备示意图所示,左侧添加数据集表示选择的数据集。右侧标签选择页面的勾选表示选择的类别。右侧标签选择页面的操作对应数据准备模块算子。当在平台上添加数据集时会跳转到下图所示页面,在此页面可以勾选需要加入训练的数据集。同时可以选择数据集扩充倍数。
图7:平台添加数据集示意图
图8:数据准备模块算子集合示意图
数据准备模块算子包括类别扩增、类别屏蔽、子图切割、异常数据清洗、数据集划分等算子。以类别扩增为例,如图6所示,在阿里云的智能工业·工业视觉智能的平台上,可以针对指定标签进行扩充且扩充倍数可选择(如图9所示)。
图9:平台类别扩增倍数选择示意图
图10:数据准备模块处理示意图
数据准备模块如图10所示,数据准备模块获得原始图像和原始标注数据,构建数据处理流程并进行处理后,形成处理后图像和多任务兼容格式训练数据。多任务兼容格式训练数据表示形成的训练数据能够同时被此框架中检测、分割、分类等多种训练任务使用。例如选择了异常处理操作,处理后图像和训练数据中不会包含原始图像中的异常图像。例如选择了子图切割操作,处理后的图像可能是原始图像对应的子图。如将处理后图像和多任务兼容格式训练数据传到OSS存储中,相同训练任务可以选择直接继承数据。不需要再次调用数据准备模块。解决了使用相同数据训练时需要不断重复处理数据的问题。
2 配置生成模块
图11:配置生成模块示意图
配置生成模块如图11所示,数据经过数据准备模块处理后会生成描述文件。配置生成模块接收默认配置、数据准备模块结果和平台配置信息后,形成全局配置。如图12所示,平台模型训练时会进入此页面。其中自定义训练参数配置属于平台配置信息。平台配置信息包括模型选择配置、训练高级参数配置和图像预处理参数配置。如图13所示,模型选择配置负责训练的加载的初始模型。如图14所示,训练高级参数配置负责训练学习率、训练迭代数等相关配置。如图14所示。图像预处理参数配置负责训练时图像的输入分辨率、图像增强等相关配置。全局配置是作为数据载入、数据集分析、模型训练、模型推理、模型评估和模型转换的配置文件。
图12:平台模型训练相关配置入口示意图
图13:平台模型训练模型选择配置示意图
图14:平台模型训练高级参数配置示意图
图14:平台模型训练图像预处理参数配置示意图
3 数据载入模块
图15:数据载入模块示意图
数据载入模块是继承于可扩展模块的。如图15所示,数据载入模块分为三个步骤。
图16:数据载入操作算子集合示意图
图17:数据载入操作算子可视化示意图
4 数据集分析模块
图18:数据集分析模块示意图
数据集分析模块是继承于可扩展模块的。如图18所示,数据集分析是集成数据载入模块的,分为四个步骤。
图19:数据集分析算子合集示意图
5 模型训练模块
图20:模型训练流程示意图
图21:平台模型训练展示示意图
如图20所示,模型训练是集成数据载入模块的,分为四个步骤。
如图21所示,模型训练会按照间隔数保存到本地或对应的OSS中,并且在平台中会展示候选模型和实际产生时间。同时模型训练的LOG文件也同步保存到本地或对应OSS中。模型训练的损失值(LOSS)可以通过通讯的方式传递到工业视觉智能平台的后端程序中,图中LOSS曲线就是将训练框架返回的损失值展示在前端。需要说明的是在此构建算法模型和模型训练流程是兼容多种任务的,并且数据准备模型的数据是兼容多种任务的。这样框架就可以进行多任务兼容的模型训练。同时,因为数据集分析模块和模型训练模块都是基于数据载入模块的,所以数据集分析功能不仅可以按照原图和标注进行分析,还能完全模拟训练的数据处理方式进行分析。这样就可以在训练之前发现数据集的特点或者提前查看数据处理和数据增强操作的结果,根据数据分析结果不断调整各种配置进行训练。而不是只使用默认配置或者个人经验去训练模型,避免了盲目训练。同时结合数据载入调试功能后,可以更深入地分析数据操作对数据集的影响,进一步提供算法优化方案。
6 模型推理模块
图22:模型推理流程示意图
如图22所示,模型推理是集成数据载入模块的,分为四个步骤。
7 模型评估模块
图23:模型评估流程示意图
模型评估模块是继承于可扩展模块的。如图23所示,模型评估是集成数据载入模块的,分为四个步骤。
模型推理的结果会保存到本地或者OSS中。模型训练模块、模型推理模块、模型评估模块独立存在,评估过程不会占用训练时间和资源,整体可以高效执行。
图24:模型评估整体评估部分示意图
模型评估在工业视觉智能平台上分为整体评估结果、详细评估结果和检测结果展示。
图24所示是模型整体评估结果,左侧展示了评估的图像和标注数量,右边展示了整体算法指标。图中是目标检测的评估结果,所以展示了不同IOU(交并比)下的mAP指标。
图25所示是模型评估的详细评估部分展示,左侧可以调节详细评估时不同类别的阈值,并且展示该类别的图像数量和标注数量。右侧是该类别在不同阈值下的召回率和精确度曲线。
如图26所示,根据详细评估中阈值设定,可以展示正确检测、漏检和误检三个部分,用来更加直观地查看模型在不同阈值下的效果和问题。点击正确检测、漏检、误检中的图像,平台会跳转到如图27的页面,页面展示了原图、GT的框和类别、AI算法预测的框和类别,这样可以单张地查看预测的结果和标注框的差距。工业视觉智能平台可以进行多模型评估功能。
如图28和图9所示,可以选择多个候选模型进行模型评估。可以看到本框架和平台结合的模型评估除了进行学术算法指标的展示之外,还展示了不同阈值下的各项指标。和不同阈值下正确检测、漏检和误检的情况。
图25:模型评估详细评估部分示意图
图26:模型评估检测结果部分示意图
图27:模型评估单张检测结果示意图
图28:平台多模型评估模型选择部分示意图
图29:平台多模型评估模型开始部分示意图
8 模型转换模块
图30:模型转换模块示意图
模型转换分为三个步骤。
相关文件保存在本地或上传到OSS。其中生成模型推理时的配置文件和加密模型都是和对应模型推理库对应配合设计的,能够直接使用。这样用户不需要开发与部署对接,减轻了工作量。并且本框架是兼容不同任务类型的算法的训练。模型和任务相关信息会被保存在配置文件中。
本文章主要介绍了工业视觉智能团队实战经验中设计和演化出来的IVI算法框架,并结合公共云平台功能做了更详细的介绍。而在工业视觉智能实战中,我们也会遇到一些工业视觉智能场景业务形成的图像域差异、图像分辨率、目标缺陷形态、图像背景干扰的算法上的挑战,在不断分析和实验后我们的算法也往更高精度、更高效和工业内更通用方向不断演化。同时因为工业视觉智能场景业务形成的模型更新需求频繁、算法定制化高、算法精度高、需求响应速度要求高等问题,我们在算法模型组合、算法方案设计、算法方案评估、行业产品化方面也有了自己的算法模型组合的产品和整套的方法论。
原文链接
本文为阿里云原创内容,未经允许不得转载。