国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

深度學(xué)習(xí)模型部署綜述(ONNX/NCNN/OpenVINO/TensorRT)

這篇具有很好參考價(jià)值的文章主要介紹了深度學(xué)習(xí)模型部署綜述(ONNX/NCNN/OpenVINO/TensorRT)。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

點(diǎn)擊下方卡片,關(guān)注“自動(dòng)駕駛之心”公眾號

ADAS巨卷干貨,即可獲取

今天自動(dòng)駕駛之心很榮幸邀請到邏輯牛分享深度學(xué)習(xí)部署的入門介紹,帶大家盤一盤ONNX、NCNN、OpenVINO等框架的使用場景、框架特點(diǎn)及代碼示例。如果您有相關(guān)工作需要分享,請?jiān)谖哪┞?lián)系我們!

>>點(diǎn)擊進(jìn)入→自動(dòng)駕駛之心【模型部署】技術(shù)交流群

后臺回復(fù)【模型部署工程】獲取基于TensorRT的分類、檢測任務(wù)的部署源碼!

費(fèi)盡心血訓(xùn)練好的深度學(xué)習(xí)模型如何給別人展示?只在服務(wù)器上運(yùn)行demo怎么吸引別人的目光?怎么才能讓自己的成果落地?這篇文章帶你進(jìn)入模型部署的大門。

0 前言

模型部署的步驟:

  1. 訓(xùn)練一個(gè)深度學(xué)習(xí)模型;

  2. 使用不同的推理框架對模型進(jìn)行推理轉(zhuǎn)換;

  3. 在應(yīng)用平臺運(yùn)行轉(zhuǎn)換好的模型。

步驟看起來比較簡單,但是牽扯的到的知識還是比較多。在實(shí)際應(yīng)用過程中,我們使用的模型通常不會太簡單,因?yàn)橐_保模型的精度。但是,實(shí)際應(yīng)用場景往往需要模型速度與精度能達(dá)到一個(gè)較好的平衡。因此這就需要在算法(剪枝,壓縮等)與底層(手寫加速算作)去優(yōu)化模型。但是,我們現(xiàn)在可以站在巨人的肩膀上去眺望世界,因此,該文章會給大家介紹一些常用的開源推理框架,大家一起參考學(xué)習(xí)。畢竟大牛團(tuán)隊(duì)做出來的好用一些。。。

1 ONNX、NCNN、OpenVINO、 TensorRT、Mediapipe模型部署那家強(qiáng)?

1.1 ONNX

簡介:

開放神經(jīng)網(wǎng)絡(luò)交換ONNX(Open Neural Network Exchange)是一套表示深度神經(jīng)網(wǎng)絡(luò)模型的開放格式,由微軟和Facebook于2017推出,然后迅速得到了各大廠商和框架的支持。通過短短幾年的發(fā)展,已經(jīng)成為表示深度學(xué)習(xí)模型的實(shí)際標(biāo)準(zhǔn),并且通過ONNX-ML,可以支持傳統(tǒng)非神經(jīng)網(wǎng)絡(luò)機(jī)器學(xué)習(xí)模型,大有一統(tǒng)整個(gè)AI模型交換標(biāo)準(zhǔn)。ONNX定義了一組與環(huán)境和平臺無關(guān)的標(biāo)準(zhǔn)格式,為AI模型的互操作性提供了基礎(chǔ),使AI模型可以在不同框架和環(huán)境下交互使用。硬件和軟件廠商可以基于ONNX標(biāo)準(zhǔn)優(yōu)化模型性能,讓所有兼容ONNX標(biāo)準(zhǔn)的框架受益,簡單來說,ONNX就是模型轉(zhuǎn)換的中間人。

使用場景:
ncnn

無論你使用什么樣的訓(xùn)練框架來訓(xùn)練模型(比如TensorFlow/Pytorch/OneFlow/Paddle),你都可以在訓(xùn)練后將這些框架的模型統(tǒng)一轉(zhuǎn)為ONNX存儲。ONNX文件不僅存儲了神經(jīng)網(wǎng)絡(luò)模型的權(quán)重,還存儲了模型的結(jié)構(gòu)信息、網(wǎng)絡(luò)中各層的輸入輸出等一些信息。目前,ONNX主要關(guān)注在模型預(yù)測方面(inferring),將轉(zhuǎn)換后的ONNX模型,轉(zhuǎn)換成我們需要使用不同框架部署的類型,可以很容易的部署在兼容ONNX的運(yùn)行環(huán)境中。

使用方法:

