ONNX、NCNN、OpenVINO、 TensorRT了解與簡介


https://oldpan.me/archives/talk-about-onnx

Open Neural Network Exchange (ONNX)是開放生態系統的第一步,它使人工智能開發人員可以在項目的發展過程中選擇合適的工具;ONNX為AI models提供了一種開源格式。它定義了一個可以擴展的計算圖模型,同時也定義了內置操作符和標准數據類型。最初我們關注的是推理(評估)所需的能力。

Caffe2, PyTorch, Microsoft Cognitive Toolkit, Apache MXNet 和其他工具都在對ONNX進行支持。在不同的框架之間實現互操作性,並簡化從研究到產品化的過程,將提高人工智能社區的創新速度。

ncnn 是一個為手機端極致優化的高性能神經網絡前向計算框架。ncnn 從設計之初深刻考慮手機端的部署和使用。無第三方依賴,跨平台,手機端 cpu 的速度快於目前所有已知的開源框架。基於 ncnn,開發者能夠將深度學習算法輕松移植到手機端高效執行,開發出人工智能 APP,將 AI 帶到你的指尖。ncnn 目前已在騰訊多款應用中使用,如 QQ,Qzone,微信,天天P圖等。

OpenVINO是英特爾基於自身現有的硬件平台開發的一種可以加快高性能計算機視覺和深度學習視覺應用開發速度工具套件,支持各種英特爾平台的硬件加速器上進行深度學習,並且允許直接異構執行。 支持在Windows與Linux系統,Python/C++語言。

一般的深度學習項目,訓練時為了加快速度,會使用多 GPU 分布式訓練。但在部署推理時,為了降低成本,往往使用單個 GPU 機器甚至嵌入式平台(比如 NVIDIA Jetson)進行部署,部署端也要有與訓練時相同的深度學習環境,如 caffe,TensorFlow 等。由於訓練的網絡模型可能會很大(比如,inception,resnet 等),參數很多,而且部署端的機器性能存在差異,就會導致推理速度慢,延遲高。這對於那些高實時性的應用場合是致命的,比如自動駕駛要求實時目標檢測,目標追蹤等。所以為了提高部署推理的速度,出現了很多輕量級神經網絡,比如 squeezenet,mobilenet,shufflenet 等。基本做法都是基於現有的經典模型提出一種新的模型結構,然后用這些改造過的模型重新訓練,再重新部署。

而 TensorRT 則是對訓練好的模型進行優化。 TensorRT 就只是推理優化器。當你的網絡訓練完之后,可以將訓練模型文件直接丟進 TensorRT中,而不再需要依賴深度學習框架(Caffe,TensorFlow 等)

可以認為 TensorRT 是一個只有前向傳播的深度學習框架,這個框架可以將 Caffe,TensorFlow 的網絡模型解析,然后與 TensorRT 中對應的層進行一一映射,把其他框架的模型統一全部轉換到 TensorRT 中,然后在 TensorRT 中可以針對 NVIDIA 自家 GPU 實施優化策略,並進行部署加速。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM