在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

OpenVINO模型優化實測:PC/NB當AI辨識引擎沒問題!

jf_cVC5iyAO ? 來源:易心Microbit編程 ? 作者:易心Microbit編程 ? 2022-12-09 16:13 ? 次閱讀

之前我們談到在Intel OpenVINO架構下,當需要進行AI運算時利用Intel GPU加速一樣可獲得不錯的效能,并且使用YOLO v3進行測試。

這次我們將會自制一個CNN分類器,并透過OpenVINO的模型轉換程序轉換成IR模型,并進行模型效能與正確率分析。依據Intel官方網站的說明,OpenVINO可以針對不同模型進行優化,目前支持包括Tensorflow、Keras、CaffeONNX、PyTorch、mxnet等多種模型。

也就是說,當使用者透過其他框架訓練完成的模型文件,例如Kerasmodel.h5檔,或者TensorFlowmodel.pb檔,只要經過轉換就可以在OpenVINO中以最高效能來執行。

3ff11966-7798-11ed-8abf-dac502259ad0.png

不過讀者可能會比較在意的就是透過OpenVINO加速后,效能是能提升多少、正確率會不會發生變化?還有就是若我已經有一個訓練好的Model,我要如何轉換為OpenVINO可以讀取的模型呢?

本文將分為兩個部份來說明,第一個部份就是如何進行模型轉換,第二部份則來評測轉換前后的執行效能差異,除了模型比較之外,讀者一定會想了解Intel OpenVINO GPUNVIDIA CUDA的差異,這部份也在本文中進行比較,我相信會讓讀者大開眼界。

OpenVINO模型轉換

以目前官方文件所述,OpenVINO架構執行效能最佳的為IR(Intermediate Representations) 格式模型,所謂的IR模型是「中間表達層」,IR模型包含一個binxml,bin包含實際權重的網絡權重weight及誤差bais數據,而xml則是記載網絡結構。

后續當OpenVINO要加載模型時,只要讀取這兩個檔案即可,雖然這樣轉換須多經過一道手續,但是卻可大幅提高執行效能,在此我們介紹如何轉換模型。

401d2e20-7798-11ed-8abf-dac502259ad0.png

本次就以較常用的個案「玩猜拳」為例,利用卷積類神經CNN模型制作一個圖形分類器,可以對「剪、石、布」以及「無」(代表使用者還沒有出拳)的四種圖形進行判斷。模型采用[224x224x3]的圖片格式,本文以Tensorflow為例演練轉換過程,其他模型轉換方式類似,讀者可以參考本例作法進行轉換測試。

403c8248-7798-11ed-8abf-dac502259ad0.png