[代碼示例]在 ONNX 模型上運(yùn)行形狀推理:https://github.com/onnx/onnx

import?onnx
from?onnx?import?helper,?shape_inference
from?onnx?import?TensorProto


#?預(yù)處理:創(chuàng)建一個(gè)包含兩個(gè)節(jié)點(diǎn)的模型,Y是未知的
node1?=?helper.make_node("Transpose",?["X"],?["Y"],?perm=[1,?0,?2])
node2?=?helper.make_node("Trans
?????????????????????????
?????????????????????????
?????????????????????????
?????????????????????????pose",?["Y"],?["Z"],?perm=[1,?0,?2])

graph?=?helper.make_graph(
????[node1,?node2],
????"two-transposes",
????[helper.make_tensor_value_info("X",?TensorProto.FLOAT,?(2,?3,?4))],
????[helper.make_tensor_value_info("Z",?TensorProto.FLOAT,?(2,?3,?4))],
)

original_model?=?helper.make_model(graph,?producer_name="onnx-examples")

#?檢查模型并打印Y的信息
onnx.checker.check_model(original_model)
print(f"Before?shape?inference,?the?shape?info?of?Y?is:\n{original_model.graph.value_info}")

#?在模型上進(jìn)行推理
inferred_model?=?shape_inference.infer_shapes(original_model)

#?檢查模型并打印Y的信息
onnx.checker.check_model(inferred_model)
print(f"After?shape?inference,?the?shape?info?of?Y?is:\n{inferred_model.graph.value_info}")

1.2 NCNN

簡介:

ncnn 是一個(gè)為手機(jī)端極致優(yōu)化的高性能神經(jīng)網(wǎng)絡(luò)前向計(jì)算框架,也是騰訊優(yōu)圖實(shí)驗(yàn)室成立以來的第一個(gè)開源項(xiàng)目。ncnn 從設(shè)計(jì)之初深刻考慮手機(jī)端的部署和使用,無第三方依賴,跨平臺,手機(jī)端 CPU 的速度快于目前所有已知的開源框架?;?ncnn,開發(fā)者能夠?qū)⑸疃葘W(xué)習(xí)算法輕松移植到手機(jī)端高效執(zhí)行,開發(fā)出人工智能 App。ncnn 目前已在騰訊多款應(yīng)用中使用,如 QQ、Qzone、微信、天天P圖等。

使用場景:
ncnn

從NCNN的發(fā)展矩陣可以看出,NCNN覆蓋了幾乎所有常用的系統(tǒng)平臺,尤其是在移動(dòng)平臺上的適用性更好,在Linux、Windows和Android、以及iOS、macOS平臺上都可以使用GPU來部署模型。

框架特點(diǎn):
  • 支持卷積神經(jīng)網(wǎng)絡(luò),支持多輸入和多分支結(jié)構(gòu),可計(jì)算部分分支

  • 無任何第三方庫依賴,不依賴 BLAS/NNPACK 等計(jì)算框架

  • 純 C++ 實(shí)現(xiàn),跨平臺,支持 Android / iOS 等

  • ARM Neon 匯編級良心優(yōu)化,計(jì)算速度極快

  • 精細(xì)的內(nèi)存管理和數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì),內(nèi)存占用極低

  • 支持多核并行計(jì)算加速,ARM big.LITTLE CPU 調(diào)度優(yōu)化

  • 支持基于全新低消耗的 Vulkan API GPU 加速

  • 可擴(kuò)展的模型設(shè)計(jì),支持 8bit 量化和半精度浮點(diǎn)存儲,可導(dǎo)入 caffe/pytorch/mxnet/onnx/darknet/keras/tensorflow(mlir) 模型

  • 支持直接內(nèi)存零拷貝引用加載網(wǎng)絡(luò)模型

  • 可注冊自定義層實(shí)現(xiàn)并擴(kuò)展

使用方法:

[代碼示例]輸入數(shù)據(jù)并推理輸出:https://github.com/Tencent/ncnn/wiki

#include?<opencv2/core/core.hpp>
#include?<opencv2/highgui/highgui.hpp>
#include?"net.h"

