【Intel OpenVINO?教學】不用寫程序也能輕松上手 AI 模型 分析、優化、部署─DL Workbench 圖形化接口工具簡介

慧聰教育網 2021-06-18 14:34 來源:慧聰教育網作者:許哲豪

歐尼克斯實境互動工作室        許哲豪        2021/03/8

【Intel OpenVINO?教學】不用寫程序也能輕松上手 AI 模型 分析、優化、部署─DL Workbench 圖形化接口工具簡介

【慧聰教育網】看過或玩過「神奇寶貝(寶可夢)」的朋友都知道,訓練家們要根據怪獸的屬性(火系、草系、電系等)給予適當的培訓,再挑選合適的對象及不斷的對戰磨煉才能有好的戰斗表現。同樣地,AI 模型訓練師也是如此,依據不同的應用場景(圖像分類、對象檢測、圖像分割等),挑選適合在指定的硬件(CPU, GPU, VPU, FPGA 等)上推理的模型,并反復調整合適的超參數,如此才能有好的成果。

由于這樣的調參工作需要耗費大量的時間及精力才能完成,傳統上只靠一堆數字報表來分析調整方向,所以非常仰賴專業工程師的能力才能完成。因此 Intel OpenVINO Toolkit(以下簡稱 OpenVINO)在 2019 R3 版之后提供了一項非常方便的網頁式圖形化接口工具「DL Workbench」(Deep Learning Works Benchmark),讓不會寫程序、非專業的工程師也能輕易上手進行模型選用、下載、校正、參數調整、效能比較、瓶頸分析、優化及打包部署到目標硬件平臺上。

接下來就從“如何安裝 DL Workbench”、“DL Workbench 工作流程”進行簡單說明,最后再以“實際案例操作:SSD 對象檢測”完整說明 AI 模型的分析、優化及部署的步驟。

*如何安裝 DL Workbench

目前 OpenVINO 提供多種安裝方式,其中最簡單的方式就是直接到 Docker Hub下載(Pull)映像(Images)。如果還不熟悉如何使用 Docker 安裝歩驟的朋友,可以參考“‘Intel OpenVINO 教學’如何利用 Docker 快速構建 OpenVINO 開發環境” [1]。當然如果想直接在命令行下安裝 DL Workbench 的朋友也可參考官網說明[2]。 不過這里提醒一下,DL Workbench 只有在 Linux(Ubuntu 18.04/20.04) Docker 環境下才能完整使用 Intel 系列的 CPU, iGPU, Myriad(NCS2), HDDL(VPU)等硬件,而在 Windows 和 macOS 使用 Docker 的朋友則只能使用 CPU。以下說明皆以 Linux 環境做為說明。

如果使用 Docker 安裝,只需按照下列指令操作即可完成安裝。接著啟動 DL Workbench 工作環境,啟動時可根據不同需求加上 -ENABLE_GPU 或 - ENABLE_MYRIAD 或 -ENABLE_HDDL 指令來增加硬件推理能力,如 Fig. 1 所示。

推理

【Intel OpenVINO?教學】不用寫程序也能輕松上手 AI 模型 分析、優化、部署─DL Workbench 圖形化接口工具簡介

