导语
在平台建设上最核心的能力是算法能力。算法能力包括不断增强的单点算法能力和不断扩充的新算法能力。那么如何将算法能力输出到平台呢?答案是算法框架。算法框架是算法能力的载体,通过它能够将能力输出到平台。同时通过算法框架,我们可以进行进行算法能力的研究和扩充。所以算法框架设计和演进对于算法能力不足的探查、算法能力增强、算法能力扩充和算法能力输出都是至关重要的。
一 视觉AI框架应用在工业上的问题和我们的改进点
-
任务兼容:
-
问题分析:一般是处理单一类型问题(如检测框架、分类框架、分割框架),这样导致训练多个不同任务类型的算法(比如分类和检测任务)时,往往需要使用多个框架。
-
改进点:我们将工业上应用的主流任务兼容在一个框架中。
-
操作解耦:
-
问题分析:一般在模型训练时候数据处理、模型训练和效果的评估往往是耦合的,这样导致训练时需要按照耦合的流程进行训练,使用相同数据训练时需要不断重复处理数据,模型训练和效果评估不能同时进行,评估过程占用训练时间和资源导致无法高效执行。现有框架一般是基于固定的学术数据集进行训练,在训练到指定时间进行模型评估。
-
改进点:我们将主要功能切分为八个模块,可使用八个模块构建需要的流程,流程构建过程灵活。本框架模块之间是相互独立的,可以独立高效执行。
-
评估展示:
-
问题分析:现有的训练框架一般没有评估效果展示功能或只有简单的评估效果展示功能。由于现有训练框架一般基于固定的学术数据集进行训练,在评估时一般只做简单的性能指标展示。这样导致缺少训练的模型评估效果展示或效果展示过于简单,无法发现模型训练和数据的问题。
-
改进点:我们在模型评估模块提供了详细且经过实战经验验证科学的评估内容,并且可以在工业视觉智能平台中展示,用户可以发现模型训练和数据本身的问题,进一步调整数据或训练。
-
数据集分析:
-
问题分析:现有的训练框架一般没有数据集分析功能。这样导致无法在训练之前发现数据集的特点,只能使用默认配置或个人经验去训练模型。
-
改进点:我们设计的框架含有详细和科学的数据集分析功能,并且对齐数据集分析和模型训练模型推理过程的一致性,可以在训练之前分析数据集的特征,减少盲目训练的情况;
-
数据处理可视化调试:
-
问题分析:现有的训练框架一般没有数据处理和数据增强的可视化调试功能。这样导致无法查看数据处理或数据增强的效果,无法确认单步数据处理效果和多部数据处理的叠加效果。
-
改进点:我们在数据载入时采用可扩展设计,将可视化模块嵌入到流程中,可以任意节点查看数据效果。
-
部署对接:
-
问题分析:一般没有与模型部署对接的部分。现有的训练框架一般没有与模型部署对接的部分。这样导致自己开发与部署对接,过程工作量大,耗时耗力且容易出错;如果是不同任务类型的算法部署,则上述工作量需要翻倍。
-
改进点:我们开发了模型转换模块和对应的一套模型部署框架和系统,可以快速将模型转换到可以部署的状态,并可以使用模型部署框架和系统运行。在多个任务中,本框架与对应配套部署框架已完成结果对齐,用户无须进行相关开发;
-
扩展性:
-
问题分析:现有的训练框架模块的扩展性不强,模块增加操作时比较麻烦。这样导致开发者难度提升,团队合作开发难度大。
-
改进点:本框架大多数模块基于可扩展模块开发,开发者需要按照要求开发操作即可嵌入到模块中,降低开发难度且易于团队开发。
二 IVI算法框架详细介绍
1 数据准备模块
-
第一步读取数据配置文件。
-
第二步根据数据配置文件构建数据处理流程。
-
第三步进行多任务兼容的数据快速处理,根据数据处理流程将平台标注数据转换为多任务兼容的数据结构。多任务兼容的数据结构为多任务兼容的模型训练提供基础。
2 配置生成模块
3 数据载入模块
-
首先读取全局配置文件,获得数据载入相关的信息,其次根据全局配置文件构建数据载入处理流程,最后进行数据载入。数据载入的输入数据是数据准备模块产生的数据。数据载入读取全局配置文件中相关内容,如是否使用专家数据、图像预处理参数中的图像输入分辨率和数据增强的一些操作。
-
数据载入模块的第二步是构建数据载入流程。如图16所示是数据载入的一些操作算子集合。数据载入流程根据配置信息从操作算子中选择相应算子并串联形成操作流程。数据载入模块有两种状态(目前工业视觉智能云平台未开启此功能)。分别是运行状态和调试状态。运行状态与其他模块无交互。图16中的效果可视化在调试状态时使用,在数据载入流程的任何位置可以嵌入效果可视化模型,用来可视化当前图像状态、类别状态、实例状态。这样就可以查看数据处理或数据增强的效果,确认单步数据处理效果和多部数据处理的叠加效果。图17所示为实例扰动增强操作可视化的效果,可视化时将实例相关信息“画”在图像上,不同类别用不同颜色表示。每个框代表一个实例。经过实例扰动增强后,可以直观看到实例的增加和实例在图像中的情况。
4 数据集分析模块
-
第一个步骤是读取全局配置文件,获得数据集分析相关的信息。比如图像预处理参数中的图像输入分辨率和数据增强的一些操作。
-
第二步根据配置构建一个数据载入模块的相关流程。
-
第三步根据配置构建分析算子集合。
-
第四步串联数据载入和数据集分析算子集合进行处理(数据集分析算子集合如图19所示)。处理完成后所有结果可以在工业视觉智能平台的网页上展示。
5 模型训练模块
-
第一个步骤是读取全局配置文件,获得模型训练相关的信息:比如图像预处理参数中的图像输入分辨率和数据增强的一些操作;比如高级参数配置中的总训练迭代数、默认参数配置文件加载和模型保存间隔数;比如模型选择中的预训练模型。
-
第二步根据配置构建一个数据载入模块的相关流程。
-
第三步根据配置构建算法模型和模型训练流程。
-
第四步串联数据载入和模型训练流程并且运行。
6 模型推理模块
-
第一个步骤是读取全局配置文件,获得模型推理相关的信息:比如图像预处理参数中的图像输入分辨率等操作;比如模型训练按照间隔保存的模型。
-
第二步根据配置构建一个数据载入模块的相关流程。
-
第三步根据配置构建算法模型和模型推理流程。
-
第四步串联数据载入和模型推理流程并且运行。模型推理的结果会保存到本地或者OSS中。
7 模型评估模块
-
第一个步骤是读取全局配置文件,获得模型评估相关的信息,主要是需要评估的指标。
-
第二步根据配置构建一个数据载入模块的相关流程,这里载入数据时不载入图像,载入数据准备产生的GT结果(Ground Truth 结果、标注的真实结果)和模型推理产生的对应AI结果(算法预测的结果)。
-
第三步根据配置构建模型评估流程。
-
第四步串联数据载入和模型评估流程并且运行。
8 模型转换模块
-
第一步是读取全局配置文件,比如图像预处理参数中的图像输入分辨率等操作。
-
第二步根据全局配置文件中的信息,生成模型推理时使用的配置文件。
-
第三步将模型训练保存的原始模型转换成推理时可用的加密模型。
三 总结
工业视觉智能平台(公共云版地址 https://www.aliyun.com/product/indvi)