int?main()
{
?//?opencv讀取輸入圖片
????cv::Mat?img?=?cv::imread("image.ppm",?CV_LOAD_IMAGE_GRAYSCALE);
????int?w?=?img.cols;
????int?h?=?img.rows;

????//?減均值以及縮放操作,最后輸入數(shù)據(jù)的值域?yàn)閇-1,1]
????ncnn::Mat?in?=?ncnn::Mat::from_pixels_resize(img.data,?ncnn::Mat::PIXEL_GRAY,?w,?h,?60,?60);
????float?mean[1]?=?{?128.f?};
????float?norm[1]?=?{?1/128.f?};
????in.substract_mean_normalize(mean,?norm);
?
?//?構(gòu)建NCNN的net,并加載轉(zhuǎn)換好的模型
????ncnn::Net?net;
????net.load_param("model.param");
????net.load_model("model.bin");

?//?創(chuàng)建網(wǎng)絡(luò)提取器,設(shè)置網(wǎng)絡(luò)輸入,線程數(shù),light模式等等
????ncnn::Extractor?ex?=?net.create_extractor();
????ex.set_light_mode(true);
????ex.set_num_threads(4);
????ex.input("data",?in);
?//?調(diào)用extract接口,完成網(wǎng)絡(luò)推理,獲得輸出結(jié)果
????ncnn::Mat?feat;
????ex.extract("output",?feat);

????return?0;

1.3 OpenVINO

簡介:

OpenVINO是一種可以加快高性能計(jì)算機(jī)視覺和深度學(xué)習(xí)視覺應(yīng)用開發(fā)速度的工具套件,支持各種英特爾平臺的硬件加速器上進(jìn)行深度學(xué)習(xí),并且允許直接異構(gòu)執(zhí)行。OpenVINO?工具包是用于快速開發(fā)應(yīng)用程序和解決方案的綜合工具包,可解決各種任務(wù),包括模擬人類視覺,自動(dòng)語音識別,自然語言處理,推薦系統(tǒng)等。該工具包基于最新一代的人工神經(jīng)網(wǎng)絡(luò),包括卷積神經(jīng)網(wǎng)絡(luò)(CNN),循環(huán)和基于注意力的網(wǎng)絡(luò),可在英特爾?硬件上擴(kuò)展計(jì)算機(jī)視覺和非視覺工作負(fù)載,從而最大限度地提高性能。它通過從邊緣到云的高性能,人工智能和深度學(xué)習(xí)推理來加速應(yīng)用程序。

使用場景:
ncnn
框架特點(diǎn):

OpenVINO在模型部署前,首先會對模型進(jìn)行優(yōu)化,模型優(yōu)化器會對模型的拓?fù)浣Y(jié)構(gòu)進(jìn)行優(yōu)化,去掉不需要的層,對相同的運(yùn)算進(jìn)行融合、合并以加快運(yùn)算效率,減少內(nèi)存拷貝;FP16、INT8量化也可以在保證精度損失很小的前提下減小模型體積,提高模型的性能。在部署方面,OpenVIVO的開發(fā)也是相對比較簡單的,提供了C、C++和python3種語言編程接口。它最大的優(yōu)勢呢,其實(shí)還是在Intel的不同硬件平臺上進(jìn)行部署的時(shí)候,移植會很方便。推理引擎對不同的硬件提供統(tǒng)一的接口,底層實(shí)現(xiàn)直接調(diào)用硬件指令集的加速庫,應(yīng)用程序開發(fā)人員不需要關(guān)心底層的硬件實(shí)現(xiàn),即可在不同的硬件平臺上加速模型推理。

  • 在邊緣啟用基于CNN的深度學(xué)習(xí)推理

  • 支持通過英特爾?Movidius?VPU在英特爾?CPU,英特爾?集成顯卡,英特爾?神經(jīng)計(jì)算棒2和英特爾?視覺加速器設(shè)計(jì)之間進(jìn)行異構(gòu)執(zhí)行

  • 通過易于使用的計(jì)算機(jī)視覺功能庫和預(yù)先優(yōu)化的內(nèi)核加快上市時(shí)間

  • 包括對計(jì)算機(jī)視覺標(biāo)準(zhǔn)(包括OpenCV *和OpenCL?)的優(yōu)化調(diào)用

使用方法:

[代碼示例]在應(yīng)用程序中實(shí)現(xiàn)典型的 OpenVINO? 運(yùn)行推理:https://docs.openvino.ai/latest/openvino_docs_OV_UG_Integrate_OV_with_your_application.html

