跳到主要内容

AI 驱动文档

您想了解什么?

分割:为每个像素分配标签

分割器查看裁剪后的区域并回答更丰富的问题:不仅是这里有什么,还有在哪里以及有多少。划痕究竟在哪里?污渍有多大?托盘里有多少颗药丸?它以分类器的速度为代价,换取逐像素的掩码,即测量、计数或定位缺陷所需的空间细节。

其设置基于与分类器相同的层次结构:Type 拥有 Class,Type 以 ROI 形式标记到图像上

把它想象成一套数字油画套件。Inspection Type 是套件(调色板加形状轮廓)。Class 是你可选的颜料颜色。ROI 是你为每次捕获绘制的画布,而每个绘制的像素最终都会被分配到恰好一个 class,包括隐式的 background

OV80i 程序可以混合使用分割器和分类器

OV80i 是产品线中唯一支持多模型程序的相机。在一次检测中,将分割器(用于掩码、计数和测量)与分类器(用于对已知类别给出判定)配对。请参见 Understanding Classifier 了解另一半内容。

三个概念

在你训练 AI 模型之前,相机需要知道在哪里查看、可能的结果有哪些,以及如何评估每个裁剪区域。这三个问题对应三个概念,它们以非常特定的方式嵌套。

01 / Concept

Inspection Type

A named bucket. Holds one shared dataset, one shared list of classes, and one trained AI model.

02 / Concept

Classes

The vocabulary of possible outcomes for this inspection. Defined once on the type.

03 / Concept

Region of Interest (ROI)

A rectangle drawn on the image. Many ROIs can share one type and, therefore, one dataset and one model.

思维模型:一个 type 拥有 class 和 ROI

Inspection Type 是一个容器。它包含一个共享的数据集、一个共享的 class 列表和一个训练好的 AI 模型。然后你把这个容器在图像的多个位置上标记出来,这些标记就是 ROI。同一 type 的每个 ROI 都继承相同的 class,并由相同的模型进行评估。

INSPECTION TYPEone bucket1 dataset · 1 model · N ROIsCLASSES · DEFINED ONCEclass_aclass_bclass_c+ addAdd or edit classes here andevery ROI on this type updates.Single source of truth.ROIs · PLACED ON IMAGEroi_1roi_2roi_3roi_4roi_5+ add ROIEach ROI is a tight crop at a specificlocation, evaluated by the same model.All share one dataset.classes applied to ROIs
  • Inspection Type 是容器。
  • Class 是结果词汇表。
  • ROI 是图像上的位置。

对于分割器:为每个像素分配标签——绘制,而非选择

分割器对每个 ROI 裁剪区域做的事情比选择一个 class 更丰富:它为每个像素打标签。你不是选择下拉答案,而是在训练图像上将缺陷涂抹出来,模型则学习每个 class 的形状。每个 ROI 的输出是一个掩码,即可以测量、定位和计数的逐像素映射。

实例:表面缺陷检测

想象一个有两道划痕、一处凹痕和一处污渍的拉丝金属表面。你会这样配置:

Surface_Top · segmentbrush · scratch
  • Type: Surface Quality(1 个 ROI,分割器)
  • Class: background(隐式)、scratchdentstain
  • ROI: Surface_Top(覆盖可检测区域)

你不是为整个区域选择一个标签,而是用每个 class 对应的颜色绘制每个缺陷。模型输出是一个掩码,按 class 分解:

Class覆盖率
background93.5%
scratch3.1%
dent1.4%
stain2.0%

从这个示例中需要内化三点:

  1. 绘制,而不是选择。 你不是为整个 ROI 选择一个标签,而是逐像素绘制每个缺陷。模型学习每个 class 的形状,而不仅仅是它是否存在。
  2. ROI 是像素领地。 分割器在 ROI 内部查看并为每个像素打标签。表面积越大 = 需要评估的像素越多。仍然要遵循 512 × 512 规则,如果区域很大,请使用网格分块。
  3. Class 是缺陷类型。 不是通过/失败,每个 class 是你想要定位的一个独立事物:scratchdentstain。再加一个隐式的 background

深入了解:类别的行为方式

每个类别都是调色板上的一种颜色

在分割器中,类别不是你从下拉列表中选择的标签,而是你涂抹的颜料。选择一个类别后,你的画笔就会以该类别的颜色绘制像素。ROI 中的每个像素最终都会被分配到唯一一个类别,包括默认的 background

CLASS PALETTEbackgroundscratchdentstain+ add classpick a class →brush loads its colorPAINT IN THE ROIeverything unpainted = background
  1. 在类型上定义一次。 添加一个类别(例如 burn_mark)并为其指定颜色。此类型的每个 ROI 现在都可以在其调色板上使用该颜色。
  2. 背景是免费的。 你不需要涂绘"这里没有任何问题"的像素。任何未涂绘的像素都会自动归为 background
  3. 每个像素只属于一个类别。dentscratch 上涂绘会替换标签,类别不能在单个像素上叠加。
  4. 从简单开始。 两到三个缺陷类别的表现通常优于六个含糊的类别。合并相似的缺陷,直到模型难以区分它们,然后再拆分。

深入了解:ROI 的行为方式

ROI 的黄金法则

区域越小越好。 让每个 ROI 刚好足以包含目标特征。较小的 ROI 意味着更少的训练数据、更快的迭代速度和更准确的 AI 判定,特征会主导整个裁剪区域而不会淹没在背景中,并且不会被缩小尺寸。

