跳到主要內容

AI 驅動文件

您想了解什麼?

訓練分割器

本指南將向您展示如何設定和配置 OV80i 分割功能,以自動檢測、測量和分析您零件中的特定特徵或缺陷。當您需要識別不規則形狀、測量面積或檢測簡單分類無法處理的特定模式時,請使用分割功能。

影片指南

檢視此主題的實際操作:如何在幾分鐘內建立分割配方

何時使用分割: 表面缺陷、液體溢位、不規則形狀、面積測量、模式檢測或任何需要畫素級精度的特徵。

開始之前

您需要準備的事項

  • 已設定並連線的 OV80i 相機系統
  • 具有您想要分割特徵的測試零件(例如,帶有鉛筆痕跡的板材)
  • 針對您特定應用的良好照明條件
  • 15-20 張用於訓練的樣本影象

第一步:建立分割配方

1.1 開始新配方

  1. 導航到所有配方 頁面
  2. 點選 + 新配方(右上角)

新配方按鈕

  1. 輸入配方名稱: 使用描述性名稱,如 "Pencil_Mark_Detection" 或 "Surface_Defect_Segmentation"
  2. 選擇配方型別: 從下拉選單中選擇 "Segmentation"
  3. 點選 確定 建立

1.2 啟用配方

  1. 在列表中找到您的配方(顯示為 "Inactive")
  2. 點選 啟用
  3. 點選 啟用並進入編輯器 確認並啟動配方編輯器

啟用配方按鈕

結果: 配方現在為 "Active",並顯示配方編輯器。

第二步:配置相機設定

2.1 開啟成像配置

  1. 點選 配置成像(左下角)

配置影象

2.2 為分割最佳化焦距

焦距對於準確的邊緣檢測至關重要:

  1. 將測試零件放置在相機視野中
  2. 調整焦距,直到邊緣清晰銳利
  3. 使用不同的零件進行測試,以確保在您的範圍內保持一致的焦距
提示
  • 專注於缺陷/特徵將出現的表面
  • 確保整個感興趣區域都處於清晰的焦距
  • 輕微的過度銳化比模糊焦距更適合分割

2.3 設定最佳曝光

適當的曝光確保一致的特徵檢測:

  1. 調整曝光 以實現均衡的照明
  2. 避免過曝區域(純白區域)
  3. 確保特徵可見,並具有良好的對比度

分割曝光指南:

  • 特徵應與背景有明顯對比
  • 避免可能被誤認為缺陷的陰影
  • 在各種零件條件下進行測試(乾淨、髒汙、磨損)

2.4 配置 LED 照明模式

根據您要分割的內容選擇照明:

特徵型別推薦照明原因
表面缺陷明場均勻照明顯示錶面不規則性
劃痕/裂縫側光產生陰影,突出線性缺陷
凸起特徵暗場使凸起區域從背景中突出
液體溢位側光顯示錶面紋理差異

2.5 調整伽瑪以增強特徵

  1. 增加伽瑪以增強特徵與背景之間的對比
  2. 測試不同值同時檢視目標特徵
  3. 找到設定使特徵最易區分

2.6 儲存配置

  1. 在實時預覽中檢視設定
  2. 點選 儲存成像設定

儲存設定

檢查點: 特徵應清晰可見,且對比度良好。

第 3 步:設定模板和對齊

3.1 導航到模板部分

在麵包屑選單中點選 "模板影象和對齊"

3.2 配置對齊(可選)

模板和對齊

在此示例中,我們將跳過對齊:

  1. 如果零件位置一致,選擇 跳過對齊器
  2. 點選 儲存

模板影象

何時使用對齊器: 當零件以不同位置或方向到達時啟用,以避免影響分割精度。

第 4 步:定義檢測區域

4.1 導航到檢測設定

在麵包屑選單中點選 "檢測設定"

4.2 設定興趣區域(ROI)

