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

一、Image_Pill_MaskRCNN_Keras介紹

 

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

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

 

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

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

 

 

二、Image_Pill_MaskRCNN_Keras資料夾介紹

 

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

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

 

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

 

圖2. Image_Pill_MaskRCNN_Keras 位置.png

圖2. Image_Pill_MaskRCNN_Keras 位置。

 

名稱

用途與功能

內容

data 資料夾

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

pill/test、

pill/train、

pill/val、

mask_rcnn_coco.h5(用來當樣本 model 訓練(第一次使用請勿刪除))

logs 資料夾

存放訓練完成後的 model 檔案。

events.out.tfevents.1545010450.S3

mask_rcnn_mask_0020.h5(訓練好的 model 檔案)

src 資料夾

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

__init__.py

config.py

model.py

parallel_model.py

utils.py

visualize.py

surgery.py

tool 資料夾

標記圖檔所用的網頁。

via-2.0.2/via.html

1_train.flow

訓練樣本的解決方案。

 

2_inference.flow

測試樣本的解決方案。

 

表 1.Image_Pill_MaskRCNN_Keras 資料夾介紹。

 

 

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

 

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

 

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

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

 

圖3. 標記網站介面.png

圖3. 標記網站介面。

 

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

點選 Open Dir 來開啟圖片樣本所放的資料夾位置,以這裡的解決方案為例,要訓練圖片放在data/pill/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,根據框的編號填入該類別名稱,以本文件為例,是判斷藥丸,由於有不同種類藥丸,於是填 “pill1”、 “pill2”、 “pill3”等等,填完即可按 X 關閉。

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

 

圖9. 新增名稱.png

圖9. 新增名稱。

 

圖10. 輸入類別名稱.png

圖10. 輸入類別名稱。

 

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

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

 

圖11. 輸出標記 json 檔.png

圖11. 輸出標記 json 檔。

 

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

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

 

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

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

 

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

 

 

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

 

一開始請開啟【OpenR8 程式】,如果電腦有安裝顯示卡,請點選【R8_Python3.6_GPU.bat】執行檔,沒有則點選【R8_Python3.6_CPU.bat】執行檔,如圖13。開啟完【OpenR8 程式】後,請點選【檔案】=>【開啟】=>【進入到 OpenR8 底下的 solution 資料夾】=>【選擇 Image_Pill_MaskRCNN_Keras 資料夾】=>【選擇 1_train.flow 開啟】,如圖14、圖15。

 

圖13. 開啟 OpenR8 程式.png

圖13. 開啟 OpenR8 程式。

 

圖14. 選擇 1_train.flow.png

圖14. 選擇 1_train.flow。

 

圖15. 開啟 1_train.flow.png

圖15. 開啟 1_train.flow。

 

※如果樣本圖沒有放在 “data/pill/”裡面的話,需額外設定 dataset_Path,如圖16。

 

圖16. 設定 dataset_Path.png

圖16. 設定 dataset_Path。

 

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

 

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

 

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

 

 

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

 

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

 

圖17. 選擇 2_inference.flow.png

圖17. 選擇 2_inference.flow。

 

圖18. 開啟 2_inference.flow.png

圖18. 開啟 2_inference.flow。

 

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

 

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

 

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

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

 

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

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

 

按下執行看結果,Mask_R_CNN 和其他顯示結果的方式不太一樣,如果有判斷到類別時,那個區域會標記成一種顏色並框起來顯示類別及相似度,反之,如果甚麼都沒抓到就會沒有標記顏色,如圖21,在藥丸的位置分別標記成不同顏色,代表有被抓出。

 

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

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

 

 

六、參數介紹

 

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

※ 在 “data/predefined_classes.txt” 設定類別名稱:圖23。

※ 更改 json 名稱:圖24。

※ 設置 GPU 數量:圖25。

 

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

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

 

圖23. 在.png

圖23. 在 “data/predefined_classes.txt” 中設定類別名稱。

 

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

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

 

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

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

 

 


延伸閱讀

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

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