啟動后,會出現 Login token(一長串數字可先復制起來備用)及一個本地端網址 (http://127.0.0.1:5665/?token=xxxxxx),接著將鼠標移至網址處按下左鍵,點選打開鏈接(Open Link),或者直接復制這一長串網址貼到瀏覽器上,即可進入 DL Workbench 網頁式操作畫面,如 Fig. 2 步驟 4 所示。若想結束 DL Workbench,除了關閉網頁外,還要回到終端按下 [Ctrl + C] 回到普通命令行狀態。

【Intel OpenVINO?教學】不用寫程序也能輕松上手 AI 模型 分析、優化、部署─DL Workbench 圖形化接口工具簡介

【Intel OpenVINO?教學】不用寫程序也能輕松上手 AI 模型 分析、優化、部署─DL Workbench 圖形化接口工具簡介

Fig. 1 終端命令行成功啟動 DL Workbench 界面。(OmniXRI Mar. 2021 整理制作)

如果下次想快速啟動 DL Workbench,可不用執行上面的操作,直接開啟網頁,輸入網址 http://127.0.0.1:5665 ,界面會出現要求輸入 Login Token,此時再將剛才的 token 貼上,按下 “Start” 便可直接啟動。最后按下網頁左上角“Create”創建新的工作配置就可以開始測試了,如 Fig. 2 所示。

【Intel OpenVINO?教學】不用寫程序也能輕松上手 AI 模型 分析、優化、部署─DL Workbench 圖形化接口工具簡介

【Intel OpenVINO?教學】不用寫程序也能輕松上手 AI 模型 分析、優化、部署─DL Workbench 圖形化接口工具簡介

Fig. 2 快速啟動 DL Workbench 網頁操作步驟。(OmniXRI Mar. 2021 整理制作)

*DL Workbench 工作流程

在開始實際操作前,先大致說明一下整個 DL Workbench 的工作流程,方便后面理解實際操作項目,如 Fig. 3 所示。

1.  安裝(Install):前面已經介紹過,除了可直接一步一步安裝在計算機上,也可支持使用 Docker 映像方式安裝 DL Workbench。另外 OpenVINO 也支持以 Dev-Could 方式安裝,方便沒有采購硬件的人,先利用 Intel 提供的云端測試平臺來選擇合適的硬件。

2.  模型(Model):不會設計 AI 模型的人可通過 OpenVINO 內建的模型下載器(Model Downloader)選用 Intel 已預訓練好參數的模型(Pre-Trained Open Model Zoo),或者使用公開模型(Public)。當然也可支持自己開發并訓練好的模型。不過這里只支持 Caffe, MXNet, ONNX, TensorFlow 和 PyTorch 格式的模型轉換,最后會都轉換成 OpenVINO 支持的中間表示(Intermediate Representation, IR)格式模型網絡描述及權重文件(*.xml, *.bin)。

3.  準備模型(Prepare Model):由于導入的模型有可能過大,因此可通過 OpenVINO 內建的優化工具(Optimizer)協助處理網絡架構調整以減少計算量。另外,一般訓練好的模型參數(網絡權重)多半都是使用 32 位浮點數(FP32) 來表示,為實現更好的推理效果,這里也可協助校正(Calibration),將 32 位浮點數(FP32)轉換到 16 位浮點數(FP16),甚至是 8 位整數(INT8)。雖然在不同場景下可能會損失幾個百分點的推理精度,但好處是參數所需內存可縮小至 1/2 到 1/4 間,而指令周期則可增加 2 到 3 倍。

4.  數據集(Dataset):為了測試選用的模型,這里可以導入(Import)自行準備符合常見的公開數據集(如 ImageNet, Pascal VOC, MS COCO 等)格式的數據集?;蛘呤褂蒙?Generate)高斯噪聲變相產生小型數據集來輔助簡易性測試,但請注意這種方式僅適用圖像分類模型測試,且因不含標注數據,所以不適用精確度測量及校準工作。如果手上沒有現成的數據集,亦可參考官網 [3] 說明,下載常見的 ImageNet, Pascal VOC, Microsoft COCO 等公開數據集。

5.  建立基準(Benchmark):準備好模型、數據集及選用欲執行的硬件環境后,便可根據平行流(Parallel Streams)及批次數量(Batch Size)設置值開始進行推理并建立一個基準點(如 Fig. 4a),其內容包含產出速度(Throughout, Frame Per Second, FPS)、延遲(Latency, ms)。若不滿意推理結果,則可重新調整上述參數,建立多個基準點,方便后續比較哪種組合的效果更好。

6.  分析(Analyze):為了更容易理解模型每個環節的工作負擔,這里提供了許多可視化表格及圖形來幫助理解,包含模型主要執行耗時分布(Execution Time by Layer)圓餅圖(如 Fig. 4b)、每一層(Layers)的結構、名稱、推理耗時、輸出 精確度(如 Fig. 4c),模型整體網絡節點連接關系圖,模型優化前后(IR 及 nGraph) 的網絡結構(如 Fig. 4d),另外還會搭配顏色表示各節點耗時,方便后續模型建立者調整結構及進一步的參數。