ROI 定義了分割將發生的位置:

  1. 在相機檢視中放置測試零件
  2. 拖動 ROI 角落以框定檢測區域
  3. 適當調整 ROI 大小:
    • 包含可能出現特徵的所有區域
    • 排除不必要的背景區域
    • 在預期特徵位置周圍留出小緩衝區

ROI 設定

4.3 分割的 ROI 最佳實踐

不做
覆蓋整個檢測表面包含無關的背景物體
在邊緣留出緩衝空間使 ROI 對特徵變化過小
考慮零件位置變化與夾具或工具重疊
測試最大預期特徵包含有永久標記的區域

4.4 儲存 ROI 設定

  1. 驗證 ROI 覆蓋所有目標區域
  2. 點選 儲存

第 5 步:標記訓練資料

5.1 導航到標記和訓練

在麵包屑選單中點選 "標記和訓練"

5.2 配置檢測類別

  1. 在檢測型別下點選 編輯
  2. 重新命名類別以匹配您的特徵(例如,“鉛筆痕跡”、“表面缺陷”、“溢位區域”)
  3. 選擇類別顏色以便於視覺識別
  4. 儲存更改

5.3 捕捉和標記訓練影象

您需要至少 10 張標記影象,但推薦 15-20 張:

影象捕捉過程

  1. 在檢測區域放置第一個測試零件
  2. 使用相機介面拍攝影象
  3. 使用畫筆工具在目標特徵上塗抹
  4. 準確塗抹:
    • 覆蓋整個特徵區域
    • 保持在特徵邊界內
    • 不要塗抹背景區域
    • 使用一致的標記方法
  5. 點選 儲存註釋
  6. 對下一個零件重複

標記和訓練

標註最佳實踐

良好標註差標註
精確的特徵邊界粗糙的邊緣塗抹
一致的特徵定義不一致的標準
完整的特徵覆蓋缺失的特徵區域
乾淨的背景(未塗抹)意外的背景塗抹

5.4 訓練資料多樣性

確保您的訓練集包括:

  • 不同的特徵大小
  • 各種特徵強度
  • ROI 內的多個位置
  • 不同的光照條件(如適用)
  • 邊緣案例和臨界示例

5.5 質量檢查訓練資料

  1. 審查所有標註的影象
  2. 驗證一致的標註方法
  3. 刪除任何標註錯誤的示例
  4. 如有需要,新增更多示例

第 6 步:訓練分割模型

6.1 開始訓練過程

  1. 標註完成後,點選 返回實時
  2. 點選 訓練分割模型

開始訓練

6.2 配置訓練引數

  1. 設定迭代次數:
    • 快速訓練: 50-100 次迭代(5-10 分鐘)
    • 生產質量: 200-500 次迭代(15-30 分鐘)
    • 高精度: 500 次以上迭代(30 分鐘以上)
  2. 點選 開始訓練

6.3 監控訓練進度

訓練進度顯示:

  • 當前迭代次數
  • 訓練準確率百分比
  • 預計完成時間

訓練

訓練控制:

  • 中止訓練: 如出現問題則停止
  • 提前完成訓練: 當準確率足夠時停止

訓練 2

提示
  • 85% 的準確率通常適合生產
  • 訓練會在達到目標準確率時自動停止
  • 更多的訓練資料通常比更多的迭代更好

第 7 步:測試分割效能

7.1 訪問實時預覽

  1. 訓練完成後,點選 實時預覽
  2. 使用各種零件進行測試:
    • 已知良好的零件(應顯示無/最少分割)
    • 已知缺陷的零件(應突出缺陷)
    • 邊緣案例和臨界示例

實時預覽

7.2 評估結果

檢查分割質量:

指標良好效能需要改進
準確率一致地找到真實特徵漏掉明顯特徵
精確度假陽性較少許多背景區域被突出
邊緣質量乾淨、準確的邊界粗糙或不準確的邊緣
一致性重複測試結果相似結果高度可變

7.3 排除不良結果

