史上最全面的AI推理框架對(duì)比:OpenVINO、TensorRT、Mediapipe
現(xiàn)在常見(jiàn)的模型推理部署框架有很多,例如:英特爾的OpenVINO,英偉達(dá)的TensorRT,谷歌的Mediapipe。今天我們來(lái)對(duì)這些框架及其相關(guān)設(shè)備做一個(gè)介紹和對(duì)比。

三種框架的介紹
OpenVINO介紹
OpenVINO是英特爾針對(duì)自家硬件平臺(tái)開(kāi)發(fā)的一套深度學(xué)習(xí)工具庫(kù),包含推斷庫(kù),模型優(yōu)化等等一系列與深度學(xué)習(xí)模型部署相關(guān)的功能。
OpenVINO?工具包是用于快速開(kāi)發(fā)應(yīng)用程序和解決方案的綜合工具包,可解決各種任務(wù),包括模擬人類(lèi)視覺(jué),自動(dòng)語(yǔ)音識(shí)別,自然語(yǔ)言處理,推薦系統(tǒng)等。該工具包基于最新一代的人工神經(jīng)網(wǎng)絡(luò),包括卷積神經(jīng)網(wǎng)絡(luò)(CNN),循環(huán)和基于注意力的網(wǎng)絡(luò),可在英特爾?硬件上擴(kuò)展計(jì)算機(jī)視覺(jué)和非視覺(jué)工作負(fù)載,從而最大限度地提高性能。它通過(guò)從邊緣到云的高性能,人工智能和深度學(xué)習(xí)推理來(lái)加速應(yīng)用程序。
OpenVINO特點(diǎn):
在邊緣啟用基于CNN的深度學(xué)習(xí)推理
支持通過(guò)英特爾?Movidius?VPU在英特爾?CPU,英特爾?集成顯卡,英特爾?神經(jīng)計(jì)算棒2和英特爾?視覺(jué)加速器設(shè)計(jì)之間進(jìn)行異構(gòu)執(zhí)行
通過(guò)易于使用的計(jì)算機(jī)視覺(jué)功能庫(kù)和預(yù)先優(yōu)化的內(nèi)核加快上市時(shí)間
包括對(duì)計(jì)算機(jī)視覺(jué)標(biāo)準(zhǔn)(包括OpenCV *和OpenCL?)的優(yōu)化調(diào)用
OpenVINO是一個(gè)比較成熟且仍在快速發(fā)展的推理庫(kù),提供的demo和sample都是很充足的,上手比較容易,可以用來(lái)快速部署開(kāi)發(fā),尤其是Intel的硬件平臺(tái)上性能超過(guò)了大部分的開(kāi)源庫(kù),畢竟是自家的親兒子??梢赃@么說(shuō)在x86上推斷能力沒(méi)有什么框架可以與之媲美。
OpenVINO對(duì)各類(lèi)圖形圖像處理算法進(jìn)行了針對(duì)性的優(yōu)化,從而擴(kuò)展了Intel的各類(lèi)算力硬件以及相關(guān)加快器的應(yīng)用空間,實(shí)現(xiàn)了AI范疇的異構(gòu)較量,使傳統(tǒng)平臺(tái)的視覺(jué)推理能力獲得了很大水平的提高。OpenVINO實(shí)現(xiàn)了一套通用的API,能夠夾雜挪用CPU、GPU、Movidius NCS和FGPA的算力來(lái)配合完成一次視覺(jué)推理,預(yù)先實(shí)現(xiàn)了一系列的功能庫(kù)、OpenCL kernel等,能夠縮短產(chǎn)品面世時(shí)間。
基于OpenVINO,應(yīng)用在新零售、教育、智能交通、智慧金融、智慧城市、智能工場(chǎng)以及無(wú)人駕駛等范疇,OpenVINO已經(jīng)在國(guó)內(nèi)外頂尖客戶的方案中顯現(xiàn)出強(qiáng)大的優(yōu)勢(shì)。
TensorRT介紹
TensorRT是一個(gè)高性能的深度學(xué)習(xí)推理優(yōu)化器,可以為深度學(xué)習(xí)應(yīng)用提供低延遲,高吞吐率的部署推理。TensorRT可用于對(duì)超大規(guī)模數(shù)據(jù)中心,嵌入式平臺(tái)或自動(dòng)駕駛平臺(tái)進(jìn)行推理加速。TensorRT現(xiàn)已能支持TensorFlow,Caffe,Mxnet,Pytorch等幾乎所有的深度學(xué)習(xí)框架,將TensorRT和NVIDIA的GPU結(jié)合起來(lái),能在幾乎所有的框架中進(jìn)行快速和高效的部署推理。
Mediapipe介紹
MediaPipe是個(gè)基于圖形的跨平臺(tái)框架,用于構(gòu)建多模式應(yīng)用的機(jī)器學(xué)習(xí)管道。
MediaPipe可在移動(dòng)設(shè)備,工作站和服務(wù)器上跨平臺(tái)運(yùn)行,并支持移動(dòng)GPU加速。使用MediaPipe,可以將應(yīng)用的機(jī)器學(xué)習(xí)管道構(gòu)建為模塊化組件的圖形。
MediaPipe專(zhuān)為機(jī)器學(xué)習(xí)從業(yè)者而設(shè)計(jì)包括研究人員,學(xué)生,和軟件開(kāi)發(fā)人員,他們實(shí)施生產(chǎn)就緒的ML應(yīng)用程序,發(fā)布伴隨研究工作的代碼,以及構(gòu)建技術(shù)原型。MediaPipe的主要用例上使用推理模型和其他可重用組件對(duì)應(yīng)用機(jī)器學(xué)習(xí)管道進(jìn)行快速原型設(shè)計(jì)。MediaPipe還有助于機(jī)器學(xué)習(xí)技術(shù)部署到各種不用硬件平臺(tái)上的演示和應(yīng)用程序中。

