嵌入式Linux平臺部署AI神經網絡模型Inference的方案

轉載:https://www.jianshu.com/p/d4425b65c6e6

ONNX

  • 簡述
    ONNX是一種AI神經網絡模型的通用中間文件保存方法(可以理解成AI世界的XML),各種AI框架,Inference引擎,甚至OpenCV裏面的dnn onnx相關的模塊都可以解析ONNX文件並生成特定平臺和運行框架所支持的神經網絡模型。ONNX本身不是AI神經網絡運行框架,只是AI神經網絡模型通用中間描述文件格式

  • GitHub鏈接
    https://github.com/onnx/onnx

  • 編程語言
    C++ / Python

  • 熱度
    5星

TensorRT

  • 簡述
    TensorRT是NVIDIA家的開源AI神經網絡Inference引擎,支持解析和轉換ONNX格式的神經網絡模型部署到支持CUDA的GPU上運行。目前TensorRT僅支持在NVIDIA家的產品部署AI神經網絡模型,支持的平臺有NVIDIA各種支持CUDA 9.0以上的顯卡,嵌入式SOC平臺(Jetson TX1/TX2/Nano/Xavier 等)

  • GitHub鏈接
    https://github.com/NVIDIA/TensorRT

  • 編程語言
    C++

  • 熱度
    3星

MNN

  • 簡述
    MNN是阿里家開源的一款嵌入式Linux/Android平臺的嵌入式AI神經網絡Inference引擎。它在系統底層對ARM CPU代碼進行系統級優化,可以調配ARM CPU + GPU的算力資源進行AI神經網絡Inference運算。由於後發優勢,加上賈揚清大神入職阿里的加成,目前業界評價MNN對很多AI神經網絡在性能上的優化目前要優於ncnn, 這是後發優勢,也許ncnn會進一步升級趕上。目前由於MNN開源時間還不長,star數目小於ncnn

  • GitHub鏈接
    https://github.com/alibaba/MNN

  • 編程語言
    C++ / 少量 C語言

  • 熱度
    4星

ncnn

  • 簡述
    ncnn是騰訊家開源的一款嵌入式跨平臺平臺的嵌入式AI神經網絡Inference引擎。它在系統底層對ARM CPU代碼進行系統級優化,可以調配ARM CPU + GPU的算力資源進行AI神經網絡Inference運算。ncnn比MNN開源更早,不過它看起來更專注於Android平臺,對Android系統平臺優化得更好

  • GitHub鏈接
    https://github.com/Tencent/ncnn

  • 編程語言
    三分之二 C++ / 三分之一 C語言

  • 熱度
    5星

TVM

  • 簡述
    TVM是青年學者陳天奇主導的跨平臺基於編譯方法部署的AI神經網絡部署的方法。TVM項目的想法是做AI神經網絡界的LLVM神經網絡編譯器,通過跨平臺交叉編譯的方法,將AI神經網絡編譯成目標平臺的運行庫,然後在tvm runtime運行。tvm runtime本身不依賴其它第三方庫。

  • GitHub鏈接
    https://github.com/dmlc/tvm

  • 編程語言
    C++ / Python

  • 熱度
    4星半

TensorFlow Lite

ArmNN

  • 簡述
    ArmNN是Arm公司開源的基於arm嵌入式設備的inference框架,在Arm Cortex-A CPUs、Arm Mali GPUs、Arm Machine Learning processor都可以達到很高的加速效果。不過可惜的是,由於缺乏文檔及教程,該框架在國內推廣的程度不高,目前Github的更新迭代速度也不快。相對於其他AI神經網絡Inference框架如NCNN、Tengine、MNN等等,ArmNN的知名度顯得很小。不過有用戶反饋ArmNN對ARM芯片上的算力進行統一管理和加速的效果很好,是一個被低估的框架

  • GitHub鏈接
    https://github.com/ARM-software/armnn

  • 編程語言
    C++

  • 熱度
    2星

Tengine

  • 簡述
    Tengine 是OPEN AI LAB公司開發的針對ARM公司中高端應用級CPU Cortex-A系列(參考CPU Cortex-A72) 開發的AI神經網絡Inference引擎。同時支持Linux和Android系統,目前項目更新迭代速度並不快

  • GitHub鏈接
    https://github.com/OAID/Tengine

  • 編程語言
    C++ / 少量 C語言

  • 熱度
    2星半

