一、Image_PCB_YOLOv3_Keras 介紹
Image_PCB_YOLOv3_Keras 是使用 Keras 的 YOLO 第三版— YOLOv3 來判斷目標進行分類、檢測。
YOLO 演算法全稱為 You Only Look Once,它的優勢在於檢測速度與 SSD 差不多快,準確度也算高,這裡的解決方案使用 YOLOv3 來判斷電容的位置,主要的使用流程為下圖 1,每一個步驟於本文件之每一章節會依序詳細介紹。
圖 1.製作訓練樣本的流程 。
二、Image_PCB_YOLOv3_Keras 資料夾介紹
Image_PCB_YOLOv3_Keras 位於 OpenR8 的 solution 資料夾內,其中包含:
- 資料夾:【data 資料夾】、【src 資料夾】。
- flow 檔案:【1_train_cpu.flow】、【1_train_gpu.flow】、【2_inference.flow】。
※初次使用者,建議先只改動 data 資料夾內的檔案內容,等熟悉後,再自行更動至想要的位置。
圖 2.Image_PCB_YOLOv3_Keras 位置 。
圖 3.Image_PCB_YOLOv3_Keras 資料夾 。
名稱 |
用途與功能 |
內容 |
data |
存放樣本圖片、樣本類別、數據庫的地方,其資料夾內容表 2會做說明。 |
train_annot_folder、 train_image_folder、 valid_annot_folder、 vaild_image_folder。 |
1_train_cpu.flow 1_train_gpu.flow |
選擇 CPU 或 GPU 模式來訓練樣本。 |
|
2_inference.flow |
測試訓練樣本。 |
|
config.json config_gpu.json |
1_train_cpu.flow 或1_train_gpu.flow 參數設定時會用到,用來設定訓練用的一些參數,關於參數的說明,可參考表 3。 |
|
train.py predict.py callbacks.py evaluate.py gen_anchors.py generarot.py voc.py yolo.py |
1_train_cpu.flow、1_train_gpu.flow 及 2_inference.flow 會用到的 python 檔。 |
|
表1. Image_PCB_YOLOv3_Keras 資料夾介紹。
圖 4. Image_PCB_YOLOv3_Keras 的 data 資料夾內容 。
data 資料夾內容 |
用途 |
資料夾/檔案 內容 |
train_annot_folder |
放置訓練樣本類別的資料夾。 |
存放透過 labelImg.exe 標記完的樣本類別檔案 (xml 檔)。 |
train_image_folder |
放置訓練樣本圖片的資料夾。 |
存放樣本圖片。 |
valid_annot_folder |
放置測試樣本類別的資料夾。 |
存放透過 labelImg.exe 標記完的測試樣本類別檔案(xml 檔)。 |
vaild_image_folder |
放置測試樣本圖片的資料夾。 |
存放測試樣本圖片。 |
表2. Image_PCB_YOLOv3_Keras 的 data 資料夾介紹。
三、準備訓練樣本圖
我們要訓練之前時,要先決定好方向,以此文件為例,我們想檢測電容所在的位置,所以我們須將樣本圖片一一標示它們的類別(電容),才能加入訓練。
第一步:開啟標記軟體。
開啟 “LABELIMG.EXE” 來標記我們想訓練的樣本類別。
圖 5. LABELIMG.EXE 的介面 。
第二步:選擇樣本圖片存放資料夾。
點選 Open Dir 來開啟圖片樣本所放的資料夾位置,以下圖 6為例,將圖片放在 data/ train_image_folder 中(根據每個人放的位置,資料夾的位置也不同,第一次使用建議放在 data /train_image_folder 取代原本的圖),然後按下【選擇資料夾】。
圖 6.開啟樣本圖檔所在的位置 。
第三步:選擇存放類別標記資料夾。
點選 Change Save Dir 選擇存放類別標記資料夾位置,以下圖 7為例,將圖片放在 datatrain_annot_folder 中(根據每個人放的位置,資料夾的位置也不同,第一次使用建議放在 datatrain_annot_folder 取代原本的標記檔案),然後按下【選擇資料夾】。
圖 7.選擇樣本圖檔標記類別後所存放的資料夾位置 。
第四步:框選樣本圖片並標記類。
按下 Create RectBox 來框選樣本範圍,接著選擇類別,一張圖片並不侷限框同一種類別,框好後,按下 Save 儲存標記類別的檔案。
按 Next Image 繼續框選下一張樣本圖片,直到所有樣本圖片皆標記好類別為止。
圖 8.樣本圖檔 。
圖 9.按下 Create RectBox 來框選樣本 。
圖 10.選擇樣本類別後按下 OK 。
圖 11.框好樣本類別後按下 Save 。
圖 12.按下 Next Image 到下一張圖片繼續框選類別 。
※有關於其他 labelImg.exe 的其他使用方法,請參考[ezAI 簡單學AI] labelImg 使用方法 (Windows 版本)。
四、執行 1_train_cpu.flow 或 1_train_gpu.flow
在【OpenR8 資料夾】底下有一個【R8.exe】執行檔。如下圖 13。滑鼠點擊兩下即可執行 R8.exe。
圖 13.執行 R8.exe 。
執行 R8.exe 後,第一次登入需輸入帳號密碼。如下圖 14。
Open Robot ID (Email) : 登入開源機器人俱樂部的帳號。
Password : 登入開源機器人俱樂部會員的密碼。
圖 14.登入開源機器人帳號 。
請點選【File】=>【Language】=>【繁體中文】=>【確定】。如下圖 15。 點選完,請重新啟動 OpenR8。關閉 OpenR8,再次執行 R8.exe。即可顯示繁體中文介面。如下圖 16。
圖 15.變更語言成為繁體中文介面 。
圖 16.繁體中文介面 。
請點選【檔案】=>【開啟】=>【進入到 OpenR8 底下的 solution 資料夾】=>【選擇 Image_PCB_YOLOv3_Keras 資料夾】=>【選擇 1_train_cpu.flow 開啟】或【選擇 1_train_gpu.flow 開啟】,如圖 18、圖 19。
※可根據自己執行電腦的硬體設備是否有支援 GPU 加速來選擇不同的檔案,如果有支援 GPU,可以改選擇 1_train_gpu.flow 來加速訓練,如果不支援 GPU,請選擇 1_train_cpu.flow 訓練,如圖 21。
※在運行前,請先確認 PKL 檔案是否已刪除,如圖 17 。
※在運行前,如果沒有要沿用之前的 model ,請刪除所有 h5 檔案(但保留backend.h5)。
圖 17.刪除 PKL 檔。
圖 18.選擇 1_train_cpu.flow。
圖 19.開啟 1_train_cpu.flow。
- python:
使用 python 函式執行 train.py 檔來訓練樣本。
輸出字串:預設不填寫參數,如果需要看回傳的內容時,可自行新增參數。
py 路徑:要執行的 py 檔案,這裡要執行的是【train.py】。
參數:要傳給執行的 py 檔案,所需的參數,這裡傳的是【-c config.json】。
python 路徑:預設不填寫參數,若【train.py】並不在原本的位置(Image_PCB_SSD_Keras 的資料夾內)時,需自行新增參數修改【train.py】路徑。
圖 20.1_train_gpu.flow 的 python 函式 。
確認完所有參數後,即可按下執行開始訓練樣本,直到跳出「Press any key to continue…」。
※在執行前,如果想改變 “訓練模型”、“訓練次數”、“分類類別” ……等參數設定,請看第六章 ― config.json。
如果開啟的檔案為【1_train_gpu.flow 】時,參數也有些變化。
圖 21.1_train_gpu.flow 的 python 函式
- python:
使用python 函式執行 train.py 檔來訓練樣本。
輸出字串:預設不填寫參數,如果需要看回傳的內容時,可自行新增參數。
py 路徑:要執行的 py 檔案,這裡要執行的是【train.py】。
參數:要傳給執行的 py 檔案,所需的參數,這裡傳的是【-c config_gpu.json】。
python 路徑:預設不填寫參數,若【train.py】並不在原本的位置(Image_PCB_SSD_Keras 的資料夾內)時,需自行新增參數修改【train.py】路徑。
五、執行 2_inference.flow 看訓練結果
在執行完 1_train_cpu.flow 或 1_train_gpu.flow 訓練結束後,開啟 2_inference.flow 來測試圖片,如圖 22、圖 23。
圖 22.選擇 2_inference.flow 。
圖 23.開啟 2_inference.flow 。
- python:
python 函式執行 train.py 檔來訓練樣本。
輸出字串:預設不填寫參數,如果需要看回傳的內容時,可自行新增參數。
py 路徑:要執行的 py 檔案,這裡要執行的是【predice.py】。
參數:要傳給執行的py檔案,所需的參數,這裡傳的是【-c config.json -i data/valid_image_folder/13.png】。
python 路徑:預設不填寫參數,若【predice.py】並不在原本的位置(Image_PCB_SSD_Keras 的資料夾內)時,需自行新增參數修改【predice.py】路徑。
圖 24. 2_inference.flow 的 python 函式
※請根據訓練時,使用 config.json 還是 config_gpu.json 來填寫上面參數紅字部分,舉例:【-c config_gpu.json -i data/valid_image_folder/13.png】。
確認完參數後,即可按下執行看結果。
圖 25. 2_inference.flow 的測試結果。
※補充說明:
圖 24 的函式中,參數欄位【-c config.json -i data/valid_image_folder/13.png】,
如果要測試其他圖片:
請將 data/valid_image_folder/13.png 改成想測試的圖片路徑,舉例 data/valid_image_folder/11.png。
如果要測試整個資料夾的圖片:
請將 data/valid_image_folder/13.png 改成想測試資料夾路徑,舉例 data/valid_image_folder。
六、config.json介紹
config.json 與 config_gpu.json 的差異在於 “gpus” 填入的是 “1” 、 “0” 或是 “” 的差異,當 “gpus” : “” 時,表示不使用 GPU 加速。
圖 26. config_gpu.json 的內容 。
圖 26為config.json 的內容,其中,有可能會變動到的參數如下表 3。
參數名稱 |
對應的參數值 |
參數說明 |
labels |
["capacitor"] |
標示類別的名稱,本文件為例,只有標示“capacitor”而已,如果想再增加類別,其樣式為 ["capacitor","新增加類別名稱","新增加類別名稱2"…….] 以此類推,如圖 27。 |
train_image_folder |
"data/train_image_folder/" |
放訓練樣本圖片的資料夾位置。 |
train_annot_folder |
"data/train_annot_folder/" |
放訓練樣本標記類別的資料夾位置。 |
gpus |
“” |
如果有要運行 GPU 加速時,根據想要運行的 GPU 數量改變數字,假設有兩個 GPU,想使用後來裝的 GPU 時,可將值改為 “1”,若只有一個 GPU 時,其值為 “0”。 |
saved_weights_name |
“pcb.h5” |
讀取 yolo model 的檔案名稱。 |
valid_image_folder |
"data/ valid_image_folder/" |
放置測試樣本圖片的資料夾位置。 |
valid_annot_folder |
"data/ valid _annot_folder/" |
放置測試標記類別的資料夾位置。 |
表3.config.json 的參數介紹。
圖 27. labels 增加類別 。
圖 28. gpus 增加 gpu 數量 。
硬體採用最新最快的 Titan RTX, RTX-2080Ti-11G, 及 TESLA V100!
視窗圖控介面,易學易用。
硬體優勢:針對深度學習最佳化設計,且經過客戶端 24H 運作驗證。
軟體優勢:事先安裝人工智慧軟體及優化設定,每週提供最新 AI 演算法下載。
公司優勢:專業人工智慧機器人設計公司,資本額一億。
歡迎企業、學校、及公家機關大量採購。
可租用,歡迎來信或來電洽詢。
詳細資料請參閱以下網址: https://tw.leaderg.com/ai_computer