三種框架的對(duì)比
我們將從多方位,多角度的對(duì)這三種框架進(jìn)行比較。
一、框架自身比較
1.從模型部署上:
OpenVINO模型部署分為兩個(gè)部分:模型優(yōu)化器和推理引擎。
模型優(yōu)化器將訓(xùn)練好的模型轉(zhuǎn)換為推理引擎可以識(shí)別的中間表達(dá)--IR文件,并在轉(zhuǎn)換過(guò)程中對(duì)模型進(jìn)行優(yōu)化。
推理引擎接受經(jīng)過(guò)模型優(yōu)化器轉(zhuǎn)換并優(yōu)化的網(wǎng)絡(luò)模型,為Intel的各種計(jì)算設(shè)備提供高性能的神經(jīng)網(wǎng)絡(luò)推理運(yùn)算。
TensorRT也是兩個(gè)部分:build and deployment?。
build:這個(gè)階段主要完成模型轉(zhuǎn)換,將不同框架的模型轉(zhuǎn)換到TensorRT。模型轉(zhuǎn)換時(shí)會(huì)完成前述優(yōu)化過(guò)程中的層間融合,精度校準(zhǔn)。這一步的輸出是一個(gè)針對(duì)特定GPU平臺(tái)和網(wǎng)絡(luò)模型的優(yōu)化過(guò)的TensorRT模型,這個(gè)TensorRT模型可以序列化存儲(chǔ)到磁盤(pán)或內(nèi)存中。存儲(chǔ)到磁盤(pán)中的文件稱(chēng)之為 plan file。
deployment主要完成推理過(guò)程。將上面一個(gè)步驟中的plan文件首先反序列化,并創(chuàng)建一個(gè) runtime engine,然后就可以輸入數(shù)據(jù)(比如測(cè)試集或數(shù)據(jù)集之外的圖片),然后輸出分類(lèi)向量結(jié)果或檢測(cè)結(jié)果。
2.從支持深度學(xué)習(xí)模型上:

3.從應(yīng)用平臺(tái)上:

4.從上手的難易程度上:

