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

一、ImaAge_PCB_FasterRCNN_Keras

 

透過 Keras 的函式庫,使用 FasterRCNN 方法來偵測 PCB 上面的電容。

首先,我們需準備想要讓模型學習的影像,將影像中的目標框選起來,且將框選的框標記是什麼類別,此目的是為了讓模型知道這個影像中框起來的物件是屬於何物。

標記檔案準備好後,接著剩下只要透過 OpenR8 兩個 flow 檔案,依序執行即可完成訓練與測試。

 

 

二、資料夾介紹

 

此解決方案 Image_PCB_FasterRCNN_Keras 資料夾內容如下圖1圖2

內容主要分為前置處理,訓練以及測試三種用途。

 

圖1.資料夾示意圖.png

圖1.資料夾示意圖。

 

圖2.data 資料夾示意圖.png

圖2.data 資料夾示意圖。

 

  1. 前置處理

前置處理主要為標記框選檔案與執行 .py 檔產生訓練所需的檔案兩部分。

【標記框選檔案】

data 資料夾。

requirements.txt : 紀錄此解決方案需要的軟體版本。

annotation : 放置標記的 xml 檔案。例如 : 1.xml、2.xml 等。

image : 放置想要訓練的影像檔。例如 : 1.png、2.png 等。

trainval.txt : 紀錄那些圖檔與其 xml 是要進行訓練。

test.txt : 記錄哪些圖檔與其 xml 是要進行測試。

 

  1. 訓練模型

訓練模型包含使用者需執行的檔案以及訓練運行的檔案兩部分。

【使用者所需執行之檔案】

1_train.flow。OpenR8 訓練模型的流程檔案。

【訓練運行之檔案】

keras_frcnn 資料夾。

config.pickle、measure_map.py、train_frcnn。

 

  1. 測試模型

【使用者所需執行之檔案】

2_inference.flow。OpenR8 測試模型之流程檔案。下指令執行 .py 檔案。

【測試運行之檔案】

model_frcnn_pcb.hdf5 : 訓練產的的模型,可用來推論其他圖片。

test_one_image.py。測試運行的檔案。

 

 

三、步驟一:前置處理-感興趣區域標記

 

在圖像中框選想要讓模型學習的物件。例如想要讓模型學習電容就準備電容的圖片,接著將影像中的電容框選起來以及將這個框標記為電容。如此一來,模型才會知道這個圖片框起來的區域就是電容。以此類推,想要讓模型學習什麼東西,就準備好圖片與框選好做標記。

因此我們所需準備的檔案包含以下兩項。

  1. 圖像 (想要讓模型學習的影像)

檔案放置位置 : openR8/solution/Image_PCB_FasterRCNN_Keras/data /image

  1. 標記圖像中目標的 xml 檔案 (框選後才會產生的紀錄檔案)

檔案放置位置 : openR8/solution/Image_PCB_FasterRCNN_Keras/data/annotation

 

標記方式可參考 Image_PCB_SSD_Keras 方案範例,只需將路徑改為此解決方案的影像與 xml 路徑。

目標為偵測 PCB 中的電容,我們透過 labelImg.exe (下圖3) 將 PCB 影像中的目標電容框選標記,如下圖10。綠框是框選電容以及將其標記成 capacitor (電容) 的類別。標記完,儲存時會產生 .xml 檔案。

標記步驟方法如下:

第一步:開啟標記軟體

標記軟體位置 openR8/tool/Deep Learning/labelImg,如下圖3,點擊兩下,開啟畫面如圖4:

 

圖3.標籤工具所在位置.png

圖3.標籤工具所在位置。

 

圖4.開啟標籤工具.png

圖4.開啟標籤工具。

 

第二步:設定開啟影像樣本所在資料夾位置。如下圖5。選擇後開啟顯示如下圖6

 

圖5.選擇影像樣本所在的位置.png

圖5.選擇影像樣本所在的位置。

 

圖6.開啟影像樣本所在位置.png

圖6.開啟影像樣本所在位置。

 

第三步:選擇存放類別標記資料夾。如下圖7。選擇後開啟顯示如下圖8

 

