跳到主要內容

AI 驅動文件

您想了解什麼?

在單一配方中的多檢視

OV10i Note

OV10i 僅支援 classification 模型。本頁提及的 segmentation 功能在 OV20iOV80i 相機上可用。

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

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

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

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

建立並訓練新配方

由於兩側佈局不同,我們將把兩邊合併為一個配方,以避免就同一存在/不存在模型在兩邊重複訓練。

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

  2. 為第一檢視設定模板影象和對齊:

備註

在同一配方上對多檢視進行檢測時,對齊器在不可用。模板影象和對齊器僅用於為 Inspection Setup 設定基準影象。

Template image and alignment- Side A

  1. 為 Side A 繪製 ROI。為幫助識別所屬邊,請將其命名。在本例中,我們將 ROI 命名為 A1-A16。

ROIs - Side A

  1. 返回模板影象與對齊,將影象換成 Side B,可以來自新捕獲的影象或庫中的影象。

Template image and alignment- Side B

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

ROIs - Side B

備註

對於更復雜的配方,重複此過程以實現你想要檢查的任意數量的不同檢視。

  1. 使用來自 Side A 和 Side B 的影象對分類模型進行標註和訓練。在捕獲並標註 Side A 時,不要標註 Side B 的 ROI,反之亦然。
Side A pass labelsSide A fail labels
Side A 透過標註Side A 失敗標註
Side B pass labelsSide B fail labels
Side B 透過標註Side B 失敗標註

配置 Node-RED 邏輯

  1. 導航至 IO Block(Recipe Editor 中的 Configure IO)以開啟你的 Node-RED 流。

  2. 建立一個源以告知 OV10i 當前正在檢查的側面。

備註

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

  1. 由於進入的側資料可能是瞬時的,但我們希望檢查哪個側處於活動狀態,因此我們將使用一個 Flow variable 來儲存狀態資料,該資料會在接收到下一條側資訊之前持續存在。將資料來源連線到包含以下程式碼的 function block:
flow.set('side',msg.payload);
return msg;

Edit function node

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

Context menu

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

Edit switch node

備註

對於更復雜的配方,請對你想要檢查的更多不同檢視重複此過程。

  1. switch 的每個輸出埠連線到 Classification Block Logic block,並根據你想要針對該側檢查的規則進行配置。switch 節點一次只會將訊息路由到其中一個節點。下方的圖片展示了 switch 的 B 側埠的配置。請注意,它沒有引用 A ROI,因此當檢查透過此節點路由時,邏輯將忽略該側的結果。

Edit Classification Block Logic node

  1. 最後,將 logic blocks 連線到 Inspection Pass/Fail block。這樣結果就能顯示在 HMI 上,並傳遞給任何連線的 PLC 或其他流元件。

Node-RED Flow

測試配方

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

  1. 首先,我們將使用 Node-RED 的 inject node 傳送 A 側命令,然後使用 HMI 對良品進行檢查。請注意,儘管 B 側區域中的某個區域失效,整次檢查仍然透過。

HMI side A, pass

  1. 現在當對 A 側移除一個鑽頭並再次進行檢查時,我們得到期望的失敗結果。

HMI side A, fail

  1. 接下來進入 B 側,我們使用 Node-RED 的 inject 傳送 B 訊號,並在 context 資料窗格中的 Flow variable 區段執行 refresh 以確保它已被儲存。

Node-RED Flow B

  1. 現在切換到良品的 B 側時,儘管 A 側的所有區域都失效,檢查仍然透過。

HMI side B, pass

恭喜!您現在知道如何在同一配方和模型下針對部件的多種檢視進行使用。這將實現高速度下的複雜檢查,並與機器人實現緊密整合。它也會省下大量時間,避免為在不同檢視上執行同一檢查而訓練多模型。