TensorRT只能在GPU設(shè)備上運(yùn)行。如果僅作為學(xué)習(xí)就需要一臺(tái)不錯(cuò)的電腦,而要部署到硬件上,更是需要額外購(gòu)買(mǎi)Jetson設(shè)備,因?yàn)镴etson僅是一塊開(kāi)發(fā)板,彩色攝像頭,雙目攝像頭都需要自己購(gòu)買(mǎi)安裝,還要學(xué)習(xí)Jetson的開(kāi)發(fā)。學(xué)習(xí)時(shí)間學(xué)習(xí)成本非常高。
Mediapipe僅支持TensorFlow ML框架。對(duì)于學(xué)習(xí)其他深度學(xué)習(xí)框架的小伙伴來(lái)說(shuō)是非常不友好的。Mediapipe提供的預(yù)訓(xùn)練模型也是非常少的,不能給小伙伴們學(xué)習(xí)提供太多的幫助。
二、應(yīng)用平臺(tái)比較
好馬還需配好鞍。軟件層面上的對(duì)比我們已經(jīng)看到,現(xiàn)在讓我們來(lái)看看它們各自部署到的硬件平臺(tái)。
1.OpenVINO用于DepthAI(OAK-D)
首款開(kāi)源軟硬一體OpenCV AI Kit(OAK),OAK-D也叫DepthAI是嵌入式空間AI平臺(tái),可幫助你構(gòu)建具有真正實(shí)時(shí)3D對(duì)象定位和跟蹤的產(chǎn)品。OAK-D減輕了AI深度視覺(jué)等工作的負(fù)擔(dān),直接從內(nèi)置攝像頭進(jìn)行處理,使你的主機(jī)有能力處理特定位于應(yīng)用程序的數(shù)據(jù)。最棒的是它是模塊化的并獲得MIT許可的開(kāi)源設(shè)備。可以將這些Spatial AI/CV超級(jí)功能添加到實(shí)際的商業(yè)產(chǎn)品中。
OAK-D自身帶有一顆4K/60fps的彩色攝像頭和雙目攝像頭,搭載Intel MyriadX VPU芯片,可以應(yīng)用于人臉識(shí)別,車(chē)輛識(shí)別,社交距離探測(cè),避障等場(chǎng)景。
2.TensorRT用于Jetson Nano
Jetson Nano是NVIDIA推出的人工智能計(jì)算機(jī)。Jetson Nano支持高分辨率傳感器,可以并行處理多個(gè)傳感器,并且可在每個(gè)傳感器流上運(yùn)行多個(gè)神經(jīng)網(wǎng)絡(luò)。它還支持許多常見(jiàn)的人工智能框架,讓開(kāi)發(fā)人員輕松地將自己偏愛(ài)的模型及框架集成到產(chǎn)品中。
3.MediaPipe用于Coral Dev Board
Coral Dev Board是Google推出的單板計(jì)算機(jī),Coral Dev Board TPU可快速構(gòu)建原型,涵蓋物聯(lián)網(wǎng)(IOT)和需要快速設(shè)備上ML推理的通用嵌入式系統(tǒng)。然后,用戶可以使用SOM結(jié)合使用板對(duì)板連接器的自定義底板,快速?gòu)脑瓦^(guò)渡到生產(chǎn)。
4.三者分類(lèi)比較
1)硬件體積

2)平臺(tái)設(shè)備

3)算力

4)價(jià)格

5.三者優(yōu)缺點(diǎn)總結(jié)

總結(jié)
在Coral,DepthAI,Jetson Nano之間讓你做出選擇的主要理由可能是:
1. 最快:Egde TPU
2. 深度感知+AI:DepthAI
3. 最靈活:Jetson Nano
不過(guò),你要為Jetson Nano的靈活性付出金錢(qián)的代價(jià)。。。它是最昂貴的,最慢且功耗最高。
相反,DepthAI價(jià)格最低,功耗最低,速度第二快,同時(shí)允許直接從圖像傳感器獲得大量專(zhuān)用的計(jì)算機(jī)視覺(jué)功能。
Edge TPU是最快的,但是相對(duì)于Jetson Nano和DepthAI(Myriad)而言,缺點(diǎn)是,數(shù)據(jù)路徑(視頻)必須流經(jīng)主CPU,并被壓縮為Edge的正確格式TPU芯片需要,然后從芯片外進(jìn)入神經(jīng)處理(Edge TPU芯片本身),因此功率/熱量大大超過(guò)了需要,并且CPU承擔(dān)了這項(xiàng)工作。
DepthAI和Jetson Nano都在這里占有優(yōu)勢(shì)。在DepthAI上,MIPI攝像機(jī)直接連接到具有直接訪問(wèn)神經(jīng)處理的內(nèi)存的成像管道,并且還連接了視差深度,哈里斯濾波,運(yùn)動(dòng)估計(jì)等計(jì)算機(jī)視覺(jué)硬件模塊,因此非常高效。同樣,Jetson Nano在CPU和GPU之間具有有效的共享內(nèi)存設(shè)置,因此直接從圖像傳感器獲取圖像數(shù)據(jù)并進(jìn)行神經(jīng)推理是資源高效的。而且,盡管沒(méi)有專(zhuān)用的硬件模塊,但GPU在這項(xiàng)工作上也相當(dāng)出色。這是Edge TPU的唯一真正缺點(diǎn),但是它仍然具有很多優(yōu)勢(shì),例如與Google的所有機(jī)器學(xué)習(xí)工具,模型等緊密集成在一起,這些都是業(yè)界領(lǐng)先的。
參考鏈接:
https://sourl.cn/6wt8sm
https://blog.csdn.net/blogdevteam/article/details/107972737
https://medium.com/@aallan/benchmarking-edge-computing-ce3f13942245
https://towardsdatascience.com/battle-of-edge-ai-nvidia-vs-google-vs-intel-8a3b87243028
https://www.cnblogs.com/qccz123456/p/11767858.html
https://cloud.tencent.com/developer/article/1506627
https://docs.openvinotoolkit.org/latest/index.html
https://www.cnblogs.com/qccz123456/p/11767858.html
https://discuss.luxonis.com/d/4-neural-processors-and-hosts-we-ve-found-so-far
https://blog.csdn.net/weixin_39956356/article/details/107103244?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-5.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-5.control