即使对于分割器,仍然要保持小而具体

你可能会想在整个表面上绘制一个巨大的 ROI,但黄金法则依然适用。分割器的 ROI 会像分类器一样被缩小以适应模型输入,一个仅 20 像素宽的缺陷在你将 2000 像素宽的 ROI 缩小到 512 时就会消失。

GOOD · TIGHT ROIfull resolution preservedHUGE SURFACE · GRID TILEeach tile stays full-resPER-ROI OUTPUTMASK · Surface_Topbackground93.5%scratch3.1%dent1.4%stain2.0%largest regionscratch · 280 × 38 pxdefect count3
  1. 每个 ROI 保持在 512 × 512 像素以内。 超过这个尺寸,细节会因缩小而永久丢失。小缺陷会变得不可见。
  2. 紧凑的裁剪意味着紧凑的蒙版。 小 ROI 让每个像素保持全分辨率,因此蒙版能够与真实缺陷边界对齐。
  3. 大面积?用网格平铺。 不要将一个 ROI 拉伸覆盖整个面板。布置一个小 ROI 网格,使每个图块保持全分辨率,模型可以看到细微的缺陷。
  4. 每次捕获保留各自的蒙版。 每张训练图像都会为该 ROI 存储自己绘制的蒙版;模型会从所有这些蒙版中学习。
  5. 丰富的输出。 每个 ROI 会返回每个类别的像素数、每个缺陷区域的边界框,以及可测量的面积,足以支持基于尺寸的通过/失败规则。

数据流:每个 ROI 返回的是蒙版,而非标签

运行时,相机会从完整图像中裁剪出 ROI,将其输入到已训练的分割器中,并获得逐像素的预测结果——一个与 ROI 同尺寸的蒙版,其中每个像素都带有一个类别。相机从该蒙版中导出像素数、缺陷区域和边界框。

1 · CAPTUREFull frame + ROI2 · CROP≤ 512 × 512 px crop3 · SEGMENTER MODELSurface Quality · trainedencode → bottleneck → decodepredicts a class per pixel4 · MASK OUTPUTscratch3.1%dent1.4%stain2.0%total defect6.5%ruleFAIL > 2%
  1. 捕获带有 ROI 标记的完整画面。
  2. 裁剪 ROI 为单张图像,保持在 512 × 512 像素或以下。
  3. 分割器模型使用编码器-解码器架构为每个像素预测一个类别。
  4. 蒙版输出是一张彩色像素图,加上每个类别的像素数,以及每个连通区域的边界框。通过/失败规则在 IO模块 中基于这些数值执行。

发挥创意:mask 是一个几何对象

一旦 segmenter 返回 mask,您就不会局限于 pass/fail。您可以获得每个类别的精确形状和位置,这意味着您可以导出测量值、计数、距离和空间关系。这开启了一整类完全不同于"查找划痕"的检测方式,而同一个 segmenter 可以服务于所有这些应用。

AREA4.8 mm²
01 / Measure

Area & coverage

Pixel counts become mm² on a calibrated camera. Set pass/fail in real-world units, "reject if stain > 3 mm²", instead of fuzzy percentages.

1234COUNT · scratch4
02 / Count

Distinct blobs

Four small pits tell a different story than one big one. Count connected regions per class to flag defect frequency, not just total coverage.

L = 52 mmWL × W52 × 4 mm
03 / Measure

Dimensions & shape

Length, width, aspect ratio, orientation, all fall out of the mask. Flag long scratches, ignore micro ones. Or flag round dents and ignore elongated ones.

24.6 mmDIST · blob → blob24.6 mm
04 / Relate

Blob-to-blob distance

Euclidean gap between two painted regions, centroid-to-centroid or nearest-edge. Useful for component spacing, pin pitch, weld-to-weld gaps, or detecting defect clusters.

edge8.2 mmDIST · defect → edge8.2 mm
05 / Relate

Distance to a reference

Paint a second class for your reference (edge, fiducial, adjacent component) then measure how far the defect sits from it. A defect 8 mm inside might be fine; 0.5 mm from the edge might be a reject.

COUNT · pills12
06 / Expand

Not just defects

Paint whatever you want to find: pills in a blister, screws in a tray, weld beads, gaps, fiducials, cells on a slide. Segmentation is a general-purpose scalpel, not a defect-only tool.

设置回顾

训练前的快速检查清单。如果以下每项都满足,您的 segmenter 将拥有坚实的基础。

  • 每个表面一种检测类型。 检测两种不同的材料或缺陷类别?为每种类型单独创建检测类型,让它们各自拥有自己的类别、数据集和模型。
  • 类别代表缺陷类型,而非严重程度。 scratchdentstain,每个都是不同的视觉对象。严重程度和 pass/fail 由下游 mask 的像素数量决定。
  • 背景是隐式的。 您绝不需要绘制或标注"良好"像素。任何未绘制的部分都属于 background
  • ROI 尺寸合理。 覆盖感兴趣区域,但每个 ROI 保持在 512 × 512 px 以下。如果表面较大,请使用网格分块。
  • 绘制每一个可见的缺陷。 训练数据中遗漏的缺陷会让模型把它们视为背景,这对质量检查来说是最糟糕的教训。
  • 从每类 10 到 15 张图像开始。 训练、运行实时预览、在 mask 错误的地方有针对性地添加图像、再训练。通常需要两到四轮迭代。

接下来