7.  部署(Deploy):待反復步驟 5 和 6 找到最佳效能點后,便可打包部署到實際硬件上執行,如此就能輕松完成模型分析、優化、部署工作。不過要注意的是這項功能目前僅提供 Ubuntu(Linux)使用。

若想更完整了解以上說明步驟,也可參考官方提供的基礎教學視頻[4]及高級教學視頻[5]。

【Intel OpenVINO?教學】不用寫程序也能輕松上手 AI 模型 分析、優化、部署─DL Workbench 圖形化接口工具簡介

【Intel OpenVINO?教學】不用寫程序也能輕松上手 AI 模型 分析、優化、部署─DL Workbench 圖形化接口工具簡介

   

Fig. 3 DL Workbench 工作流程圖。(OmniXRI Mar. 2021 整理制作)

【Intel OpenVINO?教學】不用寫程序也能輕松上手 AI 模型 分析、優化、部署─DL Workbench 圖形化接口工具簡介

   

Fig. 4 DL Workbench 可視化工具,(a)輸出速度/延遲時間基準點圖,(b)各層運行時間圓餅圖,(c)各層信息表,(d)網絡結構圖及耗時表示。(OmniXRI Mar. 2021 整理制作)

*實際案例操作:SSD 對象檢測

接下來就用一個實際的例子來說明如何操作 DL Workbench。

1.數據集預處理

如果手上沒有現成的數據集可供測試,可以參考官網[6]的說明下載需要的公開數據集及標注檔(Annotations)。這里以 COCO 2014 數據集舉例說明。點選網頁[6] 上 Download COCO Dataset 下的[2014 Val images](約 6.2G Byte)和[2014 Train/Val annotations]( 約 241M Byte) 下載圖像集 (val2014.zip) 和標注文檔 (annotations_trainval2014.zip)。

接著建立一個文件夾(/home/<用戶名稱>/Work)來存放這兩個文件。

選擇網頁[6] Cut COCO Dataset 下的 [the script to cut datasets](cut_dataset.py)另存新文件到剛才建立的文件夾中。最后執行數據集減量(cut)操作,只保留少部份文件,方便 DL Workbench 導入(import)測試,完成后會自動產生新的壓縮文件并存放在 /home/<使用名稱>/Work/subsets/coco_subset_10_29.tar.gz。完整執行命令如下所示。

【Intel OpenVINO?教學】不用寫程序也能輕松上手 AI 模型 分析、優化、部署─DL Workbench 圖形化接口工具簡介

如果想自行準備數據集,可參考官網[7],其中 Common Objects in Context (COCO)就有說明 COCO 文件安排格式,如 Fig. 5 所示。

【Intel OpenVINO?教學】不用寫程序也能輕松上手 AI 模型 分析、優化、部署─DL Workbench 圖形化接口工具簡介

Fig.5 DL Workbench 自備 COCO 數據集格式,(a)一般分類/對象檢測,(b)圖像語義分割,(c)超分辨率。(OmniXRI Mar. 2021 整理制作)

2.導入模型及轉換參數精度

為了方便后續同時測試 CPU 及 Neural Compute Stick 2 (MYRIAD),可使用下列命令啟動DLWorkbench。

【Intel OpenVINO?教學】不用寫程序也能輕松上手 AI 模型 分析、優化、部署─DL Workbench 圖形化接口工具簡介

不過這里經測試后發現,如果你的計算機上沒安裝標準版的 Distribution of OpenVINO toolkit for Linux[8],而只有安裝 Linux Docker 環境時,將無法使用 iGPU 和 NCS2(MYRIAD)。如果使用 Windows Docker 環境(Windows 10 + Widnows Subsystem for Linux 2 [WSL2] + Ubuntu 18.04)時則只能使用 CPU,因為目前微軟在 WSL2 上 GPU 和 USB 驅動程序支持性仍不完整。

