[OpenR8 解決方案] OpenVINO (使用 OpenVINO 進行人臉辨識與物件辨識)

一、OpenVINO

 

OpenVINO 是 Intel 針對深度學習 Inference 跑在 Intel 的硬體(CPU, GPU...)上,所做的一個軟體框架,目的是最佳化執行效能。

在 OpenVINO 的解決方案主要分成兩部分,做人臉辨識性別與年齡以及物件辨識,而做人臉辨識性別與年齡以及物件辨識的解決方案又分CPU 與 MYRIAD 兩種版本,CPU 指的是電腦的 Intel CPU,MYRIAD則是 Intel 為了深度學習特別出的硬體,由於是跑在 Intel 的硬體上,所以不是 Intel 的硬體,理論上是不支援喔!

※ 由於 OpenVINO是載入 IR model,所以需要使用我們的 “Model_optimizer.flow” 解決方案將 Caffe SSD 的 model 轉換成 OpenVINO 的 IR model,詳情見第四章。

 

 

二、Interactive_face_detection_CPU.flow ― 辨識人臉性別與年齡

 

執行此解決方案可以辨識人的性別與年紀,使用解決方案只需兩個步驟。如下:

  1. 載入解決方案

【執行 R8.exe】=>【檔案】=>【開啟】

=>【選擇 solution 下的 OpenVINO 資料夾】

=>【點擊兩下 Interactive_face_detection_CPU.flow】。如下圖1圖2圖3圖4

載入畫面如下圖5

 

圖1. 執行 R8.png

圖1.【執行 R8.exe】。

 

圖2. 檔案 開啟 .png

圖2.【檔案】=>【開啟】。

 

圖3. 點選 solution.png

圖3.【點選 solution/OpenVINO】

 

圖4. 點擊兩下 Interactive_face_detection_CPU.flow .png

圖4.【點擊兩下 Interactive_face_detection_CPU.flow】

 

圖5.載入 Interactive_face_detection_CPU.flow.png

圖5.載入 Interactive_face_detection_CPU.flow。

 

  1. 執行解決方案

 

圖6.執行解決方案.png

圖6.執行解決方案。

 

※結果圖說明:

圖6,偵測出人臉位置,也顯示出人臉的性別與人臉的年紀,其中 M 指的是男性,若是F時則是女性,而後面的 22 是指年紀。

 

※ Interactive_face_detection_MYRIAD.flow 和 Interactive_face_detection_CPU.flow 差別在於是否有 Intel 的 MYRIAD ,如果沒有 MYRIAD 話,會出現圖7,而Interactive_face_detection_MYRIAD.flow 的步驟與 Interactive_face_detection_CPU.flow 相同,開的檔案不同而已。

 

圖7.沒有 MYRIAD 會出現的錯誤.png

圖7.沒有 MYRIAD 會出現的錯誤。

 

 

三、Object_detection_CPU.flow ― 名人人臉辨識

 

使用此解決方案只需兩個步驟。如下:

  1. 載入解決方案

【執行 R8.exe】=>【檔案】=>【開啟】

=>【選擇 solution 下的 OpenVINO 資料夾】

=>【點擊兩下 Object_detection_CPU.flow】。如下圖8圖9圖10圖11。

載入畫面如下圖12。

 

圖8. 執行 R8.png

圖8.【執行 R8.exe】

 

圖9. 檔案 開啟 .png

圖9.【檔案】=>【開啟】

 

圖10. 點選 solution.png

圖10.【點選 solution/OpenVINO】

 

圖11. 點擊兩下 Object_detection_CPU.flow .png

圖11.【點擊兩下 Object_detection_CPU.flow】

 

圖12.載入 Object_detection_CPU.flow.png

圖12.載入 Object_detection_CPU.flow。

 

  1. 執行解決方案

 

圖13.執行解決方案.png

圖13.執行解決方案。

 

圖13結果圖說明:

執行後會持續擷取影像進行名人人臉辨識,在命令提示視窗會顯示偵測結果。

※ Object_detection_MYRIAD.flow 和 Object_detection_CPU.flow 差別在於是否有 Intel 的 MYRIAD ,如果沒有 MYRIAD 話,會出現圖14的錯誤,而Object_detection_MYRIAD.flow 的步驟與 Object_detection_CPU.flow 相同,開的檔案不同而已。

 

圖14.沒有 MYRIAD 會出現的錯誤.png

圖14.沒有 MYRIAD 會出現的錯誤。

 

 

四、Model_optimizer.flow ― 將Caffe model 轉 IR model

 

如果想使用 OpenVINO 來 inference 自己的 caffe model,需先將 caffe model 轉換成 OpenVINO專用的 IR model,更改 Object_detection_CPU.flow 讀取 model 的位置,即可使用 OpenVINO 執行最佳化。

以下是轉檔步驟。

  1. 準備要轉檔的 caffemodel 檔與 prototxt 檔,放在 data/caffe_model 資料夾中,如圖15

 

圖15.放在 caffe_model 資料夾的 caffemodel 檔與 prototxt 檔.png

圖15.放在 caffe_model 資料夾的 caffemodel 檔與 prototxt 檔。

 

  1. 載入解決方案

【執行 R8.exe】=>【檔案】=>【開啟】

=>【選擇 solution 下的 OpenVINO 資料夾】

=>【點擊兩下 Model_optimizer.flow】。如下圖16圖17圖18

 

圖16. 檔案 開啟 .png

圖16.【檔案】=>【開啟】。

 

圖17. 點擊兩下 Model_optimizer.flow .png

圖17. 點擊兩下 Model_optimizer.flow 

 

圖18.載入 Model_optimizer.flow.png

圖18.載入 Model_optimizer.flow。

 

  1. 設定 Output IR model 的資料夾位置,解決方案的範例是設定在 datair_modelface-recognition-celebrity-FP32 中,可自行更改名稱看是否還要存在 face-recognition-celebrity-FP32 資料夾中。

 

圖19.更改存放 IR model 的資料夾.png

圖19.更改存放 IR model 的資料夾。

 

  1. 按下執行,轉換 caffemodel 檔,如圖。

 

圖20.執行 flow 檔將 caffemodel 轉成 IR model.png

圖20.執行 flow 檔將 caffemodel 轉成 IR model。

 

圖21.在指定資料夾存放轉換後的 IR model 檔.png

圖21.在指定資料夾存放轉換後的 IR model 檔。

 

  1. 在指定存放轉換後的 IR model 檔的資料夾新增 labels 檔,且檔名需和 bin 檔、mapping 檔、xml檔的檔名一致,如圖22,其 labels 檔之檔案內容為類別名稱(如同 predefined_classes.txt),但一定要有 20 行,如圖。

 

圖22.新增附檔名為 labels 的檔案.png

圖22.新增附檔名為 labels 的檔案。

 

圖23.附檔名為 labels 的內容.png

圖23.附檔名為 labels 的內容。

 

※ 之後要用自己的 caffe model 來物件辨識時,只需將 Object_detection_CPU.flow 的【OpenVINO_ObjectDetect_ReadNet】objectDetectionModel 欄位改成上述步驟轉換後的 xml 即可(labels 檔一定要產生)。

 

圖24.在 Object_detection_CPU.flow 設定自己的 model 檔.png

圖24.在 Object_detection_CPU.flow 設定自己的 model 檔。

 


延伸閱讀