問題可能原因解決方案
缺失特徵訓練資料不足新增更多標註示例
假陽性光照/對比度差改善成像設定
粗糙邊緣影象質量差改善焦距/光照
結果不一致訓練多樣性不足新增更多多樣化示例

第 8 步:配置合格/不合格邏輯

8.1 訪問 I/O 塊

  1. 確保 AI 模型顯示為綠色(已訓練狀態)
  2. 透過麵包屑選單導航到 I/O 塊

8.2 移除預設邏輯

  1. 刪除分類塊邏輯節點
  2. 準備構建自定義分割邏輯

8.3 構建分割流程

建立 Node-RED 流程,包含以下元件:

  1. 從左側面板拖動節點:
    • 功能節點(用於邏輯)
    • 除錯節點(用於測試)
    • 最終合格/不合格節點
  2. 用電線連線節點

NodeRed

8.4 根據需求配置邏輯

選項 A:未檢測到缺陷則合格

用例: 質量檢查中,任何檢測到的特徵均為不合格

功能節點程式碼:

const allBlobs = msg.payload.segmentation.blobs;
const results = allBlobs.length <1; // Pass if no features found
msg.payload = results;
return msg;

選項 B:僅小缺陷合格

用例: 接受小於尺寸閾值的輕微缺陷

功能節點程式碼:

const threshold = 500; // Adjust pixel count threshold
const allBlobs = msg.payload.segmentation.blobs;
const allUnderThreshold = allBlobs.every(blob => blob.pixel_count < threshold);
msg.payload = allUnderThreshold;
return msg;

選項 C:總缺陷面積小則合格

用例: 接受總缺陷面積有限的部件

功能節點程式碼:

const threshold = 5000; // Adjust total pixel threshold
const allBlobs = msg.payload.segmentation.blobs;
const totalArea = allBlobs.reduce((sum, blob) => sum + blob.pixel_count, 0);
msg.payload = totalArea < threshold;
return msg;

8.5 配置功能節點

  1. 雙擊功能節點
  2. 從上述示例中複製適當的程式碼
  3. 貼上到“訊息處理”選項卡中
  4. 根據您的應用調整閾值
  5. 點選 完成

8.6 部署並測試邏輯

  1. 點選 部署 啟用邏輯
  2. 導航到 HMI 進行測試
  3. 使用已知的合格和不合格部件進行測試
  4. 驗證合格/不合格結果是否符合預期

第 9 步:生產驗證

9.1 綜合測試

測試分割系統:

測試案例預期結果失敗時的操作
乾淨部件合格(無分割)調整閾值或重新訓練
輕微缺陷根據您的標準合格/不合格精細化邏輯引數
重大缺陷不合格(清晰分割)檢查模型準確性
邊緣案例一致的行為新增訓練資料

9.2 效能驗證

監控以下指標:

  • 每次檢查的處理時間
  • 多次測試的一致性
  • 在生產照明下的準確性
  • 長時間執行的可靠性

9.3 最終調整

如果效能不令人滿意:

  1. 為邊緣案例新增更多訓練資料
  2. 調整邏輯中的閾值
  3. 改善成像條件
  4. 使用額外的迭代重新訓練模型

成功!您的分割系統已準備就緒

您現在擁有一個可工作的分割系統,可以:

  • 自動檢測 特定特徵或缺陷
  • 以畫素級精度測量面積
  • 根據您的要求應用自定義合格/不合格邏輯
  • 透過 I/O 控制與生產系統整合

高階配置選項

自定義閾值邏輯

對於複雜的驗收標準,結合多個條件:

const smallThreshold = 200;
const largeThreshold = 1000;
const maxTotalArea = 3000;

const allBlobs = msg.payload.segmentation.blobs;
const smallBlobs = allBlobs.filter(blob => blob.pixel_count < smallThreshold);
const largeBlobs = allBlobs.filter(blob => blob.pixel_count > largeThreshold);
const totalArea = allBlobs.reduce((sum, blob) => sum + blob.pixel_c