非监督分类工具介绍#

章节目标#

  • 了解什么场景下应该选用非监督分类工具

  • 了解非监督分类工具中配置器和算子的连接关系

  • 了解非监督分类工具中的配置器和算子

支持的使用场景#

应用场景#

  • 有无识别:用于判别某个目标的有无,仅使用完整目标图像进行训练,即可判别目标有无,例如监测图像中待检测目标是否丢失。

  • 宏观缺陷检测:用于对宏观缺陷进行检测,只使用OK图进行训练,对图片整体进行OK/NG判定,比如葡萄干分类、异常绞线检测等。

与有监督分类工具的区别#

  • 训练数据:有监督分类工具需要所有类别的图像参与训练,而非监督分类工具仅需要单个类别的图像即可。

  • 检测机理:有监督分类仅能识别已经参与训练的类别目标,而非监督分类工具可以识别所有与训练类别不同的图像

  • 分类能力:有监督分类具有多类别分类能力,非监督分类仅支持判定正常与异常两类

训练集数据要求#

  • 仅支持宏观目标/缺陷,即目标/缺陷占图像面积比例超过50%

  • 要求训练集中图像一致性较好,无明显差异(例如不支持多个型号混合)

非监督分类工具中配置器和算子的连接关系#

非监督分类工具中的配置器#

图像均值配置器(image_mean_conf)#

  • 描述:用于计算训练集中的视图的灰度均值,灰度均值会被用于训练及推理过程中对输入视图进行提前减均值操作。

  • 基本原理:统计训练集中所有视图各通道的灰度总和并除以训练集图像总数。

非监督分类工具训练器(trainer)#

  • 描述:基于AI算法的非监督分类工具训练器,用于生成非监督分类工具模型。

trt模型标定器(trt_calibrator)#

  • 描述:对模型进行int8量化时,为了保证量化后模型精度不会丢失过多,需要进行一个模型标定的过程,此标定过程可以调用trt模型标定器自动完成。

  • 基本原理:trt模型标定器基于输入的原始图像、视图和原始模型,会在内部计算网络各层在int8量化后的新的参数范围,并输出标定后的文件。

Warning

仅在需要进行int8模型转换前调用。

trt int8模型转换器(trt_int8_converter)#

  • 描述:为了提升模型推理的速度,可以将模型进行int8量化以减少推理时的处理数据量。在进行int8推理前需要将原始模型转换为int8模型。

  • 基本原理:int8模型转换器基于输入的原始模型和由trt模型标定器输出的标定文件,自动完成模型的转换并输出int8模型。

trt float模型转换器(trt_float_converter)#

  • 描述:为了提升模型推理的速度,可以将模型进行int8量化以减少推理时的处理数据量,但某些数据集和模型上,int8推理效果劣化严重,此时可以选择用FP16或FP32进行模型推理,可以在保证推理结果不劣化的情况下提升推理效率。

  • 基本原理:float模型转换器仅输入原始模型即可自动完成模型的转换并输出FP32(极速推理高精度)或FP16(极速推理)模型。

非监督分类工具中的算子#

标注器算子(label_oper)#

  • 描述:用于产生某张图像上的缺陷标注、掩模和不学习区域。标注器算子在当前非监督分类工具中是一个占位算子,实际无法自动运行,需要交给标注器开发者自己触发运行。注意在非监督分类中可以进行缺陷标注,但无法参与训练,仅用于统计和展示。

  • 如何产生标注:通过直接给label_oper算子设置输出对应的缺陷标注、不学习区域(VFLOW:Without-Training)来完成标注过程。

Warning

  • 缺陷标注需要根据所在视图的状态(已标注在训练集在中(train)、已标注在测试集中(test)、已标注未知集合(unknown))来进行相应的状态更新,否则会影响view_tagger的正常功能

视图标签算子(view_tagger)#

  • 描述:在visionflow中,视图有四种状态,已标注在训练集在中(train)、已标注在测试集中(test)、已标注未知集合(unknown)、未标注(unlabel)。当非监督分类工具的前序工具的推理结果发生改变时,view_tagger可以复用之前已有的标注用于生成新的视图的状态。

  • 基本原理:在标注器算子中,生成的标注均带有标签,以表示某个标注是在train、test、unknown状态,当前序工具推理结果发生改变并生成新的view时,会计算新的view和当前已有标注的IOU值,若某个view能找到CIOU大于指定阈值的标注,则将该标注的状态赋予该view。

推理算子(infer)#

  • 描述:推理算子通过使用推理参数中的阈值来将输入的视图区分为OK或者NG,并根据区分结果的不同返回不同形式的( visionflow::props::PolygonRegionList )。PolygonRegionList是一个区域的列表集合,里面可以包含多个PolygonRegion。如果一张视图被判定为OK,则返回空的PolygonRegionList。如果一张视图被判定为NG,则返回包含有一个PolygonRegion的PolygonRegionList。

trt模型推理算子(trt_infer)#

  • 描述:与infer算子功能相同,当需要推理trt模型时选择trt_infer算子。

推理结果比对算子(comparator)#

  • 描述:计算推理结果和对应标注的相似性,得到最终模型效果的评价指标:图像召回率、图像精确率

  • 基本原理:参考 模型评估