#include?<openvino/openvino.hpp>
//?1.創(chuàng)建?OpenVINO??核心以管理可用設(shè)備和讀取模型對象
ov::Core?core;
//?2.為特定設(shè)備編譯模型
ov::CompiledModel?compiled_model?=?core.compile_model("model.onnx",?"AUTO");
//?3.創(chuàng)建推理請求
ov::InferRequest?infer_request?=?compiled_model.create_infer_request();
//?4.設(shè)置輸入
//?獲取模型的輸入端口
auto?input_port?=?compiled_model.input();
//?從外部存儲器創(chuàng)建張量
ov::Tensor?input_tensor(input_port.get_element_type(),?input_port.get_shape(),?memory_ptr);
//?為模型設(shè)置一個(gè)輸入張量
infer_request.set_input_tensor(input_tensor);
//?5.開始推理
infer_request.start_async();
infer_request.wait();
//?6.處理推理結(jié)果
//?通過tensor_name獲取輸出張量
auto?output?=?infer_request.get_tensor("tensor_name");
const?float?\*output_buffer?=?output.data<const?float>();
//?output_buffer[]?-?訪問輸出張量數(shù)據(jù)
//?7.釋放分配的對象(僅適用于C)
ov_shape_free(&input_shape);
ov_tensor_free(output_tensor);
ov_output_const_port_free(input_port);
ov_tensor_free(tensor);
ov_infer_request_free(infer_request);
ov_compiled_model_free(compiled_model);
ov_model_free(model);
ov_core_free(core);
//?為項(xiàng)目創(chuàng)建結(jié)構(gòu)
project/
???├──?CMakeLists.txt??-?CMake?file?to?build
???├──?...?????????????-?Additional?folders?like?includes/
???└──?src/????????????-?source?folder
???????└──?main.cpp
build/??????????????????-?build?directory
???...
//?創(chuàng)建?Cmake?腳本
cmake_minimum_required(VERSION?3.10)
set(CMAKE_CXX_STANDARD?11)

find_package(OpenVINO?REQUIRED)

add_executable(${TARGET_NAME}?src/main.cpp)

target_link_libraries(${TARGET_NAME}?PRIVATE?openvino::runtime)
//?構(gòu)建項(xiàng)目
cd?build/
cmake?../project
cmake?--build?.

1.4 TensorRT

簡介:

NVIDIA TensorRT? 是用于高性能深度學(xué)習(xí)推理的 SDK。此 SDK 包含深度學(xué)習(xí)推理優(yōu)化器和運(yùn)行時(shí)環(huán)境,可為深度學(xué)習(xí)推理應(yīng)用提供低延遲和高吞吐量。

在推理過程中,基于 TensorRT 的應(yīng)用程序的執(zhí)行速度可比 CPU 平臺的速度快 40 倍。借助 TensorRT,您可以優(yōu)化在所有主要框架中訓(xùn)練的神經(jīng)網(wǎng)絡(luò)模型,精確校正低精度,并最終將模型部署到超大規(guī)模數(shù)據(jù)中心、嵌入式或汽車產(chǎn)品平臺中。

TensorRT 以 NVIDIA 的并行編程模型 CUDA 為基礎(chǔ)構(gòu)建而成,可幫助您利用 CUDA-X 中的庫、開發(fā)工具和技術(shù),針對人工智能、自主機(jī)器、高性能計(jì)算和圖形優(yōu)化所有深度學(xué)習(xí)框架中的推理。

TensorRT 針對多種深度學(xué)習(xí)推理應(yīng)用的生產(chǎn)部署提供 INT8 和 FP16 優(yōu)化,例如視頻流式傳輸、語音識別、推薦和自然語言處理。推理精度降低后可顯著減少應(yīng)用延遲,這恰巧滿足了許多實(shí)時(shí)服務(wù)、自動(dòng)和嵌入式應(yīng)用的要求。

使用場景:
ncnn
框架特點(diǎn):

1. 權(quán)重與激活精度校準(zhǔn)

通過將模型量化為 INT8 來更大限度地提高吞吐量,同時(shí)保持高準(zhǔn)確度

2. 層與張量融合

通過融合內(nèi)核中的節(jié)點(diǎn),優(yōu)化 GPU 顯存和帶寬的使用

3. 內(nèi)核自動(dòng)調(diào)整

基于目標(biāo) GPU 平臺選擇最佳數(shù)據(jù)層和算法

4. 動(dòng)態(tài)張量顯存

更大限度減少顯存占用,并高效地為張量重復(fù)利用內(nèi)存

5. 多流執(zhí)行

用于并行處理多個(gè)輸入流的可擴(kuò)展設(shè)計(jì)

ncnn

