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

【TensorRT】TensorRT 部署Yolov5模型(C++)

這篇具有很好參考價值的文章主要介紹了【TensorRT】TensorRT 部署Yolov5模型(C++)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。

源碼地址:

? 該項目代碼在本人GitHub代碼倉庫開源,本人GitHub主頁為:GitHub
? 項目代碼:

https://github.com/guojin-yan/Inference/blob/master/tensorrt/cpp_tensorrt_yolov5/cpp_tensorrt_yolov5.cpp

? NVIDIA TensorRT? 是用于高性能深度學(xué)習(xí)推理的 SDK,可為深度學(xué)習(xí)推理應(yīng)用提供低延遲和高吞吐量。詳細(xì)安裝方式參考以下博客: NVIDIA TensorRT 安裝 (Windows C++)
【TensorRT】TensorRT 部署Yolov5模型(C++)

1. TensorRT部署模型基本步驟

? 經(jīng)典的一個TensorRT部署模型步驟為:onnx模型轉(zhuǎn)engine、讀取本地模型、創(chuàng)建推理引擎、創(chuàng)建推理上下文、創(chuàng)建GPU顯存緩沖區(qū)、配置輸入數(shù)據(jù)、模型推理以及處理推理結(jié)果。

1.1 onnx模型轉(zhuǎn)engine

? TensorRT支持多種模型文件,不過隨著onnx模型的發(fā)展,目前多種模型框架都將onnx模型當(dāng)作中間轉(zhuǎn)換格式,是的該模型結(jié)構(gòu)變得越來越通用,因此TensorRT目前主要在更新的就是針對該模型的轉(zhuǎn)換。TensorRT是可以直接讀取engine文件,對于onnx模型需要進(jìn)行一些列轉(zhuǎn)換配置,轉(zhuǎn)為engine引擎才可以進(jìn)行后續(xù)的推理,因此在進(jìn)行模型推理前,需要先進(jìn)行模型的轉(zhuǎn)換。項目中已經(jīng)提供了轉(zhuǎn)換方法接口:

void onnx_to_engine(std::string onnx_file_path, std::string engine_file_path, int type) {

	// 構(gòu)建器,獲取cuda內(nèi)核目錄以獲取最快的實(shí)現(xiàn)
	// 用于創(chuàng)建config、network、engine的其他對象的核心類
	nvinfer1::IBuilder* builder = nvinfer1::createInferBuilder(gLogger);
	const auto explicitBatch = 1U << static_cast<uint32_t>(nvinfer1::NetworkDefinitionCreationFlag::kEXPLICIT_BATCH);
	// 解析onnx網(wǎng)絡(luò)文件
	// tensorRT模型類
	nvinfer1::INetworkDefinition* network = builder->createNetworkV2(explicitBatch);
	// onnx文件解析類
	// 將onnx文件解析,并填充rensorRT網(wǎng)絡(luò)結(jié)構(gòu)
	nvonnxparser::IParser* parser = nvonnxparser::createParser(*network, gLogger);
	// 解析onnx文件
	parser->parseFromFile(onnx_file_path.c_str(), 2);
	for (int i = 0; i < parser->getNbErrors(); ++i) {
		std::cout << "load error: " << parser->getError(i)->desc() << std::endl;
	}
	printf("tensorRT load mask onnx model successfully!!!...\n");

	// 創(chuàng)建推理引擎
	// 創(chuàng)建生成器配置對象。
	nvinfer1::IBuilderConfig* config = builder->createBuilderConfig();
	// 設(shè)置最大工作空間大小。
	config->setMaxWorkspaceSize(16 * (1 << 20));
	// 設(shè)置模型輸出精度
	if (type == 1) {
		config->setFlag(nvinfer1::BuilderFlag::kFP16);
	}
	if (type == 2) {
		config->setFlag(nvinfer1::BuilderFlag::kINT8);
	}
	// 創(chuàng)建推理引擎
	nvinfer1::ICudaEngine* engine = builder->buildEngineWithConfig(*network, *config);
	// 將推理銀槍保存到本地
	std::cout << "try to save engine file now~~~" << std::endl;
	std::ofstream file_ptr(engine_file_path, std::ios::binary);
	if (!file_ptr) {
		std::cerr << "could not open plan output file" << std::endl;
		return;
	}
	// 將模型轉(zhuǎn)化為文件流數(shù)據(jù)
	nvinfer1::IHostMemory* model_stream = engine->serialize();
	// 將文件保存到本地
	file_ptr.write(reinterpret_cast<const char*>(model_stream->data()), model_stream->size());
	// 銷毀創(chuàng)建的對象
	model_stream->destroy();
	engine->destroy();
	network->destroy();
	parser->destroy();
	std::cout << "convert onnx model to TensorRT engine model successfully!" << std::endl;
}

