跳至內容
測試伺服器
開發伺服器

Anomaly Detection vTool#

Anomaly Detection vTool 會根據您所選的模型,識別影像中偏離正常或預期行為的模式或特徵。

Anomaly detection 是一種二元分類形式,它能區分正常(期望)與異常(非期望)資料,讓您將影像分類為良品與不良品。與標準分類相比,它可以處理高度不平衡的資料,在此類資料中,異常情況很少見、表現不充分,或者在訓練資料集中根本不存在。

Anomaly Detection vTool 可以對透過 Image 輸入引腳接收到的影像進行分類。它會透過 Classes、Scores、Regions、Heatmaps 和 InferenceImage 輸出引腳輸出結果。

如果您在進行 anomaly detection 之前使用 ROI Creator vTool 指定感興趣區域,則 Anomaly Detection vTool 會透過其 Roi 輸入引腳接收 ROI 資料。在這種情況下,anomaly detection 僅會在感興趣區域上執行。這會帶來一個附帶好處,即加快處理速度。

若要購買 Anomaly Detection vTool 的授權,請造訪 Basler 網站。

Anomaly Detection vTool

運作原理#

假設您想要檢查您的 PCB 生產線是否有異常。

這是您的輸入影像(影像來源:a),顯示了一個有彎曲引腳的 PCB:

顯示 PCB 的輸入影像

您可以透過載入經過訓練以檢測 PCB 不規則性的模型來設定 vTool。

已選取用於動物 Anomaly Detection 的 Bundle

接下來,您設定檢測設定:

  • Visualize anomalies and output heatmap: vTool 包含一項視覺化功能,預設為啟用。這可讓您以熱力圖的形式檢視資料。您可以為熱力圖選擇各種色彩對應圖。根據資料和情境的不同,不同的色彩對應圖能更有效地突顯異常。
    如果您不需要此視覺化功能,且不需要對影像資料進行進一步分析,您可以取消選取熱力圖。這可能會提高產能。如果您取消選取此選項,則 Regions、Heatmaps 和 InferenceImage 輸出引腳將被停用。

    InferenceImage、Heatmaps 與 Regions 的區分

    InferenceImage 是帶有熱力圖疊加層的輸入影像,用於在引腳資料檢視中視覺化異常。

    Heatmaps 並非用於在 引腳資料檢視 中視覺化異常。它們是表示每個像素的異常分數的浮點數值影像,當需要在應用程式中進行進一步分析時使用。

    Regions 是透過對熱力圖數值進行閾值處理來計算的。異常分數高於特定數值的像素會被分組到一個區域中,從而將正常區域與異常區域區分開來。

  • Anomaly threshold: Anomaly threshold 定義了根據所選模型返回的分數,被分類為正常影像與被視為異常影像之間的界限。預設閾值是在模型訓練期間根據訓練資料集選取的。然而,最佳閾值取決於您應用程式的特定要求以及您願意接受的取捨。您可以根據需要進行調整。較高的閾值意味著檢測到的異常較少,但檢測到的異常具有更高的信心水準。較低的閾值意味著檢測到的異常較多,但其中一些可能是誤報。

    資訊

    非異常推論影像上的像素強度變化表示與正常影像的細微偏差。然而,只要這些偏差保持在預定義的 anomaly threshold 以下,該影像就會被分類為正常。如果需要,此觀察結果可用於手動調整閾值。

設定 vTool 後,您執行啟動推論過程的配方。vTool 利用模型來分析影像並對現有物件進行分類。分析完成後,將返回 anomaly detection 結果。然後,您可以在引腳資料檢視中檢視結果。

選取 InferenceImage Pin 時的詳細輸出

選取 InferenceImage Pin時的 Anomaly Detection

InferenceImage:已偵測到四個具有異常的區域,並在影像中使用像素強度熱力圖反白顯示。不過,其中只有一個超過異常閾值,導致該影像被分類為「異常」。

分數:整個影像中最高的異常分數為 52.5901。儘管已偵測到四個異常區域,但只有一個高於異常閾值並獲得異常分數。

類別:由於分數高於閾值,該影像已被分類為異常。

選取 Regions Pin 時的詳細輸出

選取 Regions Pin時的 Anomaly Detection