圖片取自TensorRT的官網(wǎng),里面列出了TensorRT使用的一些技術(shù)??梢钥吹侥P土炕?、動(dòng)態(tài)內(nèi)存優(yōu)化、層的融合等技術(shù)均已經(jīng)在TensorRT中集成了,這也是它能夠極大提高模型推斷速度的原因。總體來說TensorRT將訓(xùn)練好的模型通過一系列的優(yōu)化技術(shù)轉(zhuǎn)化為了能夠在特定平臺(GPU)上以高性能運(yùn)行的代碼,也就是最后圖中生成的Inference Engine。

使用方法:

1.導(dǎo)出模型

2.選擇批次大小

3.選擇精度

4.轉(zhuǎn)換模型:

  • 使用 TF-TRT

  • 從文件自動(dòng)轉(zhuǎn)換 ONNX

  • 使用 TensorRT API 手動(dòng)構(gòu)建網(wǎng)絡(luò)(C++或python)

5.部署模型:

  • 在 TensorFlow 中部署

  • 使用獨(dú)立的 TensorRT 運(yùn)行時(shí) API

  • 使用 NVIDIA Triton 推理服務(wù)器

具體模型轉(zhuǎn)換部署方法詳見:[Quick Start Guide :: NVIDIA Deep Learning TensorRT Documentation]:https://docs.nvidia.com/deeplearning/tensorrt/quick-start-guide/index.html

1.5 Mediapipe

簡介:

MediaPipe是一款由 Google Research 開發(fā)并開源的多媒體機(jī)器學(xué)習(xí)模型應(yīng)用框架。在谷歌,一系列重要產(chǎn)品,如 YouTube、Google Lens、ARCore、Google Home 以及 Nest,都已深度整合了 MediaPipe。作為一款跨平臺框架,MediaPipe 不僅可以被部署在服務(wù)器端,更可以在多個(gè)移動(dòng)端 (安卓和蘋果 iOS)和嵌入式平臺(Google Coral 和樹莓派)中作為設(shè)備端機(jī)器學(xué)習(xí)推理 (On-device Machine Learning Inference)框架。

除了上述的特性,MediaPipe 還支持 TensorFlow 和 TF Lite 的推理引擎(Inference Engine),任何 TensorFlow 和 TF Lite 的模型都可以在 MediaPipe 上使用。同時(shí),在移動(dòng)端和嵌入式平臺,MediaPipe 也支持設(shè)備本身的 GPU 加速。

使用場景:
ncnn
框架特點(diǎn):
  1. 端到端加速:內(nèi)置快速 ML 推理和處理,即使在普通硬件上也能加速

  2. 一次構(gòu)建,隨處部署:統(tǒng)一解決方案適用于安卓、iOS、桌面/云、Web 和物聯(lián)網(wǎng)

  3. 即用型解決方案:展示框架全部功能的尖端 ML 解決方案

  4. 免費(fèi)和開源:Apache 2.0下的框架和解決方案,完全可擴(kuò)展和可定制

使用方法:

[代碼示例]以人臉檢測為例:https://google.github.io/mediapipe/solutions/face_detection

import?cv2
import?mediapipe?as?mp
mp_face_detection?=?mp.solutions.face_detection
mp_drawing?=?mp.solutions.drawing_utils

#?對于靜態(tài)圖像:
IMAGE_FILES?=?[]
with?mp_face_detection.FaceDetection(
????model_selection=1,?min_detection_confidence=0.5)?as?face_detection:
??for?idx,?file?in?enumerate(IMAGE_FILES):
????image?=?cv2.imread(file)
????#?將BGR圖像轉(zhuǎn)換為RGB并使用MediaPipe人臉檢測對其進(jìn)行處理.
????results?=?face_detection.process(cv2.cvtColor(image,?cv2.COLOR_BGR2RGB))

????#?繪制每張人臉的人臉檢測.
????if?not?results.detections:
??????continue
????annotated_image?=?image.copy()
????for?detection?in?results.detections:
??????print('Nose?tip:')
??????print(mp_face_detection.get_key_point(
??????????detection,?mp_face_detection.FaceKeyPoint.NOSE_TIP))
??????mp_drawing.draw_detection(annotated_image,?detection)
????cv2.imwrite('/tmp/annotated_image'?+?str(idx)?+?'.png',?annotated_image)

#?用于網(wǎng)絡(luò)攝像頭輸入:
cap?=?cv2.VideoCapture(0)
with?mp_face_detection.FaceDetection(
????model_selection=0,?min_detection_confidence=0.5)?as?face_detection:
??while?cap.isOpened():
????success,?image?=?cap.read()
????if?not?success:
??????print("Ignoring?empty?camera?frame.")
??????#?如果加載視頻,請使用“中斷”而不是“繼續(xù)”.
??????continue

