在模型開發(fā)和部署方面,極市平臺(tái)集成了最新版本的OpenVINO工具,助力開發(fā)者在最小化代碼修改的條件下加速AI算法在各類生產(chǎn)環(huán)境中規(guī)?;渴饝?yīng)用,尤其是在Intel豐富的硬件資源平臺(tái)上(CPUs、iGPUs、VPUs等等)。
本文重點(diǎn)介紹了極視角與英特爾開發(fā)人員共同研發(fā)的OpenVINO最新功能,無縫集成TensorFlow框架,對于熟悉TensorFlow開發(fā)的開發(fā)者來說,在原有代碼的基礎(chǔ)上只需要添加幾行簡單代碼就可以無痛實(shí)現(xiàn)模型精度不變的前提下推理加速1.34倍以上,避免了顯式地進(jìn)行OpenVINO轉(zhuǎn)換以及推理部分代碼的重新編寫,大大簡化OpenVINO工具的使用,加速AI算法在生產(chǎn)環(huán)境中的應(yīng)用部署。
無痛實(shí)現(xiàn) 1.34 倍加速推理
我們先來看看本文方法在模型推理加速上具體表現(xiàn):
可以看到,在同一測試環(huán)境下,OpenVINO 與 TensorFlow 的集成實(shí)現(xiàn)了 1.34 的加速幾何平均值,同時(shí),模型的準(zhǔn)確性保持不變:

具體實(shí)操
OpenVINO 與 TensorFlow 的集成專為使用 OpenVINO 工具套件的開發(fā)人員而設(shè)計(jì)——通過最少的代碼修改來提高推理應(yīng)用程序的性能。該集成為提高TensorFlow 兼容性提供以 OpenVINO 工具套件內(nèi)聯(lián)優(yōu)化和所需運(yùn)行時(shí),并加速了各種英特爾芯片上多類AI模型的推理。
通過將以下兩行代碼添加到 Python 代碼或 Jupyter Notebooks 中,就可以極大地加速你的 TensorFlow 模型的推理:
import openvino_tensorflowopenvino_tensorflow.set_backend(‘《backend_name》’)
OpenVINO 與 TensorFlow 的集成通過將 TensorFlow 圖巧妙地劃分為多個(gè)子圖,再將這些子圖分派到 TensorFlow 運(yùn)行時(shí)或 OpenVINO 運(yùn)行時(shí),從而實(shí)現(xiàn)最佳加速推理。
# 工作流概述
同時(shí),通過 openvino_tensorflow ,我們能夠非常輕松地使用不同硬件:

更多的詳細(xì)信息可以前往 Github:
https://github.com/openvinotoolkit/openvino_tensorflow
# 在Extreme Vision notebooks中集成
在Extreme Vision IDE中可以直接將OpenVINO與TensorFlow集成。如下圖所示,你只需要簡單地導(dǎo)入openvino_tensorflow,即可無縫加速 Jupyter Notebook 中在CPU上推理的所有 TensorFlow模型,同時(shí)可以繼續(xù)使用標(biāo)準(zhǔn)的TensorFlow API,而無需代碼重構(gòu)。