類別:由於分數高於閾值,該影像已被分類為異常。

分數:整個影像中最高的異常分數為 52.5901。

區域:異常區域已被反白顯示(如截圖中的箭頭所示)。與推理影像輸出相比,區域輸出僅標記影像中異常分數高於特定值的部分。

設定 vTool#

若要設定 Anomaly Detection vTool:

Anomaly Detection vTool 設定

  1. 在 vTool Settings 區域的 Recipe Management 窗格中,按一下 Open Settings 或按兩下 vTool。
    隨即會開啟 Anomaly Detection 對話方塊。

  2. 在 Server Selection 區域中,選取您要連線的伺服器。
    伺服器必須正在執行才能與其連線。

    • 選項 1:手動輸入您的 Triton Inference Server 的 IP 位址與連接埠。
    • 選項 2:在下拉式清單中選取您的伺服器的 IP 位址 / 主機名稱與連接埠。
  3. 按一下 Connect 以建立連線。
    然後,vTool 會載入可用的模型。

  4. 在 模型選取 區域中,在下拉式清單中選取包含所需模型的套件 (bundle)。
    選取套件後,下拉式清單下方的資訊將會填入套件詳細資料,讓您可以檢查是否已選取正確的套件。
    模型選取區域

  5. 如果未列出所需的套件,請按一下 部署新模型 位於下拉式清單中。
    部署新模型
    這會開啟 pylon AI Agent ,可讓您部署更多模型。
    部署新模型後,您必須按一下 Refresh 按鈕。

  6. 在 Detection Settings 區域中,選取您熱力圖所需的色彩對應圖。

  7. 在 Detection Settings 區域中,視需要調整異常閾值。
    異常閾值是模型的一部分。變更它可能會產生非預期的結果。

    資訊

    此區域中可用的參數取決於所選的模型。某些參數只有在選取特定模型後才會顯示。預設值由模型提供。

  8. 按一下 OK。

您可以在 pin data view 中檢視異常偵測的結果。在這裡,您可以選取要顯示的輸出。

Inputs#

Image#

直接接收來自 Camera vTool 或輸出影像之 vTool(例如 Image Format Converter vTool)的影像。

  • 資料類型:Image
  • 影像格式:8 位元至 16 位元彩色影像

ROI#

接受來自 ROI Creator vTool 或任何其他輸出矩形的 vTool 的 Region of Interest。如果輸入多個矩形,則會使用第一個矩形作為單一 Region of Interest。

  • 資料類型:RectangleF、RectangleF Array

Outputs#

類別#

傳回每個輸入影像的類別(正常或異常)。

  • 資料類型:String Array

Scores#

傳回該類別的異常分數。這表示所偵測到異常的嚴重程度,亦即影像異常的可能性有多高。請注意,此值並非機率,且根據模型的不同,其範圍可以從非常小到非常大的數字。它只能結合所定義的閾值來進行解讀。

  • 資料類型:浮點數陣列

熱力圖#

傳回熱力圖。此輸出可以停用。熱力圖並非用於在 pin data view 中視覺化異常。它們是代表每個像素異常分數的浮點值影像,如果希望在應用程式中進行進一步分析,即可使用它們。

  • 資料類型:Image Array

Regions#

傳回每個預測異常的區域。此輸出可以停用。區域是透過對熱力圖值進行閾值處理來計算的。異常分數高於特定值的像素會被分組到一個區域中,從而將正常區域與異常區域區分開來。

  • 資料類型:Region Array

InferenceImage#

傳回帶有熱力圖覆疊的輸入影像,以在 pin data view 中視覺化異常。此輸出可以停用。

  • 資料類型:Image

Payload#

傳回有關 Inference Server 效能的額外資訊以供評估。只有在 Debug Settings 參數群組的 Features - All 窗格中啟用它時,此輸出 pin 才會可用。

  • 資料類型:String

典型前置項目#


  1. Visual Anomaly (VisA) 於 DATE 從 https://registry.opendata.aws/visa 存取。Zou, Yang, Jongheon Jeong, Latha Pemula, Dongqing Zhang, and Onkar Dabeer. "SPot-the-Difference Self-Supervised Pre-training for Anomaly Detection and Segmentation." arXiv preprint arXiv:2207.14315 (2022).