1.2 讀取本地模型

? 此處讀取本地模型為讀取上一步保存在本地的engine二進(jìn)制文件,將模型文件信息讀取到內(nèi)存中。該文件保存了模型的所有信息以及電腦的配置信息,因此該模型文件不支持在不同電腦上使用。

std::ifstream file_ptr(model_path_engine, std::ios::binary);
size_t size = 0;
file_ptr.seekg(0, file_ptr.end);	// 將讀指針從文件末尾開始移動0個字節(jié)
size = file_ptr.tellg();	// 返回讀指針的位置,此時讀指針的位置就是文件的字節(jié)數(shù)
file_ptr.seekg(0, file_ptr.beg);	// 將讀指針從文件開頭開始移動0個字節(jié)
char* model_stream = new char[size];
file_ptr.read(model_stream, size);
file_ptr.close();

1.3 創(chuàng)建推理引擎

? 首先需要初始化日志記錄接口類,該類用于創(chuàng)建后續(xù)反序列化引擎使用;然后創(chuàng)建反序列化引擎,其主要作用是允許對序列化的功能上不安全的引擎進(jìn)行反序列化,接下調(diào)用反序列化引擎來創(chuàng)建推理引擎,這一步只需要輸入上一步中讀取的模型文件數(shù)據(jù)以及長度即可。

// 日志記錄接口
Logger logger;
// 反序列化引擎
nvinfer1::IRuntime* runtime = nvinfer1::createInferRuntime(logger);
// 推理引擎
nvinfer1::ICudaEngine* engine = runtime->deserializeCudaEngine(model_stream, size);

1.4 創(chuàng)建推理上下文

? 這里的推理上下文與OpenVINO中的推理請求相似,為后面進(jìn)行模型推理的類。

nvinfer1::IExecutionContext* context = engine->createExecutionContext();

1.5 創(chuàng)建GPU顯存緩沖區(qū)

? TensorRT是利用英偉達(dá)顯卡進(jìn)行模型推理的,但是我們的推理數(shù)據(jù)以及后續(xù)處理數(shù)據(jù)是在內(nèi)存中實(shí)現(xiàn)的,因此需要創(chuàng)建顯存緩沖區(qū),用于輸入推理數(shù)據(jù)以及讀取推理結(jié)果數(shù)據(jù)。

// 創(chuàng)建GPU顯存緩沖區(qū)
void** data_buffer = new void* [num_ionode];
// 創(chuàng)建GPU顯存輸入緩沖區(qū)
int input_node_index = engine->getBindingIndex(input_node_name);
cudaMalloc(&(data_buffer[input_node_index]), input_data_length * sizeof(float));
// 創(chuàng)建GPU顯存輸出緩沖區(qū)
int output_node_index = engine->getBindingIndex(output_node_name);
cudaMalloc(&(data_buffer[output_node_index]), output_data_length * sizeof(float));

1.6 配置輸入數(shù)據(jù)

? 配置輸入數(shù)據(jù)時只需要調(diào)用cudaMemcpyAsync()方法,便可將cuda流數(shù)據(jù)加載到與i里模型上。但數(shù)據(jù)需要根據(jù)模型要求進(jìn)行預(yù)處理,除此以外需要將數(shù)據(jù)結(jié)果加入到cuda流中。