對推理加速更深的討論
從前文對推理加速上的結(jié)果展示中,我們可以看到通過添加 2 行代碼激活OpenVINO與 TensorFlow 的集成后,可以獲得最高達(dá) 10 倍的推理加速。但也有個(gè)別模型出現(xiàn)了異常情況,如Mask RCNN Atrous 和 SSD Mobilenet V2,因此我們對如何獲得最佳性能進(jìn)行了討論:
#01
OPENVINO_TF_MIN_NONTRIVIAL_NODES 變量
該變量設(shè)置了聚類中可以存在的最小操作數(shù)。如果操作數(shù)小于指定的數(shù)量,則聚類將回退到 TensorFlow。默認(rèn)情況是根據(jù)總圖大小計(jì)算的,但除非手動(dòng)設(shè)置,否則不能小于 6。另外,我們將此變量設(shè)置為 15 和 22 來觀察模型進(jìn)一步的性能增強(qiáng),并以此得到了最終的最佳推理性能。因此,在具體的開發(fā)應(yīng)用中應(yīng)通過默認(rèn)值或?qū)嶒?yàn)來確定能夠?yàn)槟P吞峁┳罴研阅艿淖兞孔罴阎怠?/p>
#02
凍結(jié) Keras 模型以獲得最佳性能
一些 Keras 模型可能包含訓(xùn)練操作,這會(huì)導(dǎo)致 TensorFlow 產(chǎn)生控制流。由于 OpenVINO 工具套件不支持這些操作,因此圖形可能會(huì)被劃分為較小的聚類。因此,在使用 OpenVINO 與 TensorFlow 的集成時(shí),凍結(jié)模型可以避免這些操作并提高整體性能。
使用 Keras API 的 DenseNet121 推理應(yīng)用代碼示例:
import tensorflow as tffrom tensorflow import kerasfrom tensorflow.keras.applications.densenet import DenseNet121# Add two lines of code to enable OpenVINO integration with TensorFlowimport openvino_tensorflowopenvino_tensorflow.set_backend("CPU")model = DenseNet121(weights='imagenet')# Run the inference using Keras APImodel.predict(input_data)
下面是凍結(jié)和運(yùn)行 Keras 模型的一個(gè)示例代碼,通過這種方式,我們能夠優(yōu)化使用 OpenVINO 與 TensorFlow 的集成實(shí)現(xiàn)的最佳性能。
import tensorflow as tffrom tensorflow import kerasfrom tensorflow.keras.applications.densenet import DenseNet121from tensorflow.python.framework.convert_to_constants import convert_variables_to_constants_v2# Add two lines of code to enable OpenVINO integration with TensorFlowimport openvino_tensorflowopenvino_tensorflow.set_backend("CPU")model = DenseNet121(weights='imagenet')# Freeze the model first to achieve the best performance# using OpenVINO integration with TensorFlowfull_model = tf.function(lambda x: self.model(x))full_model = full_model.get_concrete_function(tf.TensorSpec(model.inputs[0].shape,model.inputs[0].dtype, name=model.inputs[0].name))frozen_func = convert_variables_to_constants_v2(full_model)frozen_func.graph.as_graph_def()session = tf.compat.v1.Session(graph=frozen_func.graph)prob_tensor = frozen_func.graph.get_tensor_by_name(full_model.outputs[0].name)# Run the inference on the frozen modelsession.run(prob_tensor, feed_dict={full_model.inputs[0].name : input_data})
#03
Mask RCNN Atrous和SSD Mobilenet
如上文的結(jié)果所示,OpenVINO與TensorFlow的集成可以加速大多數(shù)TensorFlow模型,但由于一些模型具有OpenVINO與TensorFlow集成尚不完全支持的工作組件(例如運(yùn)算符、層等),如Mask RCNN Atrous和SSD Mobilenet V2等一些模型仍在開發(fā)完善中。
為了擴(kuò)大模型覆蓋范圍以及進(jìn)一步提升性能,極視角技術(shù)團(tuán)隊(duì)將會(huì)繼續(xù)測試和完善OpenVINO與TensorFlow的集成,以幫助更多使用TensorFlow開發(fā)人員能夠更好地應(yīng)用極市平臺(tái)。
編輯:jq
-
API
+關(guān)注
關(guān)注
2文章
2198瀏覽量
66346 -
SSD
+關(guān)注
關(guān)注
21文章
3065瀏覽量
121909 -
AI
+關(guān)注
關(guān)注
90文章
38414瀏覽量
297709 -
代碼
+關(guān)注
關(guān)注
30文章
4947瀏覽量
73291
原文標(biāo)題:英特爾OpenVINO? 助力極視角AI推理加速
文章出處:【微信號:英特爾物聯(lián)網(wǎng),微信公眾號:英特爾物聯(lián)網(wǎng)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
英特爾Gaudi 2E AI加速器為DeepSeek-V3.1提供加速支持
硬件與應(yīng)用同頻共振,英特爾Day 0適配騰訊開源混元大模型
主控CPU全能選手,英特爾至強(qiáng)6助力AI系統(tǒng)高效運(yùn)轉(zhuǎn)
使用英特爾? NPU 插件C++運(yùn)行應(yīng)用程序時(shí)出現(xiàn)錯(cuò)誤:“std::Runtime_error at memory location”怎么解決?
英特爾銳炫Pro B系列,邊緣AI的“智能引擎”
直擊Computex 2025:英特爾重磅發(fā)布新一代GPU,圖形和AI性能躍升3.4倍
直擊Computex2025:英特爾重磅發(fā)布新一代GPU,圖形和AI性能躍升3.4倍
英特爾發(fā)布全新GPU,AI和工作站迎來新選擇
英特爾借助開放生態(tài)系統(tǒng),加速邊緣AI創(chuàng)新
為什么無法檢測到OpenVINO?工具套件中的英特爾?集成圖形處理單元?
請問OpenVINO?工具套件英特爾?Distribution是否與Windows? 10物聯(lián)網(wǎng)企業(yè)版兼容?
安裝OpenVINO?適用于Raspberry Pi64位操作系統(tǒng)的工具套件2022.3.1,配置英特爾?NCS2時(shí)出錯(cuò)怎么解決?
將英特爾?獨(dú)立顯卡與OpenVINO?工具套件結(jié)合使用時(shí),無法運(yùn)行推理怎么解決?
英特爾OpenVINO 2025.0正式發(fā)布

英特爾OpenVINO?將全力助力極視角AI推理加速
評論