接著就可以進入 DL Workbench 網頁操作界面,開始設置主動配置(Active Configurations)。這里需要設置四個項目,包括模型(Models)、目標(Target)、環境 (Environment)及數據集(Dataset)。使用前要確保網絡暢通,因為接下來的工作需要從網絡上下載許多數據。

首先按下“Create”鍵創建一組新的配置,導入(Import)現成的公開模型及預訓練好的模型,由于在線預訓練好的模型項目太多,可以直接輸入模型名稱快速檢索想要的模型。由于這個范例要測試對象檢測功能,所以選用「ssd_mobilenet_v2_coco」,再來選擇模型的參數精度 (FP16/FP32) 進行轉換(Convert),完成后就會在模型區出現模型名稱、產生日期、參數精度、模型大小,狀態區會顯示是否還在傳輸中,完成后會產生一個綠色的對勾。完整流程如 Fig. 6 所示。

【Intel OpenVINO?教學】不用寫程序也能輕松上手 AI 模型 分析、優化、部署─DL Workbench 圖形化接口工具簡介

Fig. 6 設置 DL Workbench 推理模型流程。(OmniXRI Feb. 2021 整理制作)

如果不想使用現成的模型,也可切換到原始模型(Original Model)頁面,根據系統要求自行提供對應格式的模型(網絡)及參數(權重值),再按“Import Model”即可導入自定義模型。目前可支持 OpenVINO IR, Caffe, MXNet, ONNX, TensorFlow 等格式。

【Intel OpenVINO?教學】不用寫程序也能輕松上手 AI 模型 分析、優化、部署─DL Workbench 圖形化接口工具簡介

Fig. 7 DL Workbench 導入自定義模型。(OmniXRI Mar. 2021 整理制作)

3.導入數據集

點選 Validation Dataset 旁的“Import”鍵,進入導入驗證數據集頁面,按“Choose File”鍵,選擇歩驟 1 產生的 coco_subset_10_29.tar.gz,按下“Import”,即可完成導入數據集。如 Fig. 8 所示。

【Intel OpenVINO?教學】不用寫程序也能輕松上手 AI 模型 分析、優化、部署─DL Workbench 圖形化接口工具簡介

   

Fig. 8 DL Workbench 導入數據集。(OmniXRI Mar. 2021 整理制作)

4.設置目標/環境

這里可看到目前有 CPU 和 MYRIAD (NCS2)兩種裝置可供選擇,可先選擇其中一種 (CPU),點擊模型和數據集后即可按下頁面最下方的“Create”建立第一種配置。如 Fig. 9 所示。這里要注意的是,模型及數據集沒有準備好之前(尚在傳輸或轉換中)是無法設置目標及環境。

【Intel OpenVINO?教學】不用寫程序也能輕松上手 AI 模型 分析、優化、部署─DL Workbench 圖形化接口工具簡介

Fig. 9 DL Workbench 設置目標環境并建立配置。(OmniXRI Mar. 2021 整理制作)

5.建立基準點

按下“Create”建立第一組配置后,就會進入配置頁面,并進行第一次推理,自動產生第一個基準點。推理時根據執行硬件的不同,可能需要等待一小段時間,完成后會得到最佳的輸出速度(Best Throughout, FPS)、延遲時間(Respective Latency, ms)及推理精確度(Accuracy),并在效率綜合圖表上繪出一個參考點。

通常預設為單獨推理(Single Inference),用戶可自由定義要測試的并行推理 (Parallel Infers)及批次大小(Batch Size),再按下“Execute”鍵來測試不同條件的推理效果。如果覺得一直手動調整太麻煩,也可使用組推理(Group Inference),直接點擊要測試的組合,按下“Execute”鍵,然后泡杯咖啡慢慢等結果出來。從產出的圖表就可一眼看出哪種組合的效果最好,做為后續打包輸出的依據,如 Fig. 10 所示。

【Intel OpenVINO?教學】不用寫程序也能輕松上手 AI 模型 分析、優化、部署─DL Workbench 圖形化接口工具簡介