// 創(chuàng)建輸入cuda流
cudaStream_t stream;
cudaStreamCreate(&stream);
std::vector<float> input_data(input_data_length);
memcpy(input_data.data(), BN_image.ptr<float>(), input_data_length * sizeof(float));
// 輸入數(shù)據(jù)由內(nèi)存到GPU顯存
cudaMemcpyAsync(data_buffer[input_node_index], input_data.data(), input_data_length * sizeof(float), cudaMemcpyHostToDevice, stream);

1.7 模型推理

context->enqueueV2(data_buffer, stream, nullptr);

1.8 處理推理結(jié)果

? 我們最后處理數(shù)據(jù)是在內(nèi)存上實(shí)現(xiàn)的,首先需要將數(shù)據(jù)由顯存讀取到內(nèi)存中。

float* result_array = new float[output_data_length];
cudaMemcpyAsync(result_array, data_buffer[output_node_index], output_data_length * sizeof(float), cudaMemcpyDeviceToHost, stream);

? 接下來就是根據(jù)模型輸出結(jié)果進(jìn)行數(shù)據(jù)處理,不同的模型會有不同的數(shù)據(jù)處理方式。

2. TensorRT 部署Yolov5模型

2.1 新建C++項目

? 右擊解決方案,選擇添加新建項目,添加一個C++空項目,將C++項目命名為:cpp_tensorrt_yolov5。進(jìn)入項目后,右擊源文件,選擇添加→新建項→C++文件(cpp),進(jìn)行的文件的添加。
? 右擊當(dāng)前項目,進(jìn)入屬性設(shè)置,配置TensorRT以及OpenCV的屬性。

設(shè)置包含目錄

C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.4\include
D:\Program Files\TensorRT-8.4.0.6\include
E:\OpenCV Source\opencv-4.5.5\build\include
E:\OpenCV Source\opencv-4.5.5\build\include\opencv2

設(shè)置 ** 庫目錄**:

C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.4\lib
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.4\lib\x64
D:\Program Files\TensorRT-8.4.0.6\lib
E:\OpenCV Source\opencv-4.5.5\build\x64\vc15\lib

設(shè)置附加依賴項

nvinfer.lib
nvinfer_plugin.lib
nvonnxparser.lib
nvparsers.lib
cublas.lib
cublasLt.lib
cuda.lib
cudadevrt.lib
cudart.lib
cudart_static.lib
cudnn.lib
cudnn64_8.lib
cudnn_adv_infer.lib
cudnn_adv_infer64_8.lib
cudnn_adv_train.lib
cudnn_adv_train64_8.lib
cudnn_cnn_infer.lib
cudnn_cnn_infer64_8.lib
cudnn_cnn_train.lib
cudnn_cnn_train64_8.lib
cudnn_ops_infer.lib
cudnn_ops_infer64_8.lib
cudnn_ops_train.lib
cudnn_ops_train64_8.lib
cufft.lib
cufftw.lib
curand.lib
cusolver.lib
cusolverMg.lib
cusparse.lib
nppc.lib
nppial.lib
nppicc.lib
nppidei.lib
nppif.lib
nppig.lib
nppim.lib
nppist.lib
nppisu.lib
nppitc.lib
npps.lib
nvblas.lib
nvjpeg.lib
nvml.lib
nvrtc.lib
OpenCL.lib
opencv_world455.lib

2.2 定義yolov5模型相關(guān)信息

const char* model_path_onnx = "E:/Text_Model/yolov5/yolov5s.onnx";
const char* model_path_engine = "E:/Text_Model/yolov5/yolov5s.engine";
const char* image_path = "E:/Text_dataset/YOLOv5/0001.jpg";
std::string lable_path = "E:/Git_space/Al模型部署開發(fā)方式/model/yolov5/lable.txt";
const char* input_node_name = "images";
const char* output_node_name = "output";
int num_ionode = 2;

2.3 讀取本地模型信息

