義分割模型 Windows C++ 部署實(shí)戰(zhàn):基于 Paddle Inference 從環(huán)境搭建到推理落地)
人工智能計(jì)算機(jī)視覺(jué)預(yù)訓(xùn)練【免費(fèi)下載鏈接】PaddleSegEasy-to-use image segmentation library with awesome pre-trained model zoo, supporting wide-range of practical tasks in Semantic Segmentation, Interactive Segmentation, Panoptic Segmentation, Image Matting, 3D Segmentation, etc.項(xiàng)目地址https://gitcode.com/gh_mirrors/pa/PaddleSeg點(diǎn)擊查看免費(fèi)下載導(dǎo)讀本文完整講解如何在 Windows 10 上使用 Paddle Inference 的 C 接口部署 PaddleSeg 語(yǔ)義分割模型覆蓋環(huán)境準(zhǔn)備Visual Studio、CUDA/CUDNN/TensorRT、Paddle 預(yù)測(cè)庫(kù)、OpenCV、預(yù)測(cè)模型與測(cè)試圖片準(zhǔn)備、CMake 工程生成與 Visual Studio 編譯、以及 GPU/CPU 推理執(zhí)行的完整流程。讀完本文你將能夠把 PaddleSeg 訓(xùn)練導(dǎo)出的推理模型編譯為本地test_seg.exe可執(zhí)行程序并理解deploy/cpp目錄下 C 示例test_seg.cc從讀取deploy.yaml、圖像預(yù)處理到推理后處理的完整調(diào)用鏈為后續(xù)接入自己的業(yè)務(wù)工程打下基礎(chǔ)。1. 部署方案概述PaddleSeg 倉(cāng)庫(kù)在 deploy/cpp 目錄下提供了基于 Paddle Inference C 接口的部署示例主要包含三個(gè)步驟準(zhǔn)備環(huán)境安裝 Visual Studio 2019、CUDA/CUDNN/TensorRTGPU 場(chǎng)景、CMake、Paddle Inference C 預(yù)測(cè)庫(kù)、OpenCV準(zhǔn)備模型和圖片下載或?qū)С鲱A(yù)測(cè)模型model.pdmodel/model.pdiparams/deploy.yaml等并準(zhǔn)備一張測(cè)試圖片編譯、執(zhí)行用 CMake 生成 Visual Studio 工程編譯出可執(zhí)行文件并運(yùn)行推理。飛槳針對(duì)不同場(chǎng)景提供了多種預(yù)測(cè)引擎Paddle Inference、Paddle Lite、Paddle Serving、Paddle.js 等C 服務(wù)端部署使用 Paddle Inference 是其中最直接的一種。本文檔中的全部示例以工作目錄D:\projects演示。2. 準(zhǔn)備環(huán)境2.1 準(zhǔn)備基礎(chǔ)環(huán)境模型部署的基礎(chǔ)環(huán)境要求如下Visual Studio 2019需根據(jù) Paddle Inference C 預(yù)測(cè)庫(kù)編譯所使用的 VS 版本選擇對(duì)應(yīng)版本Visual Studio 各版本間存在二進(jìn)制兼容性約束2015/2017/2019 的 C 運(yùn)行庫(kù)二進(jìn)制兼容CUDA / CUDNN / TensorRT僅在使用 GPU 版本的預(yù)測(cè)庫(kù)時(shí)需要CMake 3.0用于生成 VS 工程文件。2.2 準(zhǔn)備 CUDA/CUDNN/TensorRT 環(huán)境模型部署環(huán)境與所需庫(kù)的對(duì)應(yīng)關(guān)系如下表部署環(huán)境需要準(zhǔn)備的庫(kù)CPU無(wú)GPUCUDA / CUDNNGPU_TRTCUDA / CUDNN / TensorRT使用 GPU 推理的用戶需要準(zhǔn)備 CUDA 和 CUDNN僅使用 CPU 推理的用戶可跳過(guò)本節(jié)CUDA按 NVIDIA 官方安裝指南完成安裝。CUDA 默認(rèn)安裝路徑為C:\Program Files\NVIDIA GPU Computing Toolkit需將C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\Vx.y\bin加入環(huán)境變量Vx.y中的x.y為 CUDA 版本號(hào)。CUDNN將 cudnn 解壓目錄中bin、include、lib三個(gè)文件夾內(nèi)的文件分別復(fù)制到C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\Vx.y下同名文件夾中。TensorRT可選若需在 CUDA 下使用 TensorRT 加速推理還需安裝 TensorRT并把安裝目錄lib文件夾下的.dll文件復(fù)制到C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\Vx.y\bin。本文檔以CUDA11.6、CUDNN8.4.1.5、TensorRT8.4.1.5的組合為例進(jìn)行介紹。2.3 準(zhǔn)備 Paddle Inference C 預(yù)測(cè)庫(kù)Paddle Inference C 預(yù)測(cè)庫(kù)針對(duì)不同的 CPU 和 CUDA 版本提供了不同的預(yù)編譯版本應(yīng)根據(jù)自身環(huán)境在 Paddle Inference 官方下載頁(yè)選擇合適的預(yù)編譯庫(kù)Windows 平臺(tái)。若預(yù)編譯庫(kù)不滿足需求也可以自行源碼編譯預(yù)測(cè)庫(kù)。本文不再展開(kāi)預(yù)測(cè)庫(kù)的編譯細(xì)節(jié)直接使用預(yù)編譯庫(kù)。假設(shè)預(yù)測(cè)庫(kù)解壓至D:\projects\paddle_inference其目錄結(jié)構(gòu)如下D:\projects\paddle_inference ├── paddle ├── third_party ├── CMakeCache.txt └── version.txt其中paddle目錄存放頭文件與paddle_inference.lib等鏈接庫(kù)third_party目錄存放預(yù)測(cè)庫(kù)依賴的第三方庫(kù)如 protobuf、glog、gflags、xxhash、cryptopp、onnxruntime、paddle2onnx 以及 MKL/OpenBLAS 等這些路徑會(huì)在編譯階段由 CMake 自動(dòng)引用。2.4 安裝 OpenCV本示例使用 OpenCV 讀取圖片因此需要安裝 OpenCV其他項(xiàng)目中可視需要決定是否安裝。安裝步驟從 OpenCV 官網(wǎng)下載適用于 Windows 平臺(tái)的4.6.0版本opencv-4.6.0-vc14_vc15安裝程序運(yùn)行下載的可執(zhí)行文件將 OpenCV 解壓至指定目錄例如D:\projects\opencv配置環(huán)境變量若在編譯命令中使用全局絕對(duì)路徑也可不設(shè)置環(huán)境變量我的電腦→屬性→高級(jí)系統(tǒng)設(shè)置→環(huán)境變量在系統(tǒng)變量中找到Path如不存在則自行創(chuàng)建雙擊編輯新建一條填入 OpenCV 的bin路徑并保存例如D:\projects\opencv\build\x64\vc15\bin。3. 準(zhǔn)備模型和圖片3.1 獲取預(yù)測(cè)模型本文示例使用 PaddleSeg 提供的 PP-LiteSeg 預(yù)測(cè)模型pp_liteseg_infer_model.tar.gz下載后解壓即可用于測(cè)試。預(yù)測(cè)模型的文件格式如下pp_liteseg_infer_model ├── deploy.yaml # 部署相關(guān)的配置文件主要說(shuō)明數(shù)據(jù)預(yù)處理方式等信息 ├── model.pdmodel # 預(yù)測(cè)模型的拓?fù)浣Y(jié)構(gòu)文件 ├── model.pdiparams # 預(yù)測(cè)模型的權(quán)重文件 └── model.pdiparams.info # 參數(shù)額外信息一般無(wú)需關(guān)注如果需要測(cè)試其他模型可參考 模型導(dǎo)出文檔 自行導(dǎo)出預(yù)測(cè)模型。導(dǎo)出命令位于 PaddleSeg 倉(cāng)庫(kù)根目錄下執(zhí)行python tools/export.py \ --config configs/pp_liteseg/pp_liteseg_stdc1_cityscapes_1024x512_scale0.5_160k.yml \ --model_path model.pdparams \ --save_dir output/inference_model導(dǎo)出腳本的關(guān)鍵參數(shù)如下| 參數(shù) | 用途 | 是否必需 | 默認(rèn)值 | |-|-|-|-| | config | 配置文件路徑 | 是 | - | | model_path | 訓(xùn)練好的權(quán)重路徑 | 否 | - | | save_dir | 預(yù)測(cè)模型保存目錄 | 否 |output/inference_model| | input_shape | 指定推理模型輸入形狀N*C*H*W如--input_shape 1 3 1024 1024若不指定則為[-1, 3, -1, -1]預(yù)測(cè)時(shí)圖像尺寸固定則應(yīng)顯式設(shè)置 | 否 | None | | output_op | 追加到推理模型末尾的算子可選argmax、softmax、none默認(rèn)輸出每個(gè)像素的類別標(biāo)簽N*H*W加softmax則輸出各類別概率 | 否 |argmax|導(dǎo)出成功后output/inference_model目錄下即生成deploy.yaml、model.pdmodel、model.pdiparams、model.pdiparams.info四個(gè)文件與上文目錄結(jié)構(gòu)一致。3.2 認(rèn)識(shí) deploy.yamlC 端如何解析預(yù)處理配置與 Python 端部署不同C 示例不會(huì)加載 PaddleSeg 的 transforms 配置而是直接從模型目錄的deploy.yaml中讀取數(shù)據(jù)預(yù)處理方式。查看 test_seg.cc 中的load_yaml函數(shù)可以看到解析邏輯讀取Deploy.model與Deploy.params字段得到模型文件名和權(quán)重文件名遍歷Deploy.transforms列表識(shí)別Normalize變換開(kāi)啟歸一化與Resize變換讀取target_size得到resize_width與resize_height。對(duì)應(yīng)地read_process_image 實(shí)現(xiàn)圖像預(yù)處理先用cv::imread讀圖并BGR2RGB轉(zhuǎn)換通道順序若配置了Resize則cv::resize到目標(biāo)尺寸若配置了Normalize則將像素值縮放到[0,1]除以 255再執(zhí)行(x - 0.5) / 0.5的標(biāo)準(zhǔn)化。也就是說(shuō)C 端與 Python 端推理會(huì)保持一致的預(yù)處理行為。3.3 用 Netron 檢查輸入輸出確認(rèn)輸出數(shù)據(jù)類型model.pdmodel可通過(guò) Netron 打開(kāi)進(jìn)行模型可視化點(diǎn)擊輸入節(jié)點(diǎn)即可查看推理模型的輸入/輸出個(gè)數(shù)及數(shù)據(jù)類型如int32_t、int64_t、float等。這一點(diǎn)很重要默認(rèn)代碼假設(shè)模型輸出為int32_t的類別標(biāo)簽。如果模型的輸出數(shù)據(jù)類型不是int32_t例如導(dǎo)出的模型帶了softmax輸出概率執(zhí)行默認(rèn)代碼會(huì)報(bào)錯(cuò)此時(shí)需要手動(dòng)修改 test_seg.cc 中的如下代碼將其改為對(duì)應(yīng)的輸出數(shù)據(jù)類型std::vectorint32_t out_data(out_num);3.4 準(zhǔn)備測(cè)試圖片下載一張 cityscapes 驗(yàn)證集中的圖片cityscapes_demo.png到本地用于后續(xù)推理測(cè)試。4. 編譯4.1 工程整體目錄結(jié)構(gòu)完成上述準(zhǔn)備后D:\projects下應(yīng)包含D:\projects ├── opencv ├── paddle_inference └── PaddleSeg即把 PaddleSeg 倉(cāng)庫(kù)克隆到D:\projects\PaddleSeg與opencv、paddle_inference平級(jí)。4.2 使用 CMake 生成項(xiàng)目文件編譯參數(shù)說(shuō)明如下其中帶*表示僅在使用 GPU 版本預(yù)測(cè)庫(kù)時(shí)指定帶#表示僅在使用 TensorRT 時(shí)指定參數(shù)名含義*WITH_GPU是否使用 GPU默認(rèn)為 OFF*CUDA_LIBCUDA 的庫(kù)路徑*USE_TENSORRT是否使用 TensorRT默認(rèn)為 OFF#TENSORRT_DLLTensorRT 的.dll文件存放路徑WITH_MKL是否使用 MKL默認(rèn)為 ON使用 MKL設(shè)為 OFF 表示使用 OpenBLASCMAKE_BUILD_TYPE指定編譯時(shí)使用 Release 或 DebugPADDLE_LIB_NAMEPaddle 預(yù)測(cè)庫(kù)名稱OPENCV_DIROpenCV 的安裝路徑PADDLE_LIBPaddle 預(yù)測(cè)庫(kù)的安裝路徑DEMO_NAME可執(zhí)行文件名首先進(jìn)入cpp目錄cd D:\projects\PaddleSeg\deploy\cpp創(chuàng)建build文件夾并進(jìn)入mkdir build cd build執(zhí)行編譯命令的通用格式如下注意若路徑中包含空格需用引號(hào)括起來(lái)cmake .. -G Visual Studio 16 2019 -A x64 -T hostx64 -DUSE_TENSORRTON -DWITH_GPUON -DWITH_MKLON -DCMAKE_BUILD_TYPERelease -DPADDLE_LIB_NAMEpaddle_inference -DCUDA_LIBpath_to_cuda_lib -DOPENCV_DIRpath_to_opencv -DPADDLE_LIBpath_to_paddle_dir -DTENSORRT_DLLpath_to_tensorrt_.dll -DDEMO_NAMEtest_seg按部署場(chǎng)景分四種典型命令GPU 推理不使用 TensorRTcmake .. -G Visual Studio 16 2019 -A x64 -T hostx64 -DUSE_TENSORRTOFF -DWITH_GPUON -DWITH_MKLON -DCMAKE_BUILD_TYPERelease -DPADDLE_LIB_NAMEpaddle_inference -DCUDA_LIBC:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.6\lib\x64 -DOPENCV_DIRD:\projects\opencv -DPADDLE_LIBD:\projects\paddle_inference -DDEMO_NAMEtest_segGPU 推理使用 TensorRT 加速cmake .. -G Visual Studio 16 2019 -A x64 -T hostx64 -DUSE_TENSORRTON -DWITH_GPUON -DWITH_MKLON -DCMAKE_BUILD_TYPERelease -DPADDLE_LIB_NAMEpaddle_inference -DCUDA_LIBC:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.6\lib\x64 -DOPENCV_DIRD:\projects\opencv -DPADDLE_LIBD:\projects\paddle_inference -DTENSORRT_DLLC:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.6\bin -DDEMO_NAMEtest_segCPU 推理MKLcmake .. -G Visual Studio 16 2019 -A x64 -T hostx64 -DWITH_GPUOFF -DWITH_MKLON -DCMAKE_BUILD_TYPERelease -DPADDLE_LIB_NAMEpaddle_inference -DOPENCV_DIRD:\projects\opencv -DPADDLE_LIBD:\projects\paddle_inference -DDEMO_NAMEtest_segCPU 推理OpenBLAScmake .. -G Visual Studio 16 2019 -A x64 -T hostx64 -DWITH_GPUOFF -DWITH_MKLOFF -DCMAKE_BUILD_TYPERelease -DPADDLE_LIB_NAMEpaddle_inference -DOPENCV_DIRD:\projects\opencv -DPADDLE_LIBD:\projects\paddle_inference -DDEMO_NAMEtest_seg4.3 源碼視角CMake 生成工程時(shí)發(fā)生了什么從 deploy/cpp/CMakeLists.txt 可以看到 Windows 分支的幾個(gè)關(guān)鍵行為理解它們有助于排查編譯問(wèn)題自動(dòng)編譯 yaml-cppWindows 下通過(guò) cmake/yaml-cpp.cmake 引入ExternalProject_Add在構(gòu)建階段自動(dòng)下載并編譯靜態(tài)版yaml-cpp鏈接庫(kù)輸出到build/ext/yaml-cpp/lib因此示例代碼中的deploy.yaml解析依賴無(wú)需手動(dòng)安裝依賴庫(kù)自動(dòng)鏈接PADDLE_LIB/third_party/install/下的 protobuf、glog、gflags、xxhash、cryptopp、onnxruntime、paddle2onnx 頭文件與庫(kù)目錄均被自動(dòng)加入編譯與鏈接搜索路徑WITH_MKL決定鏈接mklml還是openblasPOST_BUILD 自動(dòng)拷貝 dll編譯完成后CMake 會(huì)把推理運(yùn)行所需的mklml.dll、libiomp5md.dll、mkldnn.dll、onnxruntime.dll、paddle2onnx.dll、paddle_inference.dll以及 TensorRT 的nvinfer.dll、nvinfer_plugin.dll自動(dòng)復(fù)制到可執(zhí)行文件目錄和Release目錄見(jiàn) CMakeLists.txt 的add_custom_command這正是后面Release目錄中*.dll的來(lái)源運(yùn)行時(shí)庫(kù)統(tǒng)一為靜態(tài) CRTWindows 分支默認(rèn)啟用MSVC_STATIC_CRT將/MD替換為/MT避免與預(yù)測(cè)庫(kù)的運(yùn)行時(shí)庫(kù)沖突。4.4 使用 Visual Studio 編譯用 Visual Studio 2019 打開(kāi)生成的cpp\build\cpp_inference_demo.sln將編譯模式設(shè)置為Release點(diǎn)擊生成→生成解決方案編譯完成后在cpp\build\Release目錄內(nèi)生成test_seg.exe。5. 執(zhí)行推理5.1 準(zhǔn)備 Release 目錄進(jìn)入build\Release目錄將準(zhǔn)備好的模型和圖片放到test_seg.exe同級(jí)目錄最終目錄結(jié)構(gòu)如下Release ├──test_seg.exe # 可執(zhí)行文件 ├──cityscapes_demo.png # 測(cè)試圖片 ├──pp_liteseg_infer_model # 推理用到的模型 ├── deploy.yaml # 部署相關(guān)的配置文件主要說(shuō)明數(shù)據(jù)預(yù)處理方式等信息 ├── model.pdmodel # 預(yù)測(cè)模型的拓?fù)浣Y(jié)構(gòu)文件 ├── model.pdiparams # 預(yù)測(cè)模型的權(quán)重文件 └── model.pdiparams.info # 參數(shù)額外信息一般無(wú)需關(guān)注 ├──*.dll # dll 文件由 CMake POST_BUILD 自動(dòng)拷貝5.2 可執(zhí)行文件的命令行參數(shù)test_seg.cc 使用 gflags 定義了全部運(yùn)行時(shí)參數(shù)推理時(shí)可按需組合參數(shù)類型默認(rèn)值含義--model_dirstring推理模型目錄必須包含deploy.yaml與模型文件為空時(shí)程序直接報(bào)錯(cuò)退出--img_pathstring測(cè)試圖片路徑--devicesstringGPU使用 GPU 或 CPU 設(shè)備--use_trtboolfalseGPU 下是否啟用 TensorRT--trt_precisionstringfp32TensorRT 精度支持fp32、fp16、int8--use_trt_dynamic_shapeboolfalseGPU TensorRT 下是否啟用動(dòng)態(tài) shape--dynamic_shape_pathstring若指定則從該路徑讀取 TRT 動(dòng)態(tài) shape 配置--use_mkldnnboolfalseCPU 下是否啟用 MKLDNN--save_dirstring輸出圖片目錄當(dāng)前示例固定輸出為out_img.jpg5.3 運(yùn)行推理GPU 推理test_seg.exe --model_dir./pp_liteseg_infer_model --img_path./cityscapes_demo.png --devicesGPUCPU 推理test_seg.exe --model_dir./pp_liteseg_infer_model --img_path./cityscapes_demo.png --devicesCPU預(yù)測(cè)結(jié)果保存為out_img.jpg。該圖片對(duì)預(yù)測(cè)的灰度標(biāo)簽圖做了直方圖均衡化cv::equalizeHist便于可視化觀察分割輪廓而不是對(duì)標(biāo)簽著色后的原圖。5.4 推理流程源碼解讀結(jié)合 test_seg.cc 的main函數(shù)整個(gè)執(zhí)行鏈路可以拆解為五個(gè)階段解析參數(shù)并校驗(yàn)google::ParseCommandLineFlags解析命令行model_dir為空則LOG(FATAL)終止加載部署配置讀取model_dir/deploy.yaml得到模型文件名、權(quán)重文件名以及預(yù)處理配置圖像預(yù)處理讀圖 →BGR2RGB→ 按deploy.yaml決定是否Resize與Normalize→ 通過(guò)hwc_img_2_chw_data將 HWC 布局的cv::Mat轉(zhuǎn)為 CHW 布局的float數(shù)組test_seg.cc 用cv::extractChannel逐通道抽取實(shí)現(xiàn)創(chuàng)建 Predictor 并推理create_predictortest_seg.cc根據(jù)devices構(gòu)造paddle_infer::ConfigCPU 分支可EnableMKLDNN()并設(shè)置 5 線程GPU 分支調(diào)用EnableUseGpu(100, 0)顯存 100MB、設(shè)備 0開(kāi)啟 TensorRT 時(shí)按trt_precision選擇kFloat32/kHalf/kInt8并可通過(guò)SetTRTDynamicShapeInfo傳入內(nèi)置的 min/max/opt 輸入 shape{1,3,112,112}/{1,3,1024,2048}/{1,3,512,1024}或從dynamic_shape_path讀取調(diào)優(yōu)配置隨后設(shè)置輸入 tensor 形狀{1, chs, rows, cols}、CopyFromCpu拷入數(shù)據(jù)并Run()讀取輸出并保存GetOutputHandle獲取輸出將輸出元素總數(shù)out_num拷貝到std::vectorint32_t轉(zhuǎn)為uint8_t后按H*W組織成單通道灰度圖經(jīng)直方圖均衡化后cv::imwrite保存為out_img.jpg。6. 常見(jiàn)問(wèn)題與排查思路模型輸出類型不是 int32_t 導(dǎo)致報(bào)錯(cuò)用 Netron 查看輸出節(jié)點(diǎn)數(shù)據(jù)類型按 3.3 修改std::vectorint32_t out_data(out_num);為對(duì)應(yīng)類型路徑包含空格CMake 命令與運(yùn)行參數(shù)中的路徑均需使用引號(hào)括起運(yùn)行缺 dll確認(rèn)使用 CMake 生成的工程完成一次完整構(gòu)建POST_BUILD 步驟會(huì)自動(dòng)拷貝 dll或?qū)⑷笔У?dll 手動(dòng)復(fù)制到Release目錄TensorRT 相關(guān)報(bào)錯(cuò)確認(rèn)TENSORRT_DLL指向包含nvinfer.dll、nvinfer_plugin.dll的目錄且 TensorRT 主版本與預(yù)測(cè)庫(kù)匹配動(dòng)態(tài) shape 需求當(dāng)輸入尺寸不固定時(shí)在 GPU TensorRT 場(chǎng)景啟用--use_trt_dynamic_shape可配合--dynamic_shape_path傳入調(diào)優(yōu)后的動(dòng)態(tài) shape 配置固定尺寸場(chǎng)景則建議在導(dǎo)出模型時(shí)通過(guò)--input_shape固定輸入形狀。至此你已經(jīng)完成了從環(huán)境搭建、模型準(zhǔn)備、工程編譯到 GPU/CPU 推理的完整 Windows C 部署閉環(huán)可將該流程遷移到自定義模型與業(yè)務(wù)代碼中。贊分享人工智能計(jì)算機(jī)視覺(jué)預(yù)訓(xùn)練【免費(fèi)下載鏈接】PaddleSegEasy-to-use image segmentation library with awesome pre-trained model zoo, supporting wide-range of practical tasks in Semantic Segmentation, Interactive Segmentation, Panoptic Segmentation, Image Matting, 3D Segmentation, etc.項(xiàng)目地址https://gitcode.com/gh_mirrors/pa/PaddleSeg點(diǎn)擊查看免費(fèi)下載相關(guān)推薦PaddleSeg 基于 FastDeploy 的 CPU/GPU Python 部署實(shí)戰(zhàn)語(yǔ)義分割模型從環(huán)境搭建到 Paddle-TensorRT 加速PaddleSeg 基于 FastDeploy 的 CPU/GPU Python 部署實(shí)戰(zhàn)語(yǔ)義分割模型從環(huán)境搭建到 Paddle TensorRT 加速 本文人工智能計(jì)算機(jī)視覺(jué)預(yù)訓(xùn)練PaddleSeg 分割模型在 Linux 上的 C 部署實(shí)戰(zhàn)Paddle Inference 環(huán)境搭建、編譯運(yùn)行與 TensorRT 加速全指南PaddleSeg 分割模型在 Linux 上的 C 部署實(shí)戰(zhàn)Paddle Inference 環(huán)境搭建、編譯運(yùn)行與 TensorRT 加速全指南 本指南人工智能計(jì)算機(jī)視覺(jué)預(yù)訓(xùn)練PaddleSeg LaneSeg 車道線分割模型 C 部署實(shí)戰(zhàn)基于 Paddle Inference 的編譯、推理與后處理全流程PaddleSeg LaneSeg 車道線分割模型 C 部署實(shí)戰(zhàn)基于 Paddle Inference 的編譯、推理與后處理全流程 車道線檢測(cè)是智能駕駛與人工智能計(jì)算機(jī)視覺(jué)預(yù)訓(xùn)練上一篇Bazzite游戲系統(tǒng)終極指南10個(gè)快速修復(fù)技巧讓Linux游戲體驗(yàn)更完美下一篇5分鐘快速上手ChanlunX纏論插件通達(dá)信技術(shù)分析的終極免費(fèi)方案創(chuàng)作聲明:本文部分內(nèi)容由AI輔助生成(AIGC),僅供參考