不用寫(xiě)程序也能輕松上手─DL Workbench圖形化接口工具(下)
*實(shí)際案例操作:SSD對象檢測
本文引用地址:http://dyxdggzs.com/article/202106/426072.htm接下來(lái)就用一個(gè)實(shí)際的例子來(lái)說(shuō)明如何操作DL Workbench。
1.數據集預處理
如果手上沒(méi)有現成的數據集可供測試,可以參考官網(wǎng)[6]的說(shuō)明下載需要的公開(kāi)數據集及標注檔(Annotations)。這里以COCO 2014數據集舉例說(shuō)明。點(diǎn)選網(wǎng)頁(yè)[6]上Download COCO Dataset下的[2014 Val images](約6.2G Byte)和[2014 Train/Val annotations](約241M Byte)下載圖像集(val2014.zip)和標注文檔(annotations_trainval2014.zip)。
接著(zhù)建立一個(gè)文件夾(/home/<用戶(hù)名稱(chēng)>/Work)來(lái)存放這兩個(gè)文件。
選擇網(wǎng)頁(yè)[6]Cut COCO Dataset下的[the script to cut datasets](cut_dataset.py)另存新文件到剛才建立的文件夾中。最后執行數據集減量(cut)操作,只保留少部份文件,方便DL Workbench導入(import)測試,完成后會(huì )自動(dòng)產(chǎn)生新的壓縮文件并存放在/home/<使用名稱(chēng)>/Work/subsets/coco_subset_10_29.tar.gz。完整執行命令如下所示。
#先將數據集和標注文件及剪切程序復制到/home/用戶(hù)名稱(chēng)/Work路徑下
#再執行cut_dataset.py,根據指定路徑(*_dir)獲得源文件,設置指定數量(output_size)的圖像,最后輸出到output_archive_dir路徑下。
#這里的python是指3.x不是2.x,若計算機中同時(shí)有兩種版本請改用python3
python/home/<User Name>/Work/cut_dataset.py
--source_images_archive_dir=/home/<User Name>/Work/val2014.zip
--source_annotations_archive_dir=/home/<User
Name>/Work/annotations_trainval2014.zip
--output_size=20
--output_archive_dir=/home/<User Name>/Work/subsets
--dataset_type=coco
--first_image=10
如果想自行準備數據集,可參考官網(wǎng)[7],其中Common Objects in Context(COCO)就有說(shuō)明COCO文件安排格式,如Fig.5所示。
Fig.5 DL Workbench自備COCO數據集格式,
(a)一般分類(lèi)/對象檢測
(b)圖像語(yǔ)義分割
(c)超分辨率
2.導入模型及轉換參數精度
為了方便后續同時(shí)測試CPU及Neural Compute Stick 2(MYRIAD),可使用下列命令啟動(dòng)DLWorkbench。
./start_workbench.sh-IMAGE_NAME openvino/workbench-TAG latest-ENABLE_MYRIAD
不過(guò)這里經(jīng)測試后發(fā)現,如果你的計算機上沒(méi)安裝標準版的Distribution of OpenVINO toolkit for Linux[8],而只有安裝Linux Docker環(huán)境時(shí),將無(wú)法使用iGPU和NCS2(MYRIAD)。如果使用Windows Docker環(huán)境(Windows 10+Widnows Subsystem for Linux 2[WSL2]+Ubuntu 18.04)時(shí)則只能使用CPU,因為目前微軟在WSL2上GPU和USB驅動(dòng)程序支持性仍不完整。
接著(zhù)就可以進(jìn)入DL Workbench網(wǎng)頁(yè)操作界面,開(kāi)始設置主動(dòng)配置(Active Configurations)。這里需要設置四個(gè)項目,包括模型(Models)、目標(Target)、環(huán)境(Environment)及數據集(Dataset)。使用前要確保網(wǎng)絡(luò )暢通,因為接下來(lái)的工作需要從網(wǎng)絡(luò )上下載許多數據。
首先按下“Create”鍵創(chuàng )建一組新的配置,導入(Import)現成的公開(kāi)模型及預訓練好的模型,由于在線(xiàn)預訓練好的模型項目太多,可以直接輸入模型名稱(chēng)快速檢索想要的模型。由于這個(gè)范例要測試對象檢測功能,所以選用「ssd_mobilenet_v2_coco」,再來(lái)選擇模型的參數精度(FP16/FP32)進(jìn)行轉換(Convert),完成后就會(huì )在模型區出現模型名稱(chēng)、產(chǎn)生日期、參數精度、模型大小,狀態(tài)區會(huì )顯示是否還在傳輸中,完成后會(huì )產(chǎn)生一個(gè)綠色的對勾。完整流程如
Fig.6所示。
Fig.6設置DL Workbench推理模型流程。(OmniXRI Feb.2021整理制作)
如果不想使用現成的模型,也可切換到原始模型(Original Model)頁(yè)面,根據系統要求自行提供對應格式的模型(網(wǎng)絡(luò ))及參數(權重值),再按“Import Model”即可導入自定義模型。
目前可支持OpenVINO IR,Caffe,MXNet,ONNX,TensorFlow等格式。
Fig.7 DL Workbench導入自定義模型。(OmniXRI Mar.2021整理制作)
3.導入數據集
點(diǎn)選Validation Dataset旁的“Import”鍵,進(jìn)入導入驗證數據集頁(yè)面,按“Choose File”鍵,選擇歩驟1產(chǎn)生的coco_subset_10_29.tar.gz,按下“Import”,即可完成導入數據集。如Fig.8所示。
Fig.8 DL Workbench導入數據集。(OmniXRI Mar.2021整理制作)
4.設置目標/環(huán)境
這里可看到目前有CPU和MYRIAD(NCS2)兩種裝置可供選擇,可先選擇其中一種(CPU),點(diǎn)擊模型和數據集后即可按下頁(yè)面最下方的“Create”建立第一種配置。如Fig.9所示。這里要注意的是,模型及數據集沒(méi)有準備好之前(尚在傳輸或轉換中)是無(wú)法設置目標及環(huán)境。
Fig.9 DL Workbench設置目標環(huán)境并建立配置。(OmniXRI Mar.2021整理制作)
5.建立基準點(diǎn)
按下“Create”建立第一組配置后,就會(huì )進(jìn)入配置頁(yè)面,并進(jìn)行第一次推理,自動(dòng)產(chǎn)生第一個(gè)基準點(diǎn)。推理時(shí)根據執行硬件的不同,可能需要等待一小段時(shí)間,完成后會(huì )得到最佳的輸出速度(Best Throughout,FPS)、延遲時(shí)間(Respective Latency,ms)及推理精確度(Accuracy),并在效率綜合圖表上繪出一個(gè)參考點(diǎn)。
通常預設為單獨推理(Single Inference),用戶(hù)可自由定義要測試的并行推理(Parallel Infers)及批次大小(Batch Size),再按下“Execute”鍵來(lái)測試不同條件的推理效果。如果覺(jué)得一直手動(dòng)調整太麻煩,也可使用組推理(Group Inference),直接點(diǎn)擊要測試的組合,按下“Execute”鍵,然后泡杯咖啡慢慢等結果出來(lái)。從產(chǎn)出的圖表就可一眼看出哪種組合的效果最好,做為后續打包輸出的依據,如Fig.10所示。
Fig.10 DL Workbench建立基準點(diǎn)及結果圖。(OmniXRI Mar.2021整理制作)
6.基準點(diǎn)效能比較
測試效果除了可以使用單獨或組測試外,也可進(jìn)行多種硬件的推理效果比較。首先點(diǎn)擊頁(yè)面上方的“Create”重新回到步驟4,此時(shí)只需改選裝置為[Intel Movidius Myriad X VPU](NCS2),其它模型和數據集不變,移到頁(yè)面最下方按下“Create”鍵就能新增一組配置,再次回到步驟5。此時(shí)可參考步驟5,將所有操作重復一遍,得出相同參數結果方便進(jìn)行比較。
接著(zhù)按下“Compare”就能進(jìn)入比較頁(yè)面進(jìn)行兩組配置的測試結果比較,若有兩組以上配置,則一次只能勾選兩組進(jìn)行比較。這里除了基本效果圖表外,還有平均延遲時(shí)間、各層運行時(shí)間及更多圖表信息,可根據需求自行參考,如Fig.11所示。
Fig.11 DL Workbench多配置基準點(diǎn)效能比較。(OmniXRI Mar.2021整理制作)
7.上傳圖像測試
經(jīng)過(guò)上面一連串設置及找到最優(yōu)配套后就可以來(lái)測試一下模型推理能力,這里支持直接上傳單張測試圖像來(lái)實(shí)驗。首先切換到“Test”頁(yè)面,按下“Select Images”上傳待測試的圖像,或者直接把圖像拉到這個(gè)框里面。接著(zhù)按下“Test”進(jìn)行測試,預測(Predicitions)結果就會(huì )出現在右方。顯示結果內容包括一組可調的臨界值(Threshold)和高于臨界的對象,同時(shí)會(huì )顯示對象的分類(lèi)編號(Class ID#)和置信度(Confidence)。點(diǎn)擊對象編號時(shí),左側還會(huì )繪制出對應的內容。若覺(jué)得檢測出的對象太少,可將臨界值調低,再確認一下。
另外目前COCO檢測結果只有用數字編號(Class#00)表示,并沒(méi)有直接卷標(Label)文字標示,不容易直接確認結果。如果想更確認編號對應內容,可參考[9]說(shuō)明。一般COCO有91分類(lèi)和80分類(lèi)(從91類(lèi)刪除部份),而現在對應的是91分類(lèi)的標簽。
接著(zhù)就用幾張圖來(lái)實(shí)驗一下結果,第一組貓和狗,一張對象重迭(Ex.1-1)、一張物件分開(kāi)(Ex.1-2)。第二組蘋(píng)果和香蕉,一張對象重迭(Ex.2-1)、一張物件分開(kāi)(Ex.2-2)。初步實(shí)驗結果可看出SSD_MobileNet_v2_COCO這組預練訓模型對于重迭的對象似乎分辨能力較弱,而較大的對象則辨識能力尚可接受。不過(guò)這樣的實(shí)驗數據太少,所以結論可能不完全正確,僅供參考。測試內容如Fig.12所示,而測試結果如Fig.13~16所示。
Fig.12 DL Workbench進(jìn)行對象檢測流程及測試樣本圖像。(OmniXRI Mar.2021整理制作)
Fig.13 Ex.1-1對象檢測實(shí)驗結果。(OmniXRI Mar.2021整理制作)
Fig.14 Ex.1-2對象檢測實(shí)驗結果。(OmniXRI Mar.2021整理制作)
Fig.15 Ex.2-1對象檢測實(shí)驗結果。(OmniXRI Mar.2021整理制作)
Fig.16 Ex.2-2對象檢測實(shí)驗結果。(OmniXRI Mar.2021整理制作)
8.打包輸出
為了后續更方便地部署到對應目標工作環(huán)境,并且讓編程人員能直接編寫(xiě)及呼叫對應函數,這里還提供打包輸出,不過(guò)目前只支持Linux。打包內容包含所選擇執行目標(硬件)相關(guān)函數、模塊、Python API及安裝腳本。首先切換到“Pack”頁(yè)面,勾選所需項目,再按下“Pack”就會(huì )開(kāi)始打包成一個(gè)壓縮文件(*.tar.gz)并詢(xún)問(wèn)要存放的路徑,如此即完成所有程序。如Fig.17所示。
Fig.17 DL Workbench打包選項及程序。(OmniXRI Mar.2021整理制作)
*小結
通過(guò)以上的說(shuō)明及實(shí)例操作,相信大家應該對Intel OpenVINO Toolkit中的DL Workbench有了一些初步的認識,圖形化的接口更是讓用戶(hù)可以輕松上手,一目了然。對于那些不會(huì )或不想編程就想要快速實(shí)驗想法的人,及需要耗費大量心力調參的工程師來(lái)說(shuō),該工具確實(shí)縮短了開(kāi)發(fā)及測試時(shí)間。后續還有更多優(yōu)化及提升推理效果的工作,敬請期待。
*參考文獻
[1]許哲豪,”【Intel OpenVINO教學(xué)】如何利用Docker快速創(chuàng )建OpenVINO開(kāi)發(fā)環(huán)境”
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?教學(xué)】GStreamer串流視頻智能分析不再慢吞吞─了解Intel OpenVINO DL Stream如何加速視頻推理”http://omnixri.blogspot.com/2021/02/intelopenvinogstreamerintel-openvino.htm
評論