std::ifstream file_ptr(model_path_engine, std::ios::binary);
	if (!file_ptr.good()) {
		std::cerr << "文件無法打開,請確定文件是否可用!" << std::endl;
}
size_t size = 0;
file_ptr.seekg(0, file_ptr.end);	// 將讀指針從文件末尾開始移動0個字節(jié)
size = file_ptr.tellg();	// 返回讀指針的位置,此時讀指針的位置就是文件的字節(jié)數(shù)
file_ptr.seekg(0, file_ptr.beg);	// 將讀指針從文件開頭開始移動0個字節(jié)
char* model_stream = new char[size];
file_ptr.read(model_stream, size);
file_ptr.close();

2.4 初始化推理引擎

在此處我們需要初始化反序列化引擎以及推理引擎,并創(chuàng)建用于推理的上下文。

Logger logger;
// 反序列化引擎
nvinfer1::IRuntime* runtime = nvinfer1::createInferRuntime(logger);
// 推理引擎
nvinfer1::ICudaEngine* engine = runtime->deserializeCudaEngine(model_stream, size);
// 上下文
nvinfer1::IExecutionContext* context = engine->createExecutionContext();

2.5 創(chuàng)建GPU顯存緩沖區(qū)

GPU顯存緩沖區(qū)的數(shù)量主要與模型的輸入輸出節(jié)點(diǎn)有關(guān),我們在此處只需要按照模型輸入輸出的節(jié)點(diǎn)數(shù)量進(jìn)行設(shè)置。

void** data_buffer = new void* [num_ionode];
// 創(chuàng)建GPU顯存輸入緩沖區(qū)
int input_node_index = engine->getBindingIndex(input_node_name);
nvinfer1::Dims input_node_dim = engine->getBindingDimensions(input_node_index);
size_t input_data_length = input_node_dim.d[1]* input_node_dim.d[2] * input_node_dim.d[3];
cudaMalloc(&(data_buffer[input_node_index]), input_data_length * sizeof(float));
// 創(chuàng)建GPU顯存輸出緩沖區(qū)
int output_node_index = engine->getBindingIndex(output_node_name);
nvinfer1::Dims output_node_dim = engine->getBindingDimensions(output_node_index);
size_t output_data_length = output_node_dim.d[1] * output_node_dim.d[2] ;
cudaMalloc(&(data_buffer[output_node_index]), output_data_length * sizeof(float));

2.6 配置模型輸入

? 首先對輸入圖片按照模型數(shù)據(jù)輸入要求進(jìn)行處理,首先是將圖片數(shù)據(jù)復(fù)制到正方形背景中,然后交換RGB通道、縮放至指定大小以及歸一化處理,在OpenCV中,blobFromImage()方法可以直接實(shí)現(xiàn)上述功能。

// 圖象預(yù)處理 - 格式化操作
cv::Mat image = cv::imread(image_path);
int max_side_length = std::max(image.cols, image.rows);
cv::Mat max_image = cv::Mat::zeros(cv::Size(max_side_length, max_side_length), CV_8UC3);
cv::Rect roi(0, 0, image.cols, image.rows);
image.copyTo(max_image(roi));
// 將圖像歸一化,并放縮到指定大小
cv::Size input_node_shape(input_node_dim.d[2], input_node_dim.d[3]);
cv::Mat BN_image = cv::dnn::blobFromImage(max_image, 1 / 255.0, input_node_shape, cv::Scalar(0, 0, 0), true, false);

? 接下來創(chuàng)建cuda流,將處理后的數(shù)據(jù)放置在input_data容器里;最后直接使用cudaMemcpyAsync()方法,將輸入數(shù)據(jù)輸送到顯存。

// 創(chuàng)建輸入cuda流
cudaStream_t stream;
cudaStreamCreate(&stream);
std::vector<float> input_data(input_data_length);
memcpy(input_data.data(), BN_image.ptr<float>(), input_data_length * sizeof(float));
// 輸入數(shù)據(jù)由內(nèi)存到GPU顯存
cudaMemcpyAsync(data_buffer[input_node_index], input_data.data(), input_data_length * sizeof(float), cudaMemcpyHostToDevice, stream);