????#?若要提高性能,可以選擇將圖像標(biāo)記為不可寫以通過引用傳遞.
????image.flags.writeable?=?False
????image?=?cv2.cvtColor(image,?cv2.COLOR_BGR2RGB)
????results?=?face_detection.process(image)

????#?在圖像上繪制人臉檢測注釋.
????image.flags.writeable?=?True
????image?=?cv2.cvtColor(image,?cv2.COLOR_RGB2BGR)
????if?results.detections:
??????for?detection?in?results.detections:
????????mp_drawing.draw_detection(image,?detection)
????#?水平翻轉(zhuǎn)圖像以獲得自拍視圖顯示.
????cv2.imshow('MediaPipe?Face?Detection',?cv2.flip(image,?1))
????if?cv2.waitKey(5)?&?0xFF?==?27:
??????break
cap.release()

2.框架對比

應(yīng)用平臺:

模型推理部署框架 應(yīng)用平臺
NCNN 移動(dòng)端
OpenVINO CPU,GPU,嵌入式平臺都可以使用,尤其是在CPU上首選OPenVINO。DepthAI嵌入式空間AI平臺。
TensorRT 只能用在NIVDIA的GPU上的推理框架。NIVDIA的Jetson平臺。
Mediapipe 服務(wù)端,移動(dòng)端,嵌入式平臺,TPU。

研發(fā)單位:

  • 騰訊公司開發(fā)的移動(dòng)端平臺部署工具——NCNN;

  • Intel公司針對自家設(shè)備開開發(fā)的部署工具——OpenVINO;

  • NVIDIA公司針對自家GPU開發(fā)的部署工具——TensorRT;

  • Google針對自家硬件設(shè)備和深度學(xué)習(xí)框架開發(fā)的部署工具——Mediapipe;

  • 由微軟、亞馬遜 、Facebook 和 IBM 等公司共同開發(fā)的開放神經(jīng)網(wǎng)絡(luò)交換格式——ONNX;

如何選擇:

  • ONNXRuntime 是可以運(yùn)行在多平臺 (Windows,Linux,Mac,Android,iOS) 上的一款推理框架,它接受 ONNX 格式的模型輸入,支持 GPU 和 CPU 的推理。唯一不足就是 ONNX 節(jié)點(diǎn)粒度較細(xì),推理速度有時(shí)候比其他推理框架如 TensorRT 較低。

  • NCNN是針對手機(jī)端的部署。優(yōu)勢是開源較早,有非常穩(wěn)定的社區(qū),開源影響力也較高。

  • OpenVINO 是 Intel 家出的針對 Intel 出品的 CPU 和 GPU 友好的一款推理框架,同時(shí)它也是對接不同訓(xùn)練框架如 TensorFlow,Pytorch,Caffe 等。不足之處可能是只支持 Intel 家的硬件產(chǎn)品。

  • TensorRT 針對 NVIDIA 系列顯卡具有其他框架都不具備的優(yōu)勢,如果運(yùn)行在 NVIDIA 顯卡上, TensorRT 一般是所有框架中推理最快的。一般的主流的訓(xùn)練框架如TensorFlow 和 Pytorch 都能轉(zhuǎn)換成 TensorRT 可運(yùn)行的模型。當(dāng)然了,TensorRT 的限制就是只能運(yùn)行在 NVIDIA 顯卡上,同時(shí)不開源 kernel。

  • MediaPipe 不支持除了tensorflow之外的其他深度學(xué)習(xí)框架。MediaPipe 的主要用例是使用推理模型和其他可重用組件對應(yīng)用機(jī)器學(xué)習(xí)管道進(jìn)行快速原型設(shè)計(jì)。MediaPipe 還有助于將機(jī)器學(xué)習(xí)技術(shù)部署到各種不同硬件平臺上的演示和應(yīng)用程序中,為移動(dòng)、桌面/云、web和物聯(lián)網(wǎng)設(shè)備構(gòu)建世界級ML解決方案和應(yīng)用程序。

3.小結(jié)

本文主要介紹了5種推理框架,目的是使大家更加直觀的了解這幾種框架的特點(diǎn),應(yīng)用場景以及如何選擇,為大家之后的學(xué)習(xí)提供有限的幫助,不足之處請大家多多指正。

參考資料

  1. https://learn.microsoft.com/zh-cn/windows/ai/

  2. https://github.com/Tencent/ncnn

  3. https://zhuanlan.zhihu.com/p/344442534

  4. https://github.com/google/mediapipe

  5. https://www.zhihu.com/question/346965029/answer/2395418101

