跳到主要內容

AI 驅動文件

您想了解什麼?

訓練分割器

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

影片指南

觀看本主題的實際操作:如何在幾分鐘內建立分割程式

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

開始之前​

您將需要​

  • 已設定並連線的 OV80i 相機系統
  • 具有您想要分割的特徵的測試零件(例如,帶有鉛筆標記的紙張)
  • 適合您特定應用的良好光照條件
  • 15-20 張用於訓練的樣本影象

第一步:建立分割程式​

1.1 開始新程式​

  1. 導航至 All Recipes 頁面
  2. 點選 + New Recipe(右上角)

新建程式按鈕

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

1.2 啟用程式​

  1. 在列表中找到您的程式(顯示為 "Inactive")
  2. 點選 Activate
  3. 點選 Activate and go to editor 確認並啟動程式編輯器

啟用程式按鈕

✅ 結果: 程式現在為 "Active" 狀態,並顯示程式編輯器。

第二步:配置相機設定​

2.1 開啟影象配置​

  1. 點選 Configure Imaging(左下角)

配置影象

2.2 最佳化分割的對焦​

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

  1. 將測試零件定位在相機視野中
  2. 轉動鏡頭對焦環,直到邊緣清晰銳利
  3. 使用不同的零件進行測試,以確保在整個範圍內保持一致的對焦
提示
  • 對焦於缺陷/特徵將出現的表面
  • 確保整個感興趣區域清晰對焦
  • 對於分割來說,輕微過銳比模糊對焦更好

2.3 設定最佳曝光​

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

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

分割曝光指南:

  • 特徵應與背景形成清晰的對比
  • 避免可能被誤認為缺陷的陰影
  • 使用不同的零件條件進行測試(乾淨、髒汙、磨損)

2.4 配置 LED 照明模式​

根據要分割的物件選擇照明:

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

2.5 調整 Gamma 以增強特徵​

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

2.6 儲存配置​

  1. 在實時預覽中檢查設定
  2. 點選 Save Imaging Settings

Save Settings

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

第三步:設定模板與對齊​

3.1 導航至模板部分​

在麵包屑選單中點選 "Template Image and Alignment"

3.2 配置對齊(可選)​

Template and alignment

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

  1. 如果零件位置始終一致,選擇 Skip Aligner
  2. 點選 Save

Template image

何時使用對齊器: 當零件到達時位置或方向存在變化,且會影響分割精度時啟用。

第四步:定義檢測區域​

4.1 導航至檢測設定​

在麵包屑選單中點選 "Inspection Setup"

4.2 設定感興趣區域 (ROI)​

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

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

ROI Setup

4.3 分割 ROI 最佳實踐​

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

4.4 儲存 ROI 設定​

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

第五步:標註訓練資料​

5.1 導航至 Label And Train​

在麵包屑選單中點選 "Label And Train"

5.2 配置檢測類別​

  1. 在 Inspection Types 下點選 Edit
  2. 將類別重新命名以匹配您的特徵(例如 "Pencil Mark"、"Surface Defect"、"Spill Area")
  3. 選擇類別顏色以便視覺識別
  4. 儲存更改

5.3 捕獲並標註訓練影象​

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

影象捕獲流程​

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

Label and Train

標籤標註最佳實踐​

良好標註不良標註
精確的特徵邊界邊緣繪製粗糙
一致的特徵定義標準不一致
完整的特徵覆蓋遺漏特徵區域
乾淨的背景(未繪製)意外繪製到背景

5.4 訓練資料多樣性​

確保您的訓練集包含:

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

5.5 訓練資料質量檢查​

  1. 審查所有已標註的影象
  2. 驗證標註方式的一致性
  3. 刪除任何標註錯誤的示例
  4. 必要時新增更多示例

第六步:訓練分割模型​

6.1 啟動訓練流程​

  1. 標註完成後點選 Return to Live
  2. 點選 Train Segmentation Model

Start Training

6.2 配置訓練引數​

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

6.3 監控訓練進度​

訓練進度顯示:

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

Training

訓練控制:

  • 中止訓練: 出現問題時停止
  • 提前完成訓練: 準確率達到要求時停止

Training 2

提示
  • 85% 準確率通常適用於生產
  • 訓練在達到目標準確率時自動停止
  • 更多的訓練資料往往比更多的迭代次數更有效

第七步:測試分割效能​

7.1 訪問實時預覽​

  1. 訓練完成後點選 Live Preview
  2. 使用各種零件進行測試:
    • 已知合格零件(應顯示無/極少分割)
    • 已知缺陷零件(應突出顯示缺陷)
    • 邊緣情況和臨界示例

Live preview

7.2 評估結果​

檢查分割質量:

指標良好表現需要改進
準確性穩定地識別真實特徵遺漏明顯特徵
精確度誤報較少大量背景區域被高亮
邊緣質量乾淨、準確的邊界粗糙或不準確的邊緣
一致性重複測試結果相似結果差異很大

7.3 結果不佳故障排除​

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

第 8 步:配置透過/失敗邏輯​

8.1 訪問 IO模組​

  1. 確保 AI 模型顯示為綠色(已訓練狀態)
  2. 透過麵包屑選單導航至 IO模組

8.2 移除預設邏輯​

  1. 刪除 Classification Block Logic 節點
  2. 準備構建自定義分割邏輯

8.3 構建分割流程​

使用以下元件建立 Node-RED 流程:

  1. 從左側面板拖動節點:
    • Function 節點(用於邏輯)
    • Debug 節點(用於測試)
    • 最終的 Pass/Fail 節點
  2. 使用連線連線節點

NodeRed

8.4 根據需求配置邏輯​

選項 A:未檢測到缺陷時透過​

用例: 任何檢測到的特徵均視為失敗的質量檢測

Function 節點程式碼:

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

選項 B:僅在缺陷較小時透過​

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

Function 節點程式碼:

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:缺陷總面積較小時透過​

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

Function 節點程式碼:

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 配置 Function 節點​

  1. 雙擊 Function 節點
  2. 從上述示例複製相應程式碼
  3. 貼上到 "On Message" 選項卡
  4. 根據您的應用調整閾值
  5. 點選 Done

8.6 部署並測試邏輯​

  1. 點選 Deploy 以啟用邏輯
  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