2.7 模型推理

context->enqueueV2(data_buffer, stream, nullptr);

2.8 處理推理結(jié)果

? 首先讀取推理結(jié)果數(shù)據(jù),主要是將GPU顯存上的推理數(shù)據(jù)結(jié)果賦值到內(nèi)存上,方便后續(xù)對數(shù)據(jù)的進(jìn)一步處理。

float* result_array = new float[output_data_length];
cudaMemcpyAsync(result_array, data_buffer[output_node_index], output_data_length * sizeof(float), cudaMemcpyDeviceToHost, stream);

? 接下來就是處理數(shù)據(jù),Yolov5輸出結(jié)果為85x25200大小的數(shù)組,其中沒85個數(shù)據(jù)為一組,在該項目中我們提供了專門用于處理yolov5數(shù)據(jù)結(jié)果的結(jié)果處理類,因此在此處我們只需要調(diào)用該結(jié)果類即可:

ResultYolov5 result;
result.factor = max_side_length / (float) input_node_dim.d[2];
result.read_class_names(lable_path);
cv::Mat result_image = result.yolov5_result(image, result_array);

? 下圖為我們測試效果。
【TensorRT】TensorRT 部署Yolov5模型(C++)文章來源地址http://www.zghlxwxcb.cn/news/detail-425844.html

到了這里,關(guān)于【TensorRT】TensorRT 部署Yolov5模型(C++)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(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)擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

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