【Intel OpenVINO?教學】不用寫程序也能輕松上手 AI 模型 分析、優化、部署─DL Workbench 圖形化接口工具簡介

Fig. 10 DL Workbench 建立基準點及結果圖。(OmniXRI Mar. 2021 整理制作)

6.基準點效能比較

測試效果除了可以使用單獨或組測試外,也可進行多種硬件的推理效果比較。首先點擊頁面上方的“Create”重新回到步驟 4,此時只需改選裝置為[Intel Movidius Myriad X VPU] (NCS2),其它模型和數據集不變,移到頁面最下方按下“Create”鍵就能新增一組配置,再次回到步驟 5。此時可參考步驟 5,將所有操作重復一遍,得出相同參數結果方便進行比較。

接著按下“Compare”就能進入比較頁面進行兩組配置的測試結果比較,若有兩組以上配置,則一次只能勾選兩組進行比較。這里除了基本效果圖表外,還有平均延遲時間、各層運行時間及更多圖表信息,可根據需求自行參考,如 Fig. 11 所示。

【Intel OpenVINO?教學】不用寫程序也能輕松上手 AI 模型 分析、優化、部署─DL Workbench 圖形化接口工具簡介

Fig. 11 DL Workbench 多配置基準點效能比較。(OmniXRI Mar. 2021 整理制作)

7.上傳圖像測試

