[OpenR8 解決方案] Image_PCB_MaskRCNN_Keras (影像分析使用 MaskRCNN 演算法及 Keras 函式庫進行 PCB 影像切割)

 

 

一、Image_PCB_MaskRCNN_Keras 介紹

 

Mask R-CNN 為 Faster R-CNN 的延伸應用,比 Faster R-CNN 多增加一個分支,在檢測目標物的同時,將目標像素分割出來。

此解決方案使用 Mask R-CNN 來判斷電容的位置,標記時,目標物使用多邊形描繪出物件輪廓,標上其類別。

 

圖1. 標記 訓練 測試樣本的流程.png

圖 1.標記、訓練、測試樣本的流程。

 

 

二、Image_PCB_MaskRCNN_Keras 資料夾介紹

 

Image_PCB_MaskRCNN_Keras 位於 OpenR8 的 solution 資料夾內,其中包含:

  1. 資料夾:【data 資料夾】、【src 資料夾】、【tool 資料夾】。
  2. flow 檔案:【1_train.flow】、【2_inference.flow】。

 

※初次使用者,建議先只改動 data 資料夾內的檔案內容,等熟悉後,再自行更動至想要的位置。

 

圖 2.Image_PCB_MaskRCNN_Keras 位置 .png

圖 2.Image_PCB_MaskRCNN_Keras 位置 。

 

名稱

用途與功能

內容

data 資料夾

存放訓練樣本圖片、類別;測試圖片、類別。

pcb/train、

pcb/val

1_train.flow

訓練樣本的解決方案。

 

2_inference.flow

測試樣本的解決方案。

 

mask_rcnn_coco.h5

在第一次訓練時,用來當樣本 model 訓練(第一次使用請勿刪除)。

 

capacitor.py

coco.py

config.py

model.py

parallel_model.py

shapes.py

utils.py

visualize.py

訓練時會用到的 python 檔,其中 capacitor.py 主要為訓練與測試用。

 

表 1.Image_PCB_MaskRCNN_Keras 資料夾介紹。

 

 

三、準備訓練樣本圖 + 標記類別

 

我們要訓練之前時,要先決定好方向,以此文件為例,我們想檢測電容所在的位置,所以我們將樣本圖片一一標示它們的類別(電容)。

 

第一步:開啟標記網站介面。

開啟 tool 資料夾內 via-2.0.0 資料夾中 via.html 網頁來標記我們想訓練的樣本類別。

 

圖 3.標記網站介面 .png

圖 3.標記網站介面。

 

第二步:選擇樣本圖片存放資料夾。

點選 Open Dir 來開啟圖片樣本所放的資料夾位置,以這裡的解決方案為例,要訓練圖片放在 data/pcb/train,於是按下 “Add Files” 來準備標記圖片,如圖 4圖 5

 

圖 4.按下 Add Files 新增檔案 .png

圖 4.按下 Add Files 新增檔案 。

 

圖 5.選擇與開啟要訓練的圖檔 .png

圖 5.選擇與開啟要訓練的圖檔 。

 

第三步:框選類別。

使用多邊形來描繪想辨識的區域。

 

圖 6.使用多邊形框選電容 .png

圖 6.使用多邊形框選電容 。

 

如果使用多邊形框完後,雙擊左鍵,即可結束多邊形框選,如圖 7圖 8

 

圖 7.使用多邊形框選電容 .png

圖 7.使用多邊形框選電容 。

 

圖 8.使用多邊形框選電容 .png

圖 8.使用多邊形框選電容 。

 

第四步:框選樣本圖片並標記類別。

圖 9,在 “Attributes的 attribute name” 欄位輸入 name,接著如圖 10,根據框的編號填入該類別名稱,以本文件為例,是判斷電容,於是填 “capacitor”,填完即可按 X 關閉。

繼續框選下一張樣本圖片,直到所有樣本圖片皆標記好類別為止。

 

圖 9.新增名稱 .png

圖 9.新增名稱 。

 

圖 10.輸入類別名稱 .png

圖 10.輸入類別名稱 。

 

第五步:輸出標記類別檔。

在全部標記完畢後,要輸出標記的檔案,如圖 11,按下在上方 Annotation 中的 Export Annotations (as json) 輸出標記所有圖片類別的 json 檔。

 

圖 11. 輸出標記 json 檔 .png

圖 11. 輸出標記 json 檔 。

 

第六步:將輸出 json 檔放到 data/pcb/train 資料夾內。

將剛剛輸出的 json 檔 放到 data/pcb/train 資料夾內,並確認檔名是否為 “via_region_data.json”,如果不是,請改名成 “via_region_data.json”,如圖 12

 

圖 12. 將輸出標記 json 檔放到 dataset.png

圖 12. 將輸出標記 json 檔放到 data/pcb/train 資料夾。

 

※ 要測試的樣本 data/pcb/val 資料夾內,一樣要做第一步到第六步。

 

 

 

 

 

四、執行 1_train.flow 開始訓練

 

