AI 驱动文档
您想了解什么?
分类:每个区域一个标签
分类器查看裁剪后的区域并回答一个问题:这属于哪个类别? 通过或失败。空或满。红色、绿色或蓝色。它是最简单、最快的检测类型,除非您需要知道缺陷的位置,否则它就是合适的默认选项。
分类器的设置基于一个简单的层级结构:类型拥有类别,类型作为 ROI 印记到图像上。
可以将其想象成橡皮图章系统。检测类型 (Inspection Type) 就是图章本身(设计图案)。ROI 是您在页面(图像)上盖出的印记。每个印记都继承相同的设计、相同的类别列表和相同的训练模型。
三个概念
在训练 AI 模型之前,相机需要知道在哪里查看,可能的结果是什么,以及如何评估每个裁剪区域。这三个问题对应三个概念,它们以非常特定的方式嵌套。
Inspection Type
A named bucket. Holds one shared dataset, one shared list of classes, and one trained AI model.
Classes
The vocabulary of possible outcomes for this inspection. Defined once on the type.
Region of Interest (ROI)
A rectangle drawn on the image. Many ROIs can share one type and, therefore, one dataset and one model.
思维模型:类型拥有类别和 ROI
检测类型 (Inspection Type) 是一个容器。它包含一个共享数据集、一个共享类别列表和一个训练好的 AI 模型。然后您将该容器在图像上的多个位置印记出来,这些印记就是 ROI。同一类型的每个 ROI 都继承相同的类别,并由相同的模型进行评估。
- 检测类型 (Inspection Type) 是容器。
- 类别 (Classes) 是结果词汇表。
- ROI 是图像上的位置。
对于分类器:每个 ROI 一个标签,从类别列表中选取
分类器获取每个 ROI 裁剪并提出一个问题:这看起来像哪个类别? 存在或缺失。通过或失败。良好、划伤或破裂。每个 ROI 的输出是一个类别名称加上一个置信度分数,这是一个清晰的分类答案,您的流水线其余部分可以据此采取行动。
实时示例:PCB 螺丝存在性检查
考虑一块带有六个螺丝位置的 PCB。其中四个螺丝存在,一个缺失,一个损坏。您将这样配置:
- 类型 (Type):
Screws(6 个 ROI,分类器) - 类别 (Classes):
present、absent、damaged - ROI:
Screw_1到Screw_6,每个都用三个类别之一进行标注
每个 ROI 的输出是标签加置信度:
| ROI | 标签 | 置信度 |
|---|---|---|
| Screw_1 | present | 0.98 |
| Screw_2 | absent | 0.94 |
| Screw_3 | present | 0.97 |
| Screw_4 | present | 0.96 |
| Screw_5 | present | 0.95 |
| Screw_6 | damaged | 0.82 |
从这个示例中需要理解三点:
- 每个 ROI 一个标签。 分类器为每个裁剪精确分配一个类别,是下拉框选择,而非绘制任务。输出是
class_name加confidence分数。 - 类型是所有者。 所有六个 ROI 共享 Screws 数据集。捕获一张图像即可获得六个新训练样本,并由一个训练好的模型对所有六个进行判断。
- ROI 只是位置。 紧密绘制(小于 512 × 512 像素)。使用 Duplicate 来印记
Screw_1 → Screw_2 → Screw_3,每个都会自动继承类别列表。
深入了解:类的行为方式
类属于类型,而非ROI
这是最重要的一点,必须牢记。类是检测类型(Inspection Type)的属性,这意味着添加或删除一个类会自动更改使用该类型的每个ROI的标签选项。
- 定义一次。 在Classes面板中点击 + Add class。为其命名(例如
stripped_head)并选择颜色。 - 立即传播。 新类会出现在该类型每个ROI的下拉菜单中。无需逐个ROI配置。
- 按需重新标注。 现有训练图像保留其标签;您可以重新查看任何图像并将其重新分类为新类。
- 保持精简。 从最小的类集合开始,仅涵盖您的决策。两个类(
pass/fail)通常比五个模糊的类表现更好。
深入了解:ROI的行为方式
区域越小越好。 让每个ROI刚好能容纳目标特征。更小的ROI意味着更少的训练数据、更快的迭代速度和更准确的AI决策,特征在裁剪图中占主导地位而不会淹没于背景中,且不会有任何缩放损失。
小而具体且数量众多
ROI告诉相机在哪里裁剪。裁剪越紧凑,模型获得的信号就越清晰。由于ROI共享一个类型,添加更多ROI可以在不增加工作量的情况下倍增您的训练数据。
- 裁剪保持在 512 × 512 px 以内。 任何更大的图像都会被缩小以适应模型输入,细节将永久丢失。
- 越紧凑越好。 围绕单个特征的小ROI能为模型提供清晰的信号,并且需要更少的训练数据即可收敛。
- 多个ROI,一个类型。 10颗螺丝 → 在同一个 Screws 类型上设置10个ROI。一次捕获即可生成十个训练样本,并且一个模型可在推理时处理全部十个。
- 使用 Duplicate。 给第一个ROI起一个有意义的名字(
Screw_Top_Left)。Duplicate会自动递增名称,您无需重复输入。 - 需要全覆盖? 不要绘制一个巨大的ROI,应平铺多个小ROI构成网格。每个都能保留完整分辨率。
数据流:每个ROI单独经过模型处理
运行时,相机会从完整图像中裁剪出每个ROI,单独将其输入训练好的模型,并记录获胜的类及其置信度分数。每次捕获,每个ROI都会得到一个标签。
- 捕获包含所有标记ROI的完整帧。
- 单独裁剪,使每个ROI成为独立的小图像。
- 分类器模型为每个裁剪图选择一个类及对应的置信度分数。
- 输出是一个 ROI → 标签 → 置信度 的表格。基于该表格的通过/失败逻辑由您的IO模块规则决定。
设置回顾
训练前的快速检查清单。如果以下每一项都成立,您的分类器将拥有坚实的基础。
- 每个决策对应一个检测类型。 不要将"螺丝"和"标签"混在同一类型中,给每一个分配独立的类型,以便它们拥有各自的类、数据集和模型。
- 类在类型级别定义。 每个ROI获得相同的下拉选项。如果某个选项不适用于每个ROI,它可能应归属于另一个类型。
- ROI画得紧凑并命名清晰。
Screw_Top_Left优于New ROI。让每个ROI刚好能容纳其特征,且小于 512 × 512 px。 - 先确保对齐有效。 如果零件发生位移或旋转,对齐器会带动您的ROI一起移动。只有当对齐稳定时,紧凑的ROI才有效。
- 每个类从3到5张训练图像开始。 训练,找出失败案例,添加针对性数据,重新训练。通常需要两到四次迭代。
- 每个标签都需复核。 在五张训练图像中有一处错标即意味着20%的数据污染。每次训练前请点击 View All ROIs。
后续步骤
- 理解分割器,关于像素级模型的相关页面。
- 感兴趣区域 (ROIs),绘制 ROI 的实用指南。
- 训练您的 AI,标注与训练工作流程。