經過上面一連串設置及找到最優配套后就可以來測試一下模型推理能力,這里支持直接上傳單張測試圖像來實驗。首先切換到“Test”頁面,按下“Select Images”上傳待測試的圖像,或者直接把圖像拉到這個框里面。接著按下“Test”進行測試,預測(Predicitions) 結果就會出現在右方。顯示結果內容包括一組可調的臨界值 (Threshold)和高于臨界的對象,同時會顯示對象的分類編號(Class ID #)和置信度 (Confidence)。點擊對象編號時,左側還會繪制出對應的內容。若覺得檢測出的對象太少,可將臨界值調低,再確認一下。

另外目前 COCO 檢測結果只有用數字編號(Class #00)表示,并沒有直接卷標(Label)文字標示,不容易直接確認結果。如果想更確認編號對應內容,可參考[9]說明。一般 COCO 有 91 分類和 80 分類(從 91 類刪除部份),而現在對應的是 91 分類的標簽。

接著就用幾張圖來實驗一下結果,第一組貓和狗,一張對象重迭(Ex. 1-1)、一張物件分開(Ex. 1-2)。第二組蘋果和香蕉,一張對象重迭(Ex. 2-1)、一張物件分開(Ex. 2-2)。初步實驗結果可看出 SSD_MobileNet_v2_COCO 這組預練訓模型對于重迭的對象似乎分辨能力較弱,而較大的對象則辨識能力尚可接受。不過這樣的實驗數據太少,所以結論可能不完全正確,僅供參考。測試內容如 Fig. 12 所示,而測試結果如 Fig. 13~16 所示。

【Intel OpenVINO?教學】不用寫程序也能輕松上手 AI 模型 分析、優化、部署─DL Workbench 圖形化接口工具簡介

Fig. 12 DL Workbench 進行對象檢測流程及測試樣本圖像。(OmniXRI Mar. 2021 整理制作)

【Intel OpenVINO?教學】不用寫程序也能輕松上手 AI 模型 分析、優化、部署─DL Workbench 圖形化接口工具簡介

Fig. 13 Ex. 1-1 對象檢測實驗結果。(OmniXRI Mar. 2021 整理制作)

【Intel OpenVINO?教學】不用寫程序也能輕松上手 AI 模型 分析、優化、部署─DL Workbench 圖形化接口工具簡介

Fig. 14 Ex. 1-2 對象檢測實驗結果。(OmniXRI Mar. 2021 整理制作)

【Intel OpenVINO?教學】不用寫程序也能輕松上手 AI 模型 分析、優化、部署─DL Workbench 圖形化接口工具簡介

Fig. 15 Ex. 2-1 對象檢測實驗結果。(OmniXRI Mar. 2021 整理制作)

【Intel OpenVINO?教學】不用寫程序也能輕松上手 AI 模型 分析、優化、部署─DL Workbench 圖形化接口工具簡介

Fig. 16 Ex. 2-2 對象檢測實驗結果。(OmniXRI Mar. 2021 整理制作)

8.打包輸出

為了后續更方便地部署到對應目標工作環境,并且讓編程人員能直接編寫及呼叫對應函數,這里還提供打包輸出,不過目前只支持 Linux。打包內容包含所選擇 執行目標(硬件)相關函數、模塊、Python API 及安裝腳本。首先切換到“Pack”頁面,勾選所需項目,再按下“Pack”就會開始打包成一個壓縮文件(*.tar.gz)并詢問要存放的路徑,如此即完成所有程序。如 Fig. 17 所示。

【Intel OpenVINO?教學】不用寫程序也能輕松上手 AI 模型 分析、優化、部署─DL Workbench 圖形化接口工具簡介

Fig. 17 DL Workbench 打包選項及程序。(OmniXRI Mar. 2021 整理制作)

*小結

通過以上的說明及實例操作,相信大家應該對 Intel OpenVINO Toolkit 中的 DL Workbench 有了一些初步的認識,圖形化的接口更是讓用戶可以輕松上手,一目了然。對于那些不會或不想編程就想要快速實驗想法的人,及需要耗費大量心力調參的工程師來說,該工具確實縮短了開發及測試時間。后續還有更多優化及提升推理效果的工作,敬請期待。

*參考文獻

[1] 許哲豪,”【Intel OpenVINO 教學】如何利用 Docker 快速創建 OpenVINO 開發環境” http://omnixri.blogspot.com/2021/01/intel-openvinodockeropenvino.html

[2] Intel OpenVINO Toolkit, "Install the DL Workbench" https://docs.openvinotoolkit.org/latest/workbench_docs_Workbench_DG_Install_Workbench.html

[3] Intel OpenVINO Toolkit, "Download and Cut Datasets" https://docs.openvinotoolkit.org/latest/workbench_docs_Workbench_DG_Download_and_Cut_Datasets.html

[4] Intel, “DL (Deep Learning) Workbench | OpenVINO? toolkit | Ep. 42 | Intel Software” https://youtu.be/20ROqz5j1y8

[5] Intel, “DL (Deep Learning) Workbench - The Full Flow | OpenVINO? toolkit | Ep. 43 | Intel Software” https://youtu.be/DaR49bs8qwk

[6] Intel OpenVINO Toolkit, "Download and Cut Datasets" https://docs.openvinotoolkit.org/latest/workbench_docs_Workbench_DG_Download_and_Cut_Datasets.html

[7] Intel OpenVINO Toolkit, "Dataset Types" https://docs.openvinotoolkit.org/2021.2/workbench_docs_Workbench_DG_Dataset_Types.html

[8] Intel OpenVINO Toolkit, "Install Intel? Distribution of OpenVINO? toolkit for Linux*" https://docs.openvinotoolkit.org/2021.2/openvino_docs_install_guides_installing_openvino_linux.html

[9] Amikelive Technology Blog, "What Object Categories / Labels Are In COCO Dataset?" https://tech.amikelive.com/node-718/what-object-categories-labels-are-in-coco-dataset/

*延伸閱讀

[A] 許哲豪,”【Intel OpenVINO?教學】GStreamer 串流視頻智能分析不再慢吞吞─了解 Intel OpenVINO DL Stream 如何加速視頻推理” http://omnixri.blogspot.com/2021/02/intel-openvinogstreamerintel-openvino.html

免責聲明:凡注明來源本網的所有作品,均為本網合法擁有版權或有權使用的作品,歡迎轉載,注明出處。非本網作品均來自互聯網,轉載目的在于傳遞更多信息,并不代表本網贊同其觀點和對其真實性負責。
百度 好搜 搜狗

警告:本站禁止未滿18周歲訪客瀏覽,如果當地法律禁止請自覺離開本站!收藏本站:請使用Ctrl+D進行收藏