自動(dòng)駕駛之心】全棧技術(shù)交流群

自動(dòng)駕駛之心是首個(gè)自動(dòng)駕駛開發(fā)者社區(qū),聚焦目標(biāo)檢測、語義分割、全景分割、實(shí)例分割、關(guān)鍵點(diǎn)檢測、車道線、目標(biāo)跟蹤、3D目標(biāo)檢測、BEV感知、多傳感器融合、SLAM、光流估計(jì)、深度估計(jì)、軌跡預(yù)測、高精地圖、NeRF、規(guī)劃控制、模型部署落地、自動(dòng)駕駛仿真測試、硬件配置、AI求職交流等方向;

添加汽車人助理微信邀請入群

備注:學(xué)校/公司+方向+昵稱文章來源地址http://www.zghlxwxcb.cn/news/detail-721469.html

到了這里,關(guān)于深度學(xué)習(xí)模型部署綜述(ONNX/NCNN/OpenVINO/TensorRT)的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 深度學(xué)習(xí)模型部署(六)TensorRT工作流and入門demo

    深度學(xué)習(xí)模型部署(六)TensorRT工作流and入門demo

    官方給出的步驟: 總結(jié)下來可以分為兩大部分: 模型生成:將onnx經(jīng)過一系列優(yōu)化,生成tensorrt的engine模型 選擇batchsize,選擇精度precision,模型轉(zhuǎn)換 模型推理:使用python或者C++進(jìn)行推理 生成trt模型: 然后就坐等輸出模型,我們可以根據(jù)log信息看一下tensorRT都干了什么: 得到

    2024年03月13日
    瀏覽(20)
  • 【深度學(xué)習(xí)】YOLOv5實(shí)例分割 數(shù)據(jù)集制作、模型訓(xùn)練以及TensorRT部署

    【深度學(xué)習(xí)】YOLOv5實(shí)例分割 數(shù)據(jù)集制作、模型訓(xùn)練以及TensorRT部署

    yolov5-seg:官方地址:https://github.com/ultralytics/yolov5/tree/v6.2 TensorRT:8.x.x 語言:C++ 系統(tǒng):ubuntu18.04 前言:由于yolo倉中提供了標(biāo)準(zhǔn)coco的json文件轉(zhuǎn)txt代碼,因此需要將labelme的json文件轉(zhuǎn)為coco json. labelme JSON 轉(zhuǎn)COCO JSON 使用labelme的CreatePolygons按鈕開始繪制多邊形,然后保存為json格式。

    2024年02月06日
    瀏覽(28)
  • yolov8量化部署(基于openvino和tensorrt)

    yolov8量化部署(基于openvino和tensorrt)

    環(huán)境配置: 將pytorch模型轉(zhuǎn)為openvino模型: python量化腳本:(改編自https://github.com/openvinotoolkit/openvino_notebooks/blob/main/notebooks/230-yolov8-optimization/230-yolov8-optimization.ipynb) python推理: C++推理:(openvino庫讀取xml文件在compile_model時(shí)報(bào)錯(cuò),暫時(shí)不明原因,改用onnx格式推理) 參考:h

    2024年02月09日
    瀏覽(24)
  • yolov8seg模型轉(zhuǎn)onnx轉(zhuǎn)ncnn

    yolov8seg模型轉(zhuǎn)onnx轉(zhuǎn)ncnn

    yolov8是yolo的最新版本,可做圖像分類,目標(biāo)檢測,實(shí)例分割,姿態(tài)估計(jì)。 主頁地址 這里測試一個(gè)分割模型。 模型如下 選yolov8 n -seg模型,轉(zhuǎn)成onnx,再轉(zhuǎn)ncnn測試。 yolov8 s -seg的ncnn版可以直接用這個(gè) 如果用python版的onnx,可以直接用notebook轉(zhuǎn),然后下載。 python版onnx代碼參考 但

    2024年02月05日
    瀏覽(60)
  • 深度學(xué)習(xí)-Python調(diào)用ONNX模型

    目錄 ONNX模型使用流程 獲取ONNX模型方法 使用ONNX模型 手動(dòng)編寫ONNX模型 Python調(diào)用ONNX模型 常見錯(cuò)誤 錯(cuò)誤raise ValueError...: 錯(cuò)誤:Load model model.onnx failed 錯(cuò)誤:\\\'CUDAExecutionProvider\\\' is not in available provider 錯(cuò)誤:ONNXRuntimeError 錯(cuò)誤:\\\'CUDAExecutionProvider\\\' is not in available provider ONNX(Open Ne

    2024年02月05日
    瀏覽(17)
  • 【深度學(xué)習(xí)】pytorch pth模型轉(zhuǎn)為onnx模型后出現(xiàn)冗余節(jié)點(diǎn)“identity”,onnx模型的冗余節(jié)點(diǎn)“identity”

    【深度學(xué)習(xí)】pytorch pth模型轉(zhuǎn)為onnx模型后出現(xiàn)冗余節(jié)點(diǎn)“identity”,onnx模型的冗余節(jié)點(diǎn)“identity”

    onnx模型的冗余節(jié)點(diǎn)“identity”如下圖。 首先,確保您已經(jīng)安裝了onnx-simplifier庫: 然后,您可以按照以下方式使用onnx-simplifier庫: 通過這個(gè)過程,onnx-simplifier庫將會檢測和移除不必要的\\\"identity\\\"節(jié)點(diǎn),從而減少模型中的冗余。 請注意,使用onnx-simplifier庫可能會改變模型的計(jì)算

    2024年02月09日
    瀏覽(60)
  • 改進(jìn)的yolov5目標(biāo)檢測-yolov5替換骨干網(wǎng)絡(luò)-yolo剪枝(TensorRT及NCNN部署)

    改進(jìn)的yolov5目標(biāo)檢測-yolov5替換骨干網(wǎng)絡(luò)-yolo剪枝(TensorRT及NCNN部署)

    2022.10.30 復(fù)現(xiàn)TPH-YOLOv5 2022.10.31 完成替換backbone為Ghostnet 2022.11.02 完成替換backbone為Shufflenetv2 2022.11.05 完成替換backbone為Mobilenetv3Small 2022.11.10 完成EagleEye對YOLOv5系列剪枝支持 2022.11.14 完成MQBench對YOLOv5系列量化支持 2022.11.16 完成替換backbone為EfficientNetLite-0 2022.11.26 完成替換backbone為

    2024年01月17日
    瀏覽(28)
  • 深度學(xué)習(xí)模型壓縮方法綜述

    深度學(xué)習(xí)模型壓縮方法綜述

    深度學(xué)習(xí)因其計(jì)算復(fù)雜度或參數(shù)冗余,在一些場景和設(shè)備上限制了相應(yīng)的模型部署,需要借助 模型壓縮 、系統(tǒng)優(yōu)化加速等方法突破瓶頸,本文主要介紹模型壓縮的各種方法,希望對大家有幫助。 我們知道,一定程度上, 網(wǎng)絡(luò)越深,參數(shù)越多,模型也會越復(fù)雜,但其最終效果

    2024年02月10日
    瀏覽(17)
  • 【深度學(xué)習(xí)】【Opencv】【GPU】python/C++調(diào)用onnx模型【基礎(chǔ)】

    【深度學(xué)習(xí)】【Opencv】【GPU】python/C++調(diào)用onnx模型【基礎(chǔ)】

    提示:博主取舍了很多大佬的博文并親測有效,分享筆記邀大家共同學(xué)習(xí)討論 OpenCV是一個(gè)基于BSD許可發(fā)行的跨平臺計(jì)算機(jī)視覺和機(jī)器學(xué)習(xí)軟件庫(開源),可以運(yùn)行在Linux、Windows、Android和Mac OS操作系統(tǒng)上??梢詫ytorch中訓(xùn)練好的模型使用ONNX導(dǎo)出,再使用opencv中的dnn模塊直接進(jìn)行

    2024年02月04日
    瀏覽(24)
  • 【深度學(xué)習(xí)】【Opencv】【CPU】Python/C++調(diào)用onnx模型【基礎(chǔ)】

    【深度學(xué)習(xí)】【Opencv】【CPU】Python/C++調(diào)用onnx模型【基礎(chǔ)】

    提示:博主取舍了很多大佬的博文并親測有效,分享筆記邀大家共同學(xué)習(xí)討論 OpenCV是一個(gè)基于BSD許可發(fā)行的跨平臺計(jì)算機(jī)視覺和機(jī)器學(xué)習(xí)軟件庫(開源),可以運(yùn)行在Linux、Windows、Android和Mac OS操作系統(tǒng)上??梢詫ytorch中訓(xùn)練好的模型使用ONNX導(dǎo)出,再使用opencv中的dnn模塊直接進(jìn)行

    2024年02月04日
    瀏覽(19)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包