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

B0430J50100AHF超小型不平衡轉(zhuǎn)平衡變壓器
平衡電阻器可以改為不平衡嗎
朗凱威探秘磷酸鐵鋰電池組電壓不平衡的“前世今生”

電容器不平衡保護動作原因分析
LCR測試儀如何測量不平衡度?

電容電壓分配不平衡的影響

評論