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

一、Image_Classify_AlexNet_Caffe

 

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

主要流程如下圖1。

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

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

 

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

圖1.Image_Classify_AlexNet_Caffe 影像辨識流程。

 

 

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

 

此解決方案我們要讓模型辨別兩種飲料包裝,分別是咖啡和FIN,為此我們需要先準備訓練用的影像。

將兩種類別的影像,分別利用資料夾分類,資料夾位置位於data中的Image,如圖2所示。

 

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

圖2.訓練影像資料夾。

 

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

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

 

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

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

 

 

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

 

圖4.1影像資料夾 FIN中的影像.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,如圖5所示。

 

圖5.執行bat運行 R8.png

圖5.執行bat運行 R8.exe.

 

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

開啟第一個flow:1_create_label。

 

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

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

 

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

 

圖7.執行解決方案.png

圖7.執行解決方案。

 

圖8.產生三個txt.png

圖8.產生三個txt。

 

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

分類標籤與資料夾相同。

 

圖9.label.png

圖9.label.txt。

 

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

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

 

圖10.train.png

圖10.train.txt。

 

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

 

圖11.val.png

圖11.val.txt。

 

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

 

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

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

 

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

 

 

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

 

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

 

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

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

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

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

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

路徑:OpenR8/solution/Image_Classify_AlexNet_Caffe/data/

檔案名稱1:xxx.Caffemodel

檔案名稱2:xxx. Solverstate

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

 

圖13.2_train 檔案路徑.png

圖13.2_train 檔案路徑。

 

圖14.載入 2_train.png

圖14.載入 2_train。

 

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

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

 

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

圖16.訓練完產生模型。

 

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

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

 

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

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

 

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

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

Caffe_訓練:

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

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

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

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

 

圖19.2_train 流程之 caffe_訓練.png

圖19.2_train 流程之 caffe_訓練。

 

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

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

 

參數說明:

test_iter:一次測試幾張影像。

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

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

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

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

 

 

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

 

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

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

 

圖21.載入 3_inference_images.flow.png

圖21.載入 3_inference_images.flow。

 

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

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

 

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

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

 

按下『RUN』執行3_inference_images.flow

 

圖24.執行flow.png

圖24.執行flow。

 

圖25.執行內容.png

圖25.執行內容。

 

 

六、如何使用此範例來執行自己想要訓練的影像

 

若想要訓練自己的影像,我們需要先自己準備訓練用的影像。

比如說我們準備一組手勢辨識,分別為手勢比0~5,與沒有比手勢的影像,然後作資料夾分類,如圖26所示。

 

圖26.影像樣本.png

圖26.影像樣本。

 

圖27.資料夾0 手勢比0 .png

圖27.資料夾0(手勢比0)。

 

圖28.資料夾1 手勢比1 .png

圖28.資料夾1(手勢比1)。

 

圖29.資料夾no 無手勢 .png

圖29.資料夾no(無手勢)。

 

將整理好的影像資料夾搬到data/image底下,如圖30所示。

 

圖30.將整理好的影像資料夾搬到.png

圖30.將整理好的影像資料夾搬到data/image。

 

需要注意的是,由於原先的範例只有兩個分類,而現在的測試樣本有7個分類,因此我們需要對data資料夾中的deploy.prototxt、train.prototxt作相對應的修改。

開啟train.prototxt、deploy.prototxt,找到num_output參數,此參數為分類要分類為幾個類別,因此要將裏頭的2修改為目前分類的數目7,如圖31、圖32所示。

 

圖31.修改train.prototxt.png

圖31.修改train.prototxt。

 

圖32.修改deploy.prototxt.png

圖32.修改deploy.prototxt。

 

修改完成後一樣依序執行解決方案中的flow檔案,即可成功完成訓練與生成模型。


延伸閱讀

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

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