請雙擊【R8_Python3.6_GPU.bat】,打開後點選【檔案】=>【開啟】=>【進入到 OpenR8 底下的 solution 資料夾】=>【選擇 Image_PCB_MaskRCNN_Keras 資料夾】=>【選擇 1_train.flow 開啟】,如圖13、圖14。

 

※如果不支援或不使用 GPU 加速功能時,可改成雙擊【R8_Python3.6_CPU.bat】。

 

圖 13.選擇 1_train.flow .png

圖 13.選擇 1_train.flow 。

 

圖 14.開啟 1_train_cpu.flow .png

圖 14.開啟 1_train_cpu.flow 。

 

※如果樣本圖沒有放在 “data/pcb/”裡面的話,需額外設定 dataPath,如圖 15

 

圖 15.設定 dataPath .png

圖 15.設定 dataPath 

 

※在運行前,如果沒有要沿用之前的 model ,請刪除所有 h5 檔案(但保留 mask_rcnn_coco.h5),不熟悉者建議都不刪除。

 

※在執行前,如果想改變 “訓練模型名稱”、“訓練次數”、“分類類別” ……等參數設定,請看第七章 ― 參數介紹。

 

按下執行開始訓練樣本,直到跳出「Press any key to continue…」。

 

※在按下執行時,python 有可能跳出的錯誤訊息,請看第六章。

 

 

五、執行 2_inference.flow 看訓練結果

 

在執行完 1_train.flow 訓練結束後,開啟 2_inference.flow 來測試圖片,如圖 16圖 17

 

圖 16.選擇 2_inference.flow .png

圖 16.選擇 2_inference.flow 。

 

圖 17.開啟 2_inference.flow .png

圖 17.開啟 2_inference.flow 。

 

填入要測試的樣本路徑與訓練完的 h5 檔路徑,如圖 18圖 19

※如果有執行過 1_train.flow 且成功訓練出 model 者,務必確認圖 19的 h5 檔名稱是否一致。

 

圖 18.填要測試的樣本路徑 .png

圖 18.填要測試的樣本路徑 。

 

圖 19.填要訓練的 h5 樣本路徑 .png

圖 19.填要訓練的 h5 樣本路徑 。

 

按下執行看結果,Mask_R_CNN 和其他顯示結果的方式不太一樣,如果有判斷到類別時,那個區域會是彩色的,反之,如果甚麼都沒抓到就會是一片灰色,如圖 20,在電容的位置是彩色的,代表有被抓出。

 

圖 20. 2_inference.flow 的測試結果 .png

圖 20. 2_inference.flow 的測試結果 。

 

 

六、python 錯誤訊息

 

※出現 “ImportError: No module named 'skimage'”,如圖 21: 解決方法:pip install scikit-image (pip 用法請根據 python 安裝方式自行 pip)

 

圖 21. 出現 .png

圖 21. 出現 “ImportError: No module named 'skimage'”。

 

 

七、參數介紹

 

※更改讀取 h5 檔檔名:圖 22。

※設定類別數量、名稱:圖 23。

※更改 json 名稱:圖 24。

※設置 GPU 數量:圖 25。

config.py 還有一些可能會用到的參數設定,請自行參閱。

 

圖 22.在 capacitor.py 中更改讀取 h5 檔檔名 .png

圖 22.在 capacitor.py 中更改讀取 h5 檔檔名。

 

圖 23. 在 capacitor.py 中設定類別數量 .png

圖 23. 在 capacitor.py 中設定類別數量 。

 

圖 24. 在 capacitor.py 中更改讀取類別 json 名稱 .png

圖 24. 在 capacitor.py 中更改讀取類別 json 名稱 。

 

圖 25. 在 capacitor.py 中增加 GPU 數量設定 .png

圖 25. 在 capacitor.py 中增加 GPU 數量設定 。


延伸閱讀

1.
OpenR8 - 人人都會用的 AI 軟體 (下載)

2.
[OpenR8 解決方案] Image_PCB_SSD512_Caffe (影像分析使用 SSD 512 演算法及 Caffe 函式庫進行 PCB 物件偵測)

3.
[台灣人工智慧學校 2018年校友年會] 產業經驗分享,如何用最少的訓練樣本,得到最好的深度學習影像分析結果,減少一半人力,提升一倍品質

4.
[OpenR8 解決方案] Image_PCB_YOLOv3_Keras (影像分析使用 YOLOv3 演算法及 Keras 函式庫進行 PCB 物件偵測)

[CP 值最好的 AI 人工智慧電腦熱賣中]
硬體採用最新最快的 Titan RTX, RTX-2080Ti-11G, 及 TESLA V100!
視窗圖控介面,易學易用。
硬體優勢:針對深度學習最佳化設計,且經過客戶端 24H 運作驗證。
軟體優勢:事先安裝人工智慧軟體及優化設定,每週提供最新 AI 演算法下載。
公司優勢:專業人工智慧機器人設計公司,資本額一億。
歡迎企業、學校、及公家機關大量採購。
可租用,歡迎來信或來電洽詢。
詳細資料請參閱以下網址: https://tw.leaderg.com/ai_computer