相關(guān)文章

  • 在ubuntu20.04上利用tensorrt部署yolov5(C++和Python接口)

    在ubuntu20.04上利用tensorrt部署yolov5(C++和Python接口)

    在ubuntu20.04上利用tensorrt部署yolov5(C++和Python接口)‘下個博客是yolov7的部署’ 一、CUDA、CUDNN、TensorRT以及OpenCV安裝 CUDA安裝 CUDNN安裝 TensorRT安裝 OpenCV安裝 二、YOLOv5部署 文件準(zhǔn)備 模型文件轉(zhuǎn)換 3.生成wts文件 4.生成部署引擎 5.端側(cè)部署模型測試圖片 6.視頻檢測 7.安卓部署 8.C+

    2024年02月02日
    瀏覽(47)
  • 使用Tensorrt部署,C++ API yolov7_pose模型

    使用Tensorrt部署,C++ API yolov7_pose模型

    雖然標(biāo)題叫部署yolov7_pose模型,但是接下來的教程可以使用Tensorrt部署任何pytorch模型。 倉庫地址:https://github.com/WongKinYiu/yolov7/tree/pose 系統(tǒng)版本:ubuntu18.4 驅(qū)動版本:CUDA Version: 11.4 在推理過程中,基于 TensorRT 的應(yīng)用程序的執(zhí)行速度可比 CPU 平臺的速度快 40 倍。借助 TensorRT,您

    2024年02月05日
    瀏覽(25)
  • 用C++部署yolov5模型

    要在C語言中部署YoloV5模型,可以使用以下步驟: 安裝C語言的深度學(xué)習(xí)庫,例如Darknet或者ncnn。 下載訓(xùn)練好的YoloV5模型權(quán)重文件(.pt文件)和模型配置文件(.yaml文件)。 將下載的權(quán)重文件和配置文件移動到C語言深度學(xué)習(xí)庫中指定的目錄下。 在C語言中編寫代碼,使用深度學(xué)習(xí)庫加

    2024年02月15日
    瀏覽(23)
  • YOLOv5 Tensorrt Python/C++部署

    YOLOv5 Tensorrt Python/C++部署

    https://www.bilibili.com/video/BV113411J7nk?p=1 https://github.com/Monday-Leo/Yolov5_Tensorrt_Win10 基于 Tensorrt 加速 Yolov5 6.0 支持 Windows10 支持 Python/C++ Tensorrt 8.2.1.8 Cuda 10.2 Cudnn 8.2.1( 特別注意需安裝兩個cuda10.2補(bǔ)丁 ) Opencv 3.4.6 Cmake 3.17.1 VS 2017 GTX1650 從yolov5 release v6.0下載.pt模型,這里以yolov5s.pt為例。

    2024年01月21日
    瀏覽(45)
  • 改進(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)
  • 使用TensorRT對yolov5進(jìn)行部署(基于python,超詳細(xì))

    使用TensorRT對yolov5進(jìn)行部署(基于python,超詳細(xì))

    哈嘍大家好 ! 我是唐宋宋宋,很榮幸與您相見?。?! 我的環(huán)境: cuda:11.1 cudnn:8.7.0 TensorRT:8.4.1.5 首先需要下載TensorRT,官網(wǎng)鏈接附下: NVIDIA TensorRT 8.x Download | NVIDIA Developer 注:下載TensorRT版本需要和你電腦上的cuda版本對應(yīng) yolov5的代碼需要大家上github自己扒 鏈接已經(jīng)提供

    2024年02月07日
    瀏覽(26)
  • C++模型部署:qt+yolov5/6+onnxruntime+opencv

    C++模型部署:qt+yolov5/6+onnxruntime+opencv

    作者平時主要是寫 c++ 庫的,界面方面了解不多,也沒有發(fā)現(xiàn)“美”的眼鏡,界面有點(diǎn)丑,大家多包涵。 本次介紹的項目主要是通過 cmake 構(gòu)建一個 基于 c++ 語言的,以 qt 為框架的,包含 opencv 第三方庫在內(nèi)的,跨平臺的,使用 ONNX RUNTIME 進(jìn)行前向推理的 yolov5/6 演示平臺。文章

    2024年02月05日
    瀏覽(23)
  • Opencv C++實(shí)現(xiàn)yolov5部署onnx模型完成目標(biāo)檢測

    頭文件 命名空間 結(jié)構(gòu)體 Net_config 里面存了三個閾值和模型地址,其中 置信度 ,顧名思義,看檢測出來的物體的精準(zhǔn)度。以測量值為中心,在一定范圍內(nèi),真值出現(xiàn)在該范圍內(nèi)的幾率。 endsWith()函數(shù) 判斷sub是不是s的子串 anchors_640圖像接收數(shù)組 根據(jù)圖像大小,選擇相應(yīng)長度的

    2024年02月13日
    瀏覽(24)
  • 2022.09.29更新 c++下面部署yolov5實(shí)例分割模型(六)

    2022.09.29更新 c++下面部署yolov5實(shí)例分割模型(六)

    2023.01.11 更新: 新增加onnxruntime的1.13.x版本支持。 由于onnxruntime從1.12升級到1.13之后,GetOutputName()這個API變成了GetOutputNameAllocated(),坑就出現(xiàn)在這里,新版api的返回值是一個unique_ptr指針,這就意味著他使用一次時候就失效了,所以在循環(huán)跑模型的時候基本的第二次都報錯

    2024年02月12日
    瀏覽(27)
  • 深度學(xué)習(xí)技巧應(yīng)用32-在YOLOv5模型上使用TensorRT進(jìn)行加速的應(yīng)用技巧

    深度學(xué)習(xí)技巧應(yīng)用32-在YOLOv5模型上使用TensorRT進(jìn)行加速的應(yīng)用技巧

    大家好,我是微學(xué)AI,今天給大家介紹一下深度學(xué)習(xí)技巧應(yīng)用32-在YOLOv5模型上使用TensorRT進(jìn)行加速的應(yīng)用技巧,TensorRT是NVIDIA公司提供的一個深度學(xué)習(xí)推理(inference)優(yōu)化器和運(yùn)行時庫。它專門為生產(chǎn)環(huán)境下的高性能深度學(xué)習(xí)推理提供優(yōu)化支持。TensorRT可以加速深度學(xué)習(xí)模型在

    2024年02月02日
    瀏覽(21)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包