AI 驱动文档
您想了解什么?
分类:每个区域一个标签
分类器查看裁剪后的区域并回答一个问题:这属于哪一类? 通过或失败。空或满。红、绿或蓝。它是最简单、最快速的检测类型,除非你需要知道缺陷在哪里,否则它是首选的默认选项。
分类器的设置基于一个简单的层级结构:Type 拥有 Class,Type 作为 ROI 标记到图像上。
可以把它想象成一个橡皮图章系统。Inspection Type 就是图章本身(设计图案)。ROI 是你在纸(图像)上盖出的印记。每个印记都继承相同的设计、相同的 class 列表和相同的已训练模型。
三个概念
在你训练 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.
心智模型:Type 拥有 Class 和 ROI
Inspection Type 是一个容器。它包含一个共享的数据集、一个共享的 class 列表和一个已训练的 AI 模型。然后你将这个容器在图像上的多个位置进行标记,这些标记就是 ROI。同一 Type 的每个 ROI 都继承相同的 class 列表,并由相同的模型进行评估。
- Inspection Type 是容器。
- Class 是结果词汇表。
- ROI 是图像上的位置。
对于分类器:每个 ROI 一个标签,从 class 列表中选取
分类器对每个 ROI 裁剪区域提出一个问题:它看起来像哪个 class? 存在或缺失。通过或失败。良好、有划痕或破裂。每个 ROI 的输出是一个 class 名称加上一个置信度分数,这是一个干净的分类结果,便于后续流程使用。
实时示例:PCB 螺丝存在性检测
考虑一块带有六个螺丝位置的 PCB。其中四颗螺丝存在,一颗缺失,一颗损坏。你可以这样配置:
- Type:
Screws(6 个 ROI,分类器) - Classes:
present、absent、damaged - ROIs:
Screw_1到Screw_6,每个都标记为三个 class 之一
每个 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,是下拉选择,而不是绘制任务。输出是
class_name加上confidence分数。 - Type 是所有者。 所有六个 ROI 共享 Screws 数据集。捕获一张图像就为你提供六个新的训练样本,一个已训练的模型决定所有六个结果。
- ROI 只是位置。 绘制要紧凑(小于 512 × 512 px)。使用复制来标记
Screw_1 → Screw_2 → Screw_3,每个都自动继承 class 列表。
在 OV80i 上,单个程序可以混合使用多种模型类型。使用分类器进行判定和已知类别识别,然后在其上叠加分割器以进行像素级测量。请参阅理解分割器了解另一半内容。
深入了解:类的行为方式
类属于类型,而非ROI
这是最重要的一点,必须深入理解。类是检查类型的属性,这意味着添加或删除一个类会自动更改使用该类型的每个ROI的标签选项。
- 定义一次。 在 Classes 面板中点击 + Add class。为其指定名称(例如
stripped_head)和颜色。 - 即时传播。 新类会出现在该类型每个ROI的下拉菜单中。无需逐个ROI配置。
- 按需重新标注。 现有训练图像保留原有标签;您可以重新查看任何图像并重新分类到新类。
- 保持精简。 从能涵盖您决策的最小类集合开始。两个类(
pass/fail)通常优于五个模糊不清的类。
深入了解:ROI的行为方式
区域越小越好。 让每个ROI刚好能容纳特征即可。较小的ROI意味着更少的训练数据、更快的迭代和更准确的AI决策,特征会主导裁剪区域而不是淹没在背景中,且无需缩小。
小、具体、数量多
ROI告诉相机在哪里裁剪。裁剪越紧凑,模型获得的信号越清晰。由于ROI共享类型,添加更多ROI可以成倍增加训练数据,而不增加工作量。
- 保持裁剪尺寸在 512 × 512 像素以下。 任何超出尺寸都会被缩小以适应模型输入,细节将永久丢失。
- 越紧凑越好。 围绕单个特征的小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 像素。 - 先确保对齐有效。 如果零件移动或旋转,对齐器会带着您的ROI一起移动。紧凑的ROI只有在对齐稳定时才有效。
- 每个类初始3到5张训练图像。 训练、找出失败、添加针对性数据、重新训练。通常需要两到四次迭代。
- 每个标签都要双重检查。 五张训练图像中有一个错标就是20%的污染。每次训练前点击 View All ROIs。
后续步骤
- 了解分割器,关于像素级模型的同类页面。
- 感兴趣区域 (ROIs),绘制 ROI 的实用指南。
- 训练您的 AI,标注和训练工作流。