當您想進行自動缺陷檢測,但數據集不平衡時,Anomalib 是一個很好的工具。
在這個示例中,我們將介紹一個令人振奮的 Dobot 機器人工業用例,其中的機械臂用于教育、工業和智能用例中。如果您沒有可用的 Dobot 機器人,您可以簡單地修改 notebook,避開、注釋或改變機器人代碼,使其為您所用。
讓我們開始吧
為了解 Anomalib 的工作原理,我們將看一個檢查彩色立方體的生產線。其中一些立方體會有洞或缺陷,需要從傳送帶上取下。由于這些缺陷在生產線上并不常見,我們將為我們的 AI 模型拍攝一些圖像。
安裝:
按照以下步驟使用源文件安裝 Anomalib:
1.使用 Python 3.8 版本創建運行 Anomalib + Dobot DLL 的環境
對于 Windows,使用以下代碼:
python -m venv anomalib_env
anomalib_envScriptsactivate
對于 Ubuntu:
python3 -m venv anomalib_env
source anomalib_env/bin/activate
2.從 GitHub 存儲庫中安裝 Anomalib 及 OpenVINO 要求(在這篇博文中,我們將不使用 pip 安裝命令):
python –m pip install –upgrade pip wheel setuptools
cd anomalib
pip install -e . [openvino]
3.安裝 Jupyter Lab 或 Jupyter Notebook:
pip install notebook
pip install ipywidgets
4.然后連接您的 USB 攝像頭,使用簡單的攝像頭應用驗證它在正常工作。然后,關閉該應用。
可選:如果您可以訪問 Dobot,請實施以下步驟:
1.安裝 Dobot 要求。
2.檢查 Dobot 的所有連接狀態,并使用 Dobot Studio 驗證它在正常工作。
3.將通風配件安裝在 Dobot 上,并使用 Dobot Studio 驗證它在正常工作。
4.在 Dobot Studio(圖 2)中,點擊“Home”按鈕,找到:
校準坐標:立方體陣列的左上角初始位置。
位置坐標:機械臂應將立方體放在傳送帶上方的位置。
異常坐標:釋放異常立方體的位置。
然后在 notebook 中替換這些坐標。
5.如需使用機器人運行 notebook,從這里下載 Dobot API 和驅動程序文件,并將它們添加到存儲庫 Anomalib 文件夾的 notebooks/500_uses_cases/dobot 中。
|圖 2:Dobot Studio 界面。
注:如果沒有機器人,您可以轉到另一個 notebook,如 501b notebook,通過這個鏈接下載數據集,并在那里嘗試訓練和推理。
01
Notebook 的數據采集和推理
下面,我們需要使用正常的數據集創建文件夾。在這個示例中,我們創建了一個彩色立方體的數據集,并為異常情況添加一個黑色圓圈貼紙,以模擬盒子上的洞或缺陷(圖 3)。對于數據采集和推理,我們將使用 501a notebook。
|圖 3:用于第一輪訓練的數據集。
在采集數據時,請務必將 acquisition 變量設置 為 True 來運行notebook,并為沒有異常的數據定義“正常”文件夾,為異常圖像定義“異常”文件夾。數據集將直接在 Anomalib 克隆的文件夾中創建,所以我們將看到 Anomalib/dataset/cubes 文件夾。
如果您沒有機器人,您可以修改代碼以保存圖像或使用下載的數據集進行訓練。
推理:
對于推理,acquisition 變量應該是 False,我們不會保存任何圖像。我們將讀取采集到的視頻幀,使用 OpenVINO 運行推理,并決定放置立方體的位置:對于正常立方體,放置在傳送帶上;對于異常立方體,放置在傳送帶外。
我們需要識別采集標記 — 采集模式為 True,推理模式為 False。在采集模式下,要注意是創建正常還是異常文件夾。例如,在采集模式下,notebook 會將每張圖像保存在 anomalib/datasets/cubes/{FOLDER} 中,以便進一步訓練。在推理模式下,notebook 不會保存圖像;它將運行推理并顯示結果。
訓練:
對于訓練,我們將使用 501b notebook。在這個 notebook 中,我們將使用 PyTorch Lighting,并使用“Padim”模型進行訓練。這種模型有幾個優點:我們不需要 GPU,只用 CPU 就可以完成訓練過程,而且訓練速度也很快。
現在,讓我們深入了解一下訓練 notebook!
02
導入
在這一部分,我們將解釋用于該示例的軟件包。我們還將從 Anomalib 庫中調用需要使用的軟件包。
配置:
有兩種方法來配置 Anomalib 模塊,一種是使用配置文件,另一種是使用 API。最簡單的方法是通過 API 查看該庫的功能。如果您希望在您的生產系統中實施 Anomalib,請使用配置文件 YAML 文件,它是核心訓練與測試進程,包含數據集、模型、試驗和回調管理(圖 4)。
在接下來的部分,我們將描述如何使用 API 配置您的訓練。
|圖 4:訓練和驗證模塊。
數據集管理器:
通過 API,我們可以修改數據集模塊。我們將準備數據集路徑、格式、圖像大小、批量大小和任務類型。然后,我們使用以下代碼將數據加載到管道中。
i, data = next(enumerate(datamodule.val_dataloader()))
模型管理器:
對于異常檢測模型,我們使用 Padim,您也可以使用其他 Anomalib 模型,如:CFlow、CS-Flow、DFKDE、DFM、DRAEM、FastFlow、Ganomaly Patchcore、Reverse Distillation 和 STFPM。此外,我們使用 API 設置了模型管理器;使用 anomalib.models 導入 Padim。
回調(Callbacks)管理器:
為了適當地訓練模型,我們需要添加一些其他的“非基礎”邏輯,如保存權重、盡早終止、以異常分數為基準以及將輸入/輸出圖像可視化。為了實現這些,我們使用回調Callbacks。Anomalib 有自己的Callbacks,并支持 PyTorch Lightning 的本地callbacks。通過該代碼,我們將創建在訓練期間執行的回調列表。
訓練:
在設置數據模塊、模型和callbacks之后,我們可以訓練模型了。訓練模型所需的最后一個組件是 pytorch_lightning Trainer 對象,它可處理訓練、測試和預測管道。復制鏈接,查看 notebook 中的 Trainer 對象示例。
驗證:
我們使用 OpenVINO 推理進行驗證。在之前的導入部分,我們導入了 anomalib.deploy 模塊中的 OpenVINOInferencer。現在,我們將用它來運行推理并檢查結果。首先,我們需要檢查 OpenVINO 模型是否在結果文件夾中。
預測結果:
為了實施推理,我們需要從 OpenVINOinference(我們可在其中設置 OpenVINO 模型及其元數據)中調用 predict 方法,并確定需要使用的設備:
predictions = inferencer.predict(image=image)
預測包含與結果有關的各種信息:原始圖像、預測分數、異常圖、熱圖圖像、預測掩碼和分割結果(圖 5)。根據您要選擇的任務類型,您可能需要更多信息。
|圖 5:預測結果
最后,我們采用 Dobot 機器人的缺陷檢測用例基本是這樣的。
03
使用您自己的數據集的技巧和建議
數據集轉換:
如果您想提高模型的準確性,您可以在您的訓練管道中應用數據轉換。您應該在 config.yaml 的 dataset.transform_config 部分提供增強配置文件的路徑。這意味著您需要有一個用于 Anomalib 設置的 config.yaml 文件,以及一個可供 Anomalib config yaml 文件使用的單獨 albumentations_config.yaml 文件。
強大的模型:
異常檢測庫并非無所不能,在碰到麻煩的數據集時也可能會失效。好消息是:您可以嘗試 13 個不同的模型,并能對每個實驗的結果進行基準測試。您可以將基準測試入口點腳本用于其中,并將配置文件用于基準測試目的。這將幫助您為實際用例選擇最佳模型。
審核編輯:劉清
-
機器人
+關注
關注
211文章
28468瀏覽量
207358 -
dll
+關注
關注
0文章
115瀏覽量
45438 -
python
+關注
關注
56文章
4797瀏覽量
84776 -
Ubuntu系統
+關注
關注
0文章
91瀏覽量
3979
原文標題:如何應用Anomalib在數據集不平衡的情況下檢測缺陷?-- 下篇
文章出處:【微信號:SDNLAB,微信公眾號:SDNLAB】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論