[OpenR8 解決方案] Image_Classify_ResNet50_Caffe(影像分析使用 ResNet50 演算法及 Caffe 函式庫進行物件分類)

一、Image_Classify_ResNet50_Caffe

 

此 Image_Classify_ResNet50_Caffe是利用 Caffe 框架,使用 ResNet50網路架構來訓練模型,透過已訓練好的模型來分類影像。

主要流程如下圖1。

首先,我們需準備想要讓模型學習的影像,將影像依照類別分別分成不同的資料夾。

接著透過Image_Classify_ResNet50_Caffe中 flow檔依序執行,自動產生三個 txt 清單檔,以此讓模型知道有哪些檔案是要進行訓練測試,以及這些檔案中是分成哪幾種類別,做完這些前處理後,再執行訓練的 flow 檔,訓練完畢後,測試已經訓練好的 model。

 

圖1.Image_Classify_ResNet50_Caffe 影像辨識流程.png

圖1.Image_Classify_ResNet50_Caffe 影像辨識流程。

 

 

二、步驟一:前置處理 – 準備訓練影像

 

此解決方案我們要讓模型辨別影像中人像的年齡,為此我們需要先準備訓練用的影像。

將不同年齡的人像與純背景影像,分別利用資料夾分類,資料夾位置位於data中的Image,如圖2所示。

 

圖2.訓練影像資料夾.png

圖2.訓練影像資料夾。

 

圖3.影像資料夾 20中的影像.png

圖3.影像資料夾 20中的影像。

 

圖4.影像資料夾 30中的影像.png

圖4.影像資料夾 30中的影像。

 

圖5.影像資料夾background中的影像.png

圖5.影像資料夾background中的影像。

 

 

三、步驟二:前置處理 - create_label

 

圖5.1影像資料夾background中的影像.png

 

  1. 目的:

定義 【訓練】 和 【測試】 的影像位置。

  1. 使用說明:

【訓練】train.txt

步驟一:開啟 OpenR8 資料夾,執行 R8.exe。

在OpenR8資料夾底下有兩個用來執行R8.exe的bat檔案,分別為

R8_Python3.6_CPU.bat、R8_Python3.6_GPU.bat,若電腦無GPU的話則執行R8_Python3.6_CPU.bat,若電腦有GPU且解決方案需要使用GPU加速時則可選擇R8_Python3.6_GPU.bat,如圖6所示。

 

圖6.執行bat運行 R8.png

圖6.執行bat運行 R8.exe。

 

步驟二:選擇與開啟解決方案。

開啟第一個flow:1_create_label。

 

圖7.開啟解決方案1_create_label.png

圖7.開啟解決方案1_create_label。

 

步驟三:執行解決方案,產生label.txt、 train.txt、val.txt。

 

圖8.執行解決方案.png

圖8.執行解決方案。

 

圖9.產生三個.png

圖9.產生三個txt。

 

label.txt:產生分類的標籤。

分類標籤與資料夾相同。

 

圖10.label.png

圖10.label.txt。

 

train.txt:產生訓練的列表。

列表為要訓練的影像路徑與對應到的分類,以本方案為例,分類從0開始,因此若為20分類的則對應到0,分類為30的對應到1。

 

圖11.train.png

圖11.train.txt。

 

val.txt:產生測試的列表。

 

圖12.val.png

圖12.val.txt。

 

在1_create_label中,可以從Caffe_Classify_CreateTrainTxt修改參數,選擇要訓練與測試的影像比率是多少,如圖13所示。

 

圖13.更改訓練與測試影像比率.png

圖13.更改訓練與測試影像比率。

 

若將TrainSplitRate設為1,則所有資料夾的影像皆會轉為訓練的影像。

 

 

四、步驟三:訓練模型 – train.txt

 

圖13.1更改訓練與測試影像比率.png  

介紹主要分兩部分,第一點先介紹如何開始做訓練,接著如果有興趣知道每一個流程方塊可觀看第二點之介紹此流程的詳細內容。

  1. 使用說明:訓練模型。

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

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

當此執行完成後會產生訓練好的模型,其模型檔案生成放置,如下圖17。

路徑:OpenR8/solution/Image_Classify_ResNet50_Caffe/data/

檔案名稱1:xxx.Caffemodel

檔案名稱2:xxx. Solverstate

如果裝置未支援 NVIDIA GPU。出現錯誤訊息。請照下圖18圖19操作。

 

圖14.2_train 檔案路徑.png

圖14.2_train 檔案路徑。

 

圖15.載入 2_train.png

圖15.載入 2_train。

 

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

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

 

圖17.訓練完產生模型.png

圖17.訓練完產生模型。

 

圖18.沒有 GPU 的錯誤訊息 - 訓練.png

圖18.沒有 GPU 的錯誤訊息 - 訓練。

 

圖19.沒有 GPU 的設定方式 - 訓練.png

圖19.沒有 GPU 的設定方式 - 訓練。

 

  1. 3_train 流程與參數介紹:

Caffe_初始化:Caffe 框架初始化。

Caffe_訓練

【CaffeObject】接續前面初始化的設定。

【GPU】用來訓練模型的裝置是否需使用 GPU 加速,如果是請將值改為 all;反之,請填空值。(如果選擇是,請確認裝置是否有 GPU)

【SolverPath】主要參數。此為 Caffe 訓練所需要的輸入檔 solver.prototxt,檔案內容包含訓練迭代的次數、訓練的參數以及樣本的清單等。如下圖20圖21。

【continueTrainModelPath】接續之前訓練好的模型繼續訓練。將值填入欲接續訓練的模型路徑,模型副檔名務必為 .caffemodel。

 

圖20.2_train 流程之 caffe_訓練.png

圖20.2_train 流程之 caffe_訓練。

 

圖21.solver.prototxt 內容示意圖.png

圖21.solver.prototxt 內容示意圖。

 

參數說明:

test_iter:一次測試幾張影像。

test_interval:訓練幾輪跑一次測試。

base_lr:learning rate、值越小,訓練起來越精密。

max_iter:設定最多跑幾輪然後停止訓練。

snapshot:設定跑幾輪產生一個模型。

 

 

五、步驟四:測試各訓練階段的模型

 

  1. 目的:用於測試各階段模型的準確度,從中找出合適的模型,避免訓練過度擬合於訓練樣本,而導致測試樣本效果不佳。
  2. 使用說明 :

(1) 測試樣本 : 【開啟 OpenR8】 => 【開啟與載入 3_inference_images.flow】 => 【選擇要測試的模型】=> 【執行 flow】

 

圖22.載入 3_inference_images.flow.png

圖22.載入 3_inference_images.flow。

 

圖23.選擇要測試的模型.png

圖23.選擇要測試的模型。

 

圖24.選擇要測試的圖片資料夾.png

圖24.選擇要測試的圖片資料夾。

 

按下『RUN』執行3_inference_images.flow

 

圖25.執行flow.png

圖25.執行flow

 

圖26.執行內容.png

圖26.執行內容。

 


延伸閱讀

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

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