跳到主要內容

AI 驅動文件

您想了解什麼?

同一配方中的多檢視

本指南向您展示如何設定一個單一配方,以在不切換到其他配方的情況下對不同部件、角度或檢視進行檢測。這樣做有多種原因,但兩個主要使用場景是:

  • 當拍攝之間沒有足夠的時間來切換配方時,
  • 當對同一部件的多個部位或角度執行相同檢測時(例如在車身的五個不同位置檢查螺栓的存在/缺失)。在這種情況下,該方法可避免在不同配方中多次訓練相同的存在/缺失模型。
備註

以下示例是一個簡單版本,只有兩個檢視和一種檢測型別,但你可以將此相同技術應用於無限數量的檢測型別和檢視。在此檢測中,我們將檢查鑽頭盒兩側位的存在/缺失。 一側底部有五個位,另一側頂部和底部各有八個位。我們將具有16個位的一側稱為 side A,具有五個位的一側稱為 side B。

Side ASide B
Side A (16 bits)Side B (5 bits)

建立並訓練一個新配方

與每個側面單獨一個配方不同,由於佈局不同,我們將把兩側合併為一個配方,從而避免為存在/缺失模型訓練兩次。

  1. 建立一個新配方。在此案例中,它是一個 classification 配方,但同樣的原理也可用於 segmentation。

  2. 為第一檢視設定 Template Image 和 Alignment:

備註

當在同一配方中檢查多於一個檢視時,Aligner 將不可用。Template Image 和 Aligner 僅用於為 Inspection Setup 設定基準影象。

Template image and alignment- Side A

  1. 為側 A 繪製 ROI。給它們命名,以便識別所屬的側。在本示例中,我們將 ROI 命名為 A1-A16。

ROIs - Side A

  1. 返回 Template Image 和 Alignment,以從新捕獲或庫中替換為側 B 的影象。

Template image and alignment- Side B

  1. 使用每個 ROI 旁邊的鎖圖示,以避免移動側 A 的 ROI,然後為側 B 繪製並命名 ROI。

ROIs - Side B

備註

對於更復雜的配方,可以對需要檢測的檢視數量重複此過程。

  1. 使用來自兩側 A 和 B 的影象對分類模型進行標註和訓練。拍攝並標註側 A 時,不要標註側 B 的 ROI,反之亦然。
Side A pass labelsSide A fail labels
Labeling side A (Pass)Labeling side A (Fail)
Side B pass labelsSide B fail labels
Labeling side B (Pass)Labeling side B (Fail)

配置 Node-RED 邏輯

  1. 導航到 IO Block(從 Recipe Editor 的 Configure IO)以開啟您的 Node-RED 流。
  2. 建立一個源以告訴 OV20i 當前正在檢查哪一側。
備註

這可以是機器人位置資料、來自 PLC 的資訊,或您想要使用的任何其他資訊。下面的示例中,我們將使用兩個 Inject 節點來模擬:一個傳送字串 "A",一個傳送字串 "B"。

  1. 由於傳入的側資料可能是瞬態的,但我們想要檢查活動的是哪一側,因此將狀態資料儲存為一個 Flow 變數,該變數將持續到接收到下一條側資訊。將您的資料來源連線到包含以下程式碼的函式塊:
flow.set('side',msg.payload);
return msg;

Edit function node

  1. 可以透過開啟 context 資料側欄、傳送一條訊息,然後在 Flow variable 窗格中點選 重新整理 來測試側資料是否正確儲存。資料流窗格僅在使用小型 refresh 按鈕手動重新整理時才會更新。

Context menu

  1. 一旦側資料正確儲存在 Flow variable 中,新增一個連線到 All Block Outputsswitch 節點。這將是根據 Flow variable 中活動的側來路由帶有檢測資料的訊息的區塊。將其配置為檢視 Flow 變數,並在 A 活動時將訊息路由到埠 1,B 活動時路由到埠 2。

Edit switch node

備註

對於更復雜的配方,可以對需要檢測的檢視數量重複此過程。

  1. 將 switch 的每個輸出埠連線到一個 Classification Block Logic block,並根據您要檢測的該側的規則進行配置。Switch 節點一次只會將訊息路由到其中一個節點。下圖顯示了用於交換口 B 的配置。請注意它沒有引用 A 的 ROI,因此當檢測透過該節點路由時,該側的結果將被忽略。

Edit Classification Block Logic node

  1. 最後,將 邏輯塊連線到 Inspection Pass/Fail block。這可以使結果在 HMI 上顯示,並傳遞給任何附加的 PLC 或其他流元件。

Node-RED Flow

測試配方

現在 Node-RED 流已配置完畢,是時候對配方進行端到端測試。

  1. 首先,我們將使用 Node-RED 的 inject 節點傳送 A 側指令。然後使用 HMI 檢查一個合格部件。請注意,儘管 B 側的某些區域失敗,整個檢測仍然透過。

HMI side A, pass

  1. 現在在 A 側移除一個鑽頭並再次檢測時,我們得到我們想要的失敗結果。

HMI side A, fail

  1. 繼續到 B 側時,使用 Node-RED inject 傳送 B 訊號,並在上下文資料窗格的 Flow 變數部分點選 重新整理,以確保其已儲存。

Node-RED Flow B

  1. 現在切換到良品的 B 側時,儘管 A 側的區域全部失敗,檢測仍然透過。

HMI side B, pass

恭喜!您現在已掌握在部件的多個檢視之間使用單一配方和模型的方法。這將允許在高速條件下執行復雜的檢測,並實現與機器人之間的緊密整合。它還將為您節省大量時間,避免為同一檢測在不同檢視上訓練多種模型。