Tengine-lite

  • 簡述
    Tengine 是OPEN AI LAB公司開發的針對ARM公司中低端實時控制級 Cortex-M 開發的AI神經網絡Inference引擎,純C語言打造,支持RTOS系統,是目前少有的支持嵌入式裸機和RTOS系統的AI神經網絡Inference引擎

  • GitHub鏈接
    https://github.com/OAID/Tengine-lite

  • 編程語言
    C語言

  • 熱度
    1星

Mace

  • 簡述
    Mace是小米公司開發的一款支持ARM Cortex-A 系列手機級CPU的神經網絡AI Inference引擎。能夠同時管理調度CPU 和 GPU的算力,支持Windows, Linux, Android等多個系統,對高通手機開發平臺的支持和優化做得比較出色。

  • 編程語言
    C++ / 少量 Python和C語言

  • GitHub鏈接
    https://github.com/XiaoMi/mace

  • 熱度
    3星半

Paddle-Mobile

  • 簡述
    Paddle-Mobile是百度家的一款嵌入式AI神經網絡Infrence框架, 中文名叫飛槳,高性能支持ARM CPU,支持Mali GPU, 支持Andreno GPU, 支持蘋果設備的GPU Metal實現,支持ZU5、ZU9等FPGA開發板,支持樹莓派等arm-linux開發板。目前在中文開源資料比較豐富

  • GitHub鏈接
    https://github.com/PaddlePaddle/paddle-mobile

  • 編程語言
    C++ / 少量 C語言

  • 熱度
    4星

OpenCV dnn

  • 簡述
    dnn 是opencv裏面用於deep learning AI神經網絡inference的一個模塊(據說有training的功能,但是一般不用)。dnn模塊從opencv 3.1開始就在opencv_contrib庫裏面,在3.3版中,它被提到了主倉庫中。新版OpenCV dnn模塊目前支持Caffe、TensorFlow、Torch、PyTorch等深度學習框架。從3.4開始,dnn模塊開始支持onnx格式的AI神經網絡模型部署。
    opencv dnn模塊相比於其它AI神經網絡 Inference引擎優點在於它依託於Opencv這個傳統的計算機視覺庫,有大量的傳統視覺,圖像預處理和後處理相關的api函數可以用,並且格式兼容。另外dnn只依賴於opencv, 不依賴其它的庫,所以可以和opencv一起部署的嵌入式Linux(不是Ubuntu, Debian, Android這種發行版系統)最小系統上,可以運用到各種更細分的領域。
    當然opencv dnn趕上時代潮流,進入opencv主倉庫的時間比較晚,支持的AI神經網絡模型並不算多,速度和計算精度性能優化不是特別好,版本迭代速度也不快,相比於其它家互聯網公司主推的AI Inference引擎,其對gpu, cpu統一計算資源管理優化程度可能也不算特別好。不過從Opencv 4.x以後的版本看,dnn模塊越來越受官方重視,建議大家嘗試4.x以後的版本。

  • GitHub鏈接
    https://github.com/opencv/opencv/tree/master/modules/dnn

  • 編程語言
    C++ / 少量 C語言

  • 熱度
    3星半

Dlib

  • 簡述
    Dlib是一個現代C++語言編寫的工具包,包含機器學習算法和工具,用於用C++創建複雜的軟件來解決現實世界中的問題。它被廣泛應用於工業和學術界,包括機器人、嵌入式設備、移動電話和大型高性能計算環境。
    Dlib 在傳統機器學習領域的算法庫非常豐富,但是深度學習領域進入比較晚,支持的模型不算最新。不過Dlib在人臉識別領域,關鍵點識別做得還是不錯,並且可以和OpenCV的Mat格式進行轉換兼容,這樣配合Opencv做人臉識別應該是不錯的選擇。不過Dlib的中文資料略少。

  • GitHub鏈接
    https://github.com/davisking/dlib

  • 編程語言
    C++

  • 熱度
    3星半



作者:火哥的簡書
鏈接:https://www.jianshu.com/p/d4425b65c6e6
來源:簡書
著作權歸作者所有。商業轉載請聯繫作者獲得授權,非商業轉載請註明出處。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章