無(N

404ae108-7798-11ed-8abf-dac502259ad0.png

布(P

4074ee76-7798-11ed-8abf-dac502259ad0.png

石(P

40c506cc-7798-11ed-8abf-dac502259ad0.png

剪(S

1. TensorFlow模型轉換

一般來說以TensorFlow訓練模型的話,那么我們可能會得到兩種格式的檔案,一種為使用Kerash5檔,另外一種則是TensorFlowpb檔,h5檔案可以透過python轉換成pb檔,因此本文僅介紹pb文件的模型轉換。

另外為了后續測試能有一致的標準,本文的模型使用GoogleTeachable Machine(簡稱TM)進行訓練,這樣可以讓讀者在與自己的計算機進行效能比較時,能有較公平的比較基準,若讀者有自行訓練的類神經模型,一樣可以參考下面的方式進行轉換。

關于TM的訓練過程,請自行參考其他教程,本文僅針對最后的模型下載過程進行說明。也就是說,當TM已經訓練好模型之后,就可以點選右上角的「Export Model」導出模型。

40faf174-7798-11ed-8abf-dac502259ad0.png

開啟導出模型窗口后,點選:1.Tensorflow,然后點選單元格式為2.Savemodel,最后選3.Download my model

412342aa-7798-11ed-8abf-dac502259ad0.png

此時下載的檔案內容包含一個文本文件「labels.txt」及文件夾「model.savedmodel」,而在文件夾內則包含「saved_model.pb」及文件夾「assets」及「variables」,接下來我們就可以將此檔案轉換為IR格式。

41743cdc-7798-11ed-8abf-dac502259ad0.png

下載的tensorflow pb檔案。

下一步我們則可以利用OpenVINO內建的「model_optimizer」模塊進行優化及模型轉換,一般是在「/opt/intel/openvino_安裝版本/deployment_tools/model_optimizer/」文件夾內,我們將會選用的轉換程序為mo_tf.py,而語法如下

python3 mo_tf.py --saved_model_dir <<模型檔案存放文件夾路徑>>--output_dir <模型文件輸出路徑>> --input_shape <<輸入層結構>>--data_type <<選用的數據格式>>

舉例來說,假設我的pb模型文件存放在「Tensorflow/SaveModel」文件夾內,而要輸出到「IR」文件夾,而第一層架構為[1,224,224,3](此代表輸入1張圖,長寬為224×224,有RGB三色),選用FP32(默認值)為數據格式,此時語法為

python3 mo_tf.py --saved_model_dirTensorflow/SaveModel --output_dir IR --input_shape [1,224,224,3] --data_typeFP32

41959b3e-7798-11ed-8abf-dac502259ad0.png

轉換完成會出現的訊息。

41ca9bf4-7798-11ed-8abf-dac502259ad0.png

轉換完成的IR模型檔案。

當轉換完成的訊息出現后,就可以在IR文件夾中看到三個檔案「saved_model.bin」、「saved_model.mapping」、「saved_model.xml」,這樣就代表轉換完成了。

若您原本是使用Kerash5 model檔案的話那該怎么辦,先轉成pb文件結構,再轉換成IR即可,以下為h5轉換pbpython語法。

import tensorflow as tf

model =tf.keras.models.load_model('saved_model.h5') #h5的檔案路徑

tf.saved_model.save(model,'modelSavePath')#'modelSavePath'pb模型檔案輸出路徑

h5轉換成pb檔案后,就可以依照前述方式將再將pb轉換成IR檔案。除了TensorFlow之外,其他模型的轉換方式,可以參考OpenVINO官方網頁說明。

https://docs.openvinotoolkit.org/latest/openvino_docs_MO_DG_prepare_model_Config_Model_Optimizer.html

模型轉換效率比較

當使用OpenVINO進行模型轉換時,并非單純轉換而已,事實上OpenVINO在轉換過程會對模型進行優化(算是偷吃步嗎?哈哈),優化部份包括以下兩種:

1.修剪:剪除訓練過程中的網絡架構,保留推理過程需要的網絡,例如說剪除DropOut網絡層就是這種一個例子。

2.融合:有些時候多步操作可以融合成一步,模型優化器檢測到這種就會進行必要的融合。

如果要比較優化后的類神經網絡差異,我們可以透過在線模型可視化工具,開啟兩個不同模型檔案來查看前后的變化。下圖為利用netron分別開啟原始pb模型及轉換后的IR模型的網絡架構圖,讀者可以發現經過轉換后的模型與原始TensorFlow模型有很大的差別,IR模型會將多個網絡進行剪除及融合,減少網絡層數提升運算效能。

https://netron.app/

以下圖為例,左側為IR模型,右側為TF模型,兩者比較后可以發現,原先使用的Dropout層已經在IR中被刪除。

41f4a278-7798-11ed-8abf-dac502259ad0.png

模型轉后前后比較圖左圖為IR模型,右圖為原始TensorFlow模型(由于模型都相當大,此處僅呈現差異的一小部份)

OpenVINO轉換工作結束后,就會告知優化前后所造成的差異,以本例而言,原本995個節點、1496個路徑的類神經網絡就被優化為729個節點、1230個路徑,因此能提升運算效率。

42255314-7798-11ed-8abf-dac502259ad0.png

解模型轉換過程之后,接下來就是測試OpenVINO在執行上是否有效能上的優勢。以下會有二個測試,測試項目包括效能及正確率,以了解OpenVINO是否能具有實用性,也就是說在獲得效能的同時,是否能保有相同的正確性,讓讀者對于后續是否采購支持OpenVINO機器有比較的依據:

?在RQP-T37上測試IR模型及TensorFlow Keras h5模型效能比較

?OpenVINO iGPUColab GPU效能比較

1.RQP-T37上測試IR模型及Tensorflow上的差異

本測試是同一臺機器(RQP-T37)及環境(Ubuntu 20.04.2 LTS)之下進行,模型則采用Google TeachableMachine所制作的手勢分類器(猜拳游戲:剪刀石頭布),辨識對象為800224x224x3的手勢照片,模型采用FP32進行分析辨識總時間及正確率。

為了避免單次測試可能造成的誤差,測試取100次的平均及標準偏差,并繪制盒型圖(Box plot),本測試并不使用其他測試常采用的fps(Frame per second),而僅計算的是辨識(inference)總時間,不計算檔案讀取、數據轉換過程所耗費的時間。因為本測試主要要了解模型轉換后的差異,避免受到其他因素的影響因此不使用fps。

42487b8c-7798-11ed-8abf-dac502259ad0.png

(a) IR模型代碼段,顯示僅計算推論時間。(評估標準為Inference總時間)

426f1422-7798-11ed-8abf-dac502259ad0.png

(b) TensorFlow模型程序片段,顯示僅計算推論時間。(評估標準為Inference總時間)

在完成100次執行之后,我們先看原始TensorFlow模型的執行狀況如下表,做完800張照片的手勢推論,平均時間為38.941,換算辨識一張的時間約0.04秒,而標準偏差0.103,大致換算fps的上限約25,這樣的結果算是中規中矩。

429da706-7798-11ed-8abf-dac502259ad0.png

另一方面IR模型進行推論結果則呈現在下圖,可以發現效能非常高,分析800張照片平均只要1.332秒,也就是一張224×224的照片僅需要0.00166秒,非常不可思議,換算fps上限約為602,若看標準偏差也只有0.008,代表耗費時間也相當穩定,并無太大起伏。

相對于原始的Tensorflow pb模型來說,效能大約提升了30倍,相當令人驚艷。

42de623c-7798-11ed-8abf-dac502259ad0.png

雖然效能提升如此之多,讀者應該會覺得OpenVINOInference引擎可能會在「效能」與「正確性」之間進行trade off,是否在大幅提升效能后,卻喪失了最重要的推論正確性?此時觀察兩次測試時的混淆矩陣可以發現,在TensorFlow模型時800次只有3次將布看成剪刀,正確率為797/800大約0.996。

而在IR模型時,800次辨識有9次將石頭看成剪刀,所以其正確率為793/800=0.991,事實上兩者相差無幾,不過有趣的是兩個模型所辨識錯誤的項目不太一樣,值得后續再深入討論。

筆者在此必須強調,OpenVINO架構的效能提升如此之多,個人認為主要在于模型優化(model_optimizer)的過程,雖然Intel CPUGPU雖然有所幫助,但不可能把效能提升到30倍之多。

431140d0-7798-11ed-8abf-dac502259ad0.png

TensorFlow模型辨識混淆矩陣

433eefda-7798-11ed-8abf-dac502259ad0.png

IR模型辨識混淆矩陣

測試小結:

?經過優化的IRTensorFlow模型效能上大幅提升,差異約30

?經過優化的IRTensorFlow模型正確率幾乎相當

2.比較OpenVINO iGPUColab GPU

本測試則是使用Colab上的GPU進行加速運算,Google Colab可以說是近幾年來最受歡迎的程序開發平臺了,尤其是提供免費的GPU加速,可以讓使用者在AI運算上獲得相當好的效能。因此本次也針對Colab平臺進行測試,測試之前查詢Colab所提供的GPU規格為Tesla T4。

43633d90-7798-11ed-8abf-dac502259ad0.png

而根據NVIDIA的規格表,T4具有2,560CUDA核心,FP32的算力為8.1 TFLOPS

4371b500-7798-11ed-8abf-dac502259ad0.png

NVIDIA T4規格

43931786-7798-11ed-8abf-dac502259ad0.png

與前次測試相同,推論對象為800224x224x3的圖片,采用原始的TensorFlow pb模型,且確認有開啟GPU加速。

經過100次分析后,獲得上表可以得知,Colab的指令周期比本次測試用的計算機采用的Intel CPU時效能高,平均一次約28.52秒,相當于分類1張照片只花0.035秒,換算fps上限28.05,這個效能符合Colab 所提供的GPU規格。

讀者可能會想到在Colab上的照片讀取效能比Local端差多了,這樣評估不公平,這里要注意的是,我們測試都僅加總推論時間,并沒有計算檔案讀取的時間。此次測試比較后,OpenVINO效能還是明顯較好。不過一樣的,筆者認為效能提升是來自于OpenVINO的模型優化。

測試小結:

?同樣在pb模型下,Colab采用的GPU加速后,效能大于Intel CPU

?IR模型在OpenVINO模型優化及加速后,效能超過NVIDIA CUDA

結論

本次文章主要讓讀者了解OpenVINO架構的效能與正確性的比較,另外也說明自制模型的轉換過程。測試時雖硬件上有明顯差距,以及并未使用TensorRT做模型優化,但本測試還是有一定的代表性,也就是說當讀者擁有一臺Intel計算機時,透過安裝OpenVINO ToolKit來進行模型優化,一樣可以獲得性能相當好的AI辨識引擎,不一定要購買超高等級的顯示適配器才能進行AI項目開發。

畢竟一般讀者購買計算機一定有CPU,卻不一定會購買獨立GPU顯示適配器,或者像是無法加裝顯示適配器的筆記本電腦,以往沒有獨立顯卡的計算機以CPU進行AI推論時都會花費大量時間,系統無法實時反應,因此缺乏實用性。而本次測試則是證明在OpenVINO架構下,就可以透過模型優化程序及Intel GPU加速,進而在幾乎不影響正確率的結果下得到非常好的效能,這個效能甚至超越 NVIDIA架構。

不過筆者必須提醒讀者,目前OpenVINO只有提供Inferencing,尚不提供Training的功能,所以讀者必須先透過其他方式進行訓練獲得模型后,才可以在OpenVINO中進行實地推論。雖然如此,無論是采用Intel的計算機,還是標榜低價的文書計算機,都可以快速進行AI運算,可以說是實做AI系統非常好的工具。

審核編輯 :李倩


聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 架構
    +關注

    關注

    1

    文章

    525

    瀏覽量

    25802
  • 分類器
    +關注

    關注

    0

    文章

    152

    瀏覽量

    13369
  • cnn
    cnn
    +關注

    關注

    3

    文章

    354

    瀏覽量

    22576

原文標題:OpenVINO模型優化實測:PC/NB當AI辨識引擎沒問題!

文章出處:【微信號:易心Microbit編程,微信公眾號:易心Microbit編程】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    構建開源OpenVINO?工具套件后,模型優化器位于何處呢?

    構建開源OpenVINO?工具套件后,模型優化器位于何處?
    發表于 03-06 08:18

    OpenVINO中的量化模型OpenVINO ESR模型結果不一致是怎么回事?

    將 REAL-ESRSTREAM 模型轉換成 OpenVINO IR (2021.4) 并執行該模型。 能夠運行 IR,但結果與 REAL-ESR 就此不同的是。
    發表于 03-06 08:11

    如何使用OpenVINO?運行對象檢測模型?

    無法確定如何使用OpenVINO?運行對象檢測模型
    發表于 03-06 07:20

    OpenVINO? Toolkit中如何保持模型稀疏性?

    OpenVINO? Toolkit 中支持的優化方法,保持模型稀疏性。
    發表于 03-06 06:47

    請問使用2022.2時是否可以讀取模型OpenVINO?層?

    使用 2020.3 時,使用 net.layers 和 layers.blob 讀取模型OpenVINO?層。 OpenVINO?自 2021.2 OpenVINO?起,使用 202
    發表于 03-06 06:37

    使用模型優化器命令將ONNX模型轉換為OpenVINO? IR格式時出現“ReplacementID”錯誤怎么解決?

    使用模型優化器命令將 ONNX 模型轉換為 OpenVINO? IR 格式: --input_model \"{onnx_path} --input_shape [1,512, 89
    發表于 03-05 09:41

    運行時OpenVINO?找不到模型優化器,為什么?

    在運行時OpenVINO?找不到模型優化器,運行模型下載程序命令并收到錯誤消息: omz_downloader:找不到命令
    發表于 03-05 08:16

    為什么Caffe模型可以直接與OpenVINO?工具套件推斷引擎API一起使用,而無法轉換為中間表示 (IR)?

    推斷 Caffe 模型直接基于 英特爾? 神經電腦棒 2 (英特爾? NCS2)。 無法確定為什么 Caffe 模型可以直接與OpenVINO?工具套件推斷引擎 API 一起使用
    發表于 03-05 06:31

    為什么無法通過OpenVINO?深度學習 (DL) 工作臺優化 MYRIAD 導入的模型?

    -ASSETS_DIR /hdd-raid0/openvino_workbench 命令以啟動 DL 工作臺。 收到以下消息: 由于選定的項目具有只讀狀態,因此無法使用優化按鈕 拔下并插入神經電腦棒 (NCS2) 并重新啟動工作臺容器。 移除了所有資產目錄數據并重啟容器
    發表于 03-05 06:20

    為什么無法在運行時C++推理中讀取OpenVINO?模型?

    使用模型優化器 2021.1 版OpenVINO?轉換模型 使用 Runtime 2022.3 版本在 C++ 推理實現 ( core.read_model()) 中讀取
    發表于 03-05 06:17

    C#集成OpenVINO?:簡化AI模型部署

    什么是OpenVINO 工具套件? OpenVINO 工具套件是一個用于優化和部署人工智能(AI模型,提升
    的頭像 發表于 02-17 10:03 ?1567次閱讀
    C#集成<b class='flag-5'>OpenVINO</b>?:簡化<b class='flag-5'>AI</b><b class='flag-5'>模型</b>部署

    機械革命AI PC接入DeepSeek大模型

    專注于高性能移動解決方案的知名品牌——機械革命(MECHREVO),宣布旗下AI PC產品線正式接入中國開源大模型DeepSeek!憑借機械革命無與倫比的產品性能與深度定制的適配優化,
    的頭像 發表于 02-10 09:50 ?385次閱讀

    C#中使用OpenVINO?:輕松集成AI模型

    與分析三大領域中,如何快速將AI模型集成到應用程序中,實現AI賦能和應用增值?最容易的方式是:在C#中,使用OpenVINO?工具套件集成AI
    的頭像 發表于 02-07 14:05 ?651次閱讀
    C#中使用<b class='flag-5'>OpenVINO</b>?:輕松集成<b class='flag-5'>AI</b><b class='flag-5'>模型</b>!

    使用OpenVINO Model Server在哪吒開發板上部署模型

    OpenVINO Model Server(OVMS)是一個高性能的模型部署系統,使用C++實現,并在Intel架構上的部署進行了優化,使用OpenVINO 進行推理,推理服務通過gP
    的頭像 發表于 11-01 14:19 ?573次閱讀
    使用<b class='flag-5'>OpenVINO</b> Model Server在哪吒開發板上部署<b class='flag-5'>模型</b>

    實測NPU“空轉”,AI PC首個落地應用只調用GPU?

    AI PC的一大特征是在傳統PC的CPU+GPU基礎上,增加NPU加強AI 算力。不過有意思的是,最近某品牌PC機型上的
    的頭像 發表于 05-22 00:16 ?3755次閱讀
    主站蜘蛛池模板: 新网球王子u17世界杯篇免费观看 | 三级特黄视频 | 免费爱爱小视频 | 欧美成人午夜片一一在线观看 | 亚洲色播永久网址大全 | 求毛片网站| 午夜激情福利网 | 亚洲第一精品夜夜躁人人爽 | 在线观看不卡一区 | 在线观看亚洲一区二区 | 激情五月婷婷小说 | 欧美成人三级伦在线观看 | 国模吧在线视频 | 午夜噜噜噜私人影院在线播放 | 亚洲精品成人在线 | 国产精品乳摇在线播放 | 女人被两根一起进3p在线观看 | 激情六月综合 | 国产成人精品曰本亚洲77美色 | 老色批在线播放视频网站免费 | 午夜色视频 | 色之综合天天综合色天天棕色 | 最新欧美精品一区二区三区 | 日本色片在线观看 | 看逼网址 | 午夜精品久久久久久影视riav | 8050午夜| 日本黄色www| 色多多福利网站老司机 | 久操成人 | 综合色吧| аⅴ天堂 在线 | 国产高清网站 | 国产亚洲情侣久久精品 | 天天草天天射 | 欧美激情第一欧美在线 | 狠狠色丁香久久婷婷综合丁香 | 四虎永久免费最新在线 | 丁香狠狠 | 亚洲成人网在线观看 | 久久久久国产精品 |