跳到主要内容

AI 驱动文档

您想了解什么?

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

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

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

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

三个概念

在训练 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 拥有 classes 和 ROIs

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

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 裁剪区域执行比选择类别更丰富的操作:它为每个像素打标签。你不是选择一个下拉答案,而是在训练图像上将缺陷涂绘出来,模型则学习每个类别的形状。每个 ROI 的输出是一个掩码——一张可用于测量、定位和计数的逐像素映射。

实例演示:表面缺陷检测

设想一块拉丝金属表面上有两道划痕、一处凹痕和一块污渍。你可以这样配置:

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

你不需要为整个区域选择一个标签,而是用每种类别的颜色逐一涂绘每个缺陷。模型输出是一个掩码,按类别细分:

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

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

  1. 绘制,而非选择。 你不是为整个 ROI 选择一个标签,而是逐像素涂绘每个缺陷。模型学习每个类别的形状,而不仅仅是其是否存在。
  2. ROI 是像素疆域。 分割器在 ROI 内部查看并为每个像素打标签。表面积越大 = 需要评估的像素越多。仍要遵循 512 × 512 规则,如果区域过大则使用网格切片。
  3. 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 是免费的。 你不需要涂抹"这里没问题"的像素。任何未涂抹的像素自动为 background
  3. 每个像素一个类。scratch 上用 dent 涂抹会替换标签,类不能在单个像素上叠加。
  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 px 以下。 超过这个尺寸,细节会因缩小而永久丢失。小缺陷会变得不可见。
  2. 紧凑的裁剪意味着紧凑的掩膜。 小的 ROI 保持每个像素的全分辨率,因此掩膜与真实缺陷边界对齐。
  3. 大表面?用网格平铺。 不要将一个 ROI 拉伸到整个面板上。布置较小 ROI 的网格,使每个平铺块保持全分辨率,并让模型能够看到细微的缺陷。
  4. 掩膜按捕获持久化。 每个训练图像都会为该 ROI 存储自己绘制的掩膜;模型从所有这些掩膜中学习。
  5. 丰富的输出。 每个 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 px 或以下。
  3. 分割器模型使用编码器-解码器架构为每个像素预测一个类。
  4. 掩膜输出是一个彩色像素图加上每个类的像素数,以及每个连通区域的边界框。通过/失败规则在 IO模块 中基于这些数字运行。

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

一旦分割器返回 mask,你就不再局限于通过/失败。你获得了每个类别的精确形状和位置,这意味着你可以推导出测量值、计数、距离和空间关系。这解锁了一整类与"找到划痕"完全不同的检测,并且同一个分割器可以服务于所有这些用途。

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.

设置回顾

在训练之前的快速检查清单。如果每一项都成立,你的分割器将拥有坚实的基础。

  • 每个表面对应一个 Inspection Type。 检测两种不同的材料或缺陷族?为每一个分配独立的类型,让它们拥有各自的类别、数据集和模型。
  • 类别代表缺陷类型,而非严重程度。 scratchdentstain,每一个都是不同的视觉对象。严重程度和通过/失败来自下游对 mask 像素数的统计。
  • 背景是隐含的。 你从不绘制或标注"良好"像素。任何未绘制的部分都属于 background
  • ROI 尺寸要合理设计。 覆盖感兴趣区域,但每个 ROI 保持在 512 × 512 px 以下。如果表面较大,可使用网格平铺。
  • 绘制每一个可见的缺陷。 训练数据中遗漏的缺陷会让模型把它们当作背景,这是质量检查中最糟糕的教训。
  • 每个类别从 10 到 15 张图像开始。 训练、运行实时预览、在 mask 错误处添加针对性图像、重新训练。通常迭代两到四次即可。

下一步