圖7.選擇儲存標記 xml 檔案所在的位置.png

圖7.選擇儲存標記 xml 檔案所在的位置。

 

圖8.載入儲存標記 xml 檔案所在的位置.png

圖8.載入儲存標記 xml 檔案所在的位置。

 

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

按下Create RectBox 來框選樣本範圍,接著選擇類別,一張圖片並不侷限框選同一種類別,框好後,就可按下 Save 儲存標記類別的檔案,按 Next Image 繼續框選下一張樣本圖片,直到所有樣本圖片皆標記好類別為止。如下圖9圖10

 

圖9.按下 Create RectBox 來框選樣本 .png

圖9.按下 Create RectBox 來框選樣本 。

 

圖10.選擇框選的所屬類別.png

圖10.選擇框選的所屬類別。

 

註記:標記的軟體 labelImg.exe 已隨 OpenR8 檔案附上,其檔案路徑為openR8 > solution > Image_PCB_SSD_Caffe > labelImg.exe,如上圖3,其使用方法可參考開源機器人俱樂部[ezAI 簡單學AI] labelImg 使用方法 (Windows 版本)

 

 

 

 

 

四、步驟二 : 前置處理-定義訓練與測試的樣本

 

此步驟是定義有哪些圖片是要讓機器學習、哪些圖片是要測試模型用。

  1. 訓練用 : solution/Image_PCB_FasterRCNN_Keras/data/trainval.txt。如下圖11

 

圖11.trainval.png

圖11.trainval.txt

 

  1. 測試用 : solution/Image_PCB_FasterRCNN_Keras/data/test.txt。如下圖12

 

圖12.test.png

圖12.test.txt

 

 

五、步驟三:安裝 Python 以及模組套件

 

※由於此範例會用到 python,請自行安裝 python。此範例所使用到的軟體版本相關如下圖13

 

圖13.軟體版本.png

圖13.軟體版本。

 

 

六、步驟四:訓練模型-2_train

 

前置準備資料完成後,開始訓練模型。

  1. 開啟流程。

使用 OpenR8【開啟 1_train.flow】檔案,載入 1_train,如下圖14圖15

  1. 執行流程。

按下【執行】開始訓練模型,此步驟需花一點時間等待程式建立模型。如下圖16

  1. 執行完成,產生模型。

當此執行完成後會產生訓練好的模型,其模型檔案生成放置,如下圖17。路徑為:檔案根目錄/solution/Image_PCB_FasterRCNN_Keras/data/檔案名稱 1:xxx. hdf5

 

圖14.2_train 檔案路徑.png

圖14.2_train 檔案路徑。

 

圖15.開啟 1_train.png

圖15.開啟 1_train。

 

圖16.執行 1_train 與其執行過程圖.png

圖16.執行 1_train 與其執行過程圖。

 

圖17.執行完成 1_train 產生的 model 檔.png

圖17.執行完成 1_train 產生的 model 檔。

 

 

七、步驟五:測試已訓練好的模型- inference

 

當模型已訓練好後,可以藉由這一個步驟測試訓練出來的模型。

  1. 開啟流程檔案。

使用 openR8 開啟【2_inference.flow】,載入檔案。如下圖18圖19

  1. 設定測試影像與模型。

接著設定需要測試的影像及模型。方法如下圖20圖21

其中測試的影像請放置於: 資料夾根目錄 /solution/Image_PCB_FasterRCNN_Keras/data/image。

  1. 執行,顯示結果。

點選執行。如下圖22

 

圖18.2_inference.flow.png

圖18.2_inference.flow。

 

圖19.載入 2_inference.png

圖19.載入 2_inference。

 

圖20.2_inference 選擇待測試影像.png

圖20.2_inference 選擇待測試影像。

 

圖21.2_inference 選擇待測試的模型.png

圖21.2_inference 選擇待測試的模型。

 

圖22.2_inference 測試結果.png

圖22.2_inference 測試結果。


延伸閱讀

1.
OpenR8 社群版 - 人人都會用的 AI 軟體 (免費下載)

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