欧美性猛交xxxx免费看_牛牛在线视频国产免费_天堂草原电视剧在线观看免费_国产粉嫩高清在线观看_国产欧美日本亚洲精品一5区

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

FP32推理TensorRT演示

OpenCV學堂 ? 來源:OpenCV學堂 ? 作者:OpenCV學堂 ? 2022-09-23 14:47 ? 次閱讀

引言

YOLOv5最新版本的6.x已經支持直接導出engine文件并部署到TensorRT上了。

FP32推理TensorRT演示

可能很多人不知道YOLOv5新版本6.x中已經支持一鍵導出Tensor支持engine文件,而且只需要一條命令行就可以完成:演示如下:

python export.py --weights yolov5s.pt --include onnx engine --device 0

其中onnx表示導出onnx格式的模型文件,支持部署到:

- OpenCV DNN- OpenVINO- TensorRT- ONNXRUNTIME
但是在TensorRT上推理想要速度快,必須轉換為它自己的engine格式文件,參數(shù)engine就是這個作用。上面的命令行執(zhí)行完成之后,就會得到onnx格式模型文件與engine格式模型文件。--device 0參數(shù)表示GPU 0,因為我只有一張卡!上述導出的FP32的engine文件。

使用tensorRT推理 YOLOv5 6.x中很簡單,一條命令行搞定了,直接執(zhí)行:

python detect.py --weights yolov5s.engine --view-img --source data/images/zidane.jpg

FP16推理TensorRT演示

在上面的導出命令行中修改為如下

python export.py --weights yolov5s.onnx --include engine --half --device 0
其中就是把輸入的權重文件改成onnx格式,然后再添加一個新的參 --half 表示導出半精度的engine文件。就這樣直接執(zhí)行該命令行就可以導出生成了,圖示如下:

02d33e88-3af3-11ed-9e49-dac502259ad0.png

03edd9f4-3af3-11ed-9e49-dac502259ad0.png

對比可以發(fā)現(xiàn)相比FP32大小的engine文件,F(xiàn)P16的engine文件比FP32的engine大小減少一半左右,整個文件只有17MB大小左右。

推理執(zhí)行的命令跟FP32的相同,直接運行,顯示結果如下:

對比發(fā)現(xiàn)FP32跟FP16版本相比,速度提升了但是精度幾乎不受影響!

INT8量化與推理TensorRT演示

TensorRT的INT量化支持要稍微復雜那么一點點,最簡單的就是訓練后量化。只要完成Calibrator這個接口支持,我用的TensorRT版本是8.4.0.x的,它支持以下幾種Calibrator:

07b38d90-3af3-11ed-9e49-dac502259ad0.png

不同的量化策略,得到的結果可能稍有差異,另外高版本上的INT8量化之后到低版本的TensorRT機器上可能無法運行,我就遇到過!所以建議不同平臺要統(tǒng)一TensorRT版本之后,再量化部署會比較好。上面的Calibrator都必須完成四個方法,分別是:

#使用calibrator驗證時候每次張數(shù),跟顯存有關系,最少1張get_batch_size  #獲取每個批次的圖像數(shù)據(jù),組裝成CUDA內存數(shù)據(jù)get_batch  #如果以前運行過保存過,可以直接讀取量化,低碳給國家省電read_calibration_cache#保存calibration文件,量化時候會用到write_calibration_cache

這塊對函數(shù)集成不懂建議參考TensorRT自帶的例子:

TensorRT-8.4.0.6samplespythonint8_caffe_mnist
幾乎是可以直接用的!Copy過來改改就好了!

搞定了Calibrator之后,需要一個驗證數(shù)據(jù)集,對YOLOv5來說,其默認coco128數(shù)據(jù)集就是一個很好的驗證數(shù)據(jù),在data文件夾下有一個coco128.yaml文件,最后一行就是就是數(shù)據(jù)集的下載URL,直接通過URL下載就好啦。

完成自定義YOLOv5的Calibrator之后,就可以直接讀取onnx模型文件,跟之前的官方轉換腳本非常相似了,直接在上面改改,最重要的配置與生成量化的代碼如下:

# build trt enginebuilder.max_batch_size = 1config.max_workspace_size = 1 << 30config.set_flag(trt.BuilderFlag.INT8)config.int8_calibrator = calibratorprint('Int8 mode enabled')plan = builder.build_serialized_network(network, config)
主要就是設置config中的flag為INT8,然后直接運行,得到plan對象,反向序列化為engine文件,保存即可。最終得到的INT8量化engine文件的大小在9MB左右。

07d00024-3af3-11ed-9e49-dac502259ad0.png

數(shù)據(jù)太少,只有128張, INT8量化之后的YOLOv5s模型推理結果并不盡如人意。但是我也懶得再去下載COCO數(shù)據(jù)集, COCO訓練集一半數(shù)據(jù)作為驗證完成的量化效果是非常好。 這里,我基于YOLOv5s模型自定義數(shù)據(jù)集訓練飛鳥跟無人機,對得到模型,直接用訓練集270張數(shù)據(jù)做完INT8量化之后的推理效果如下

0802faba-3af3-11ed-9e49-dac502259ad0.png

量化效果非常好,精度只有一點下降,但是速度比FP32的提升了1.5倍左右(3050Ti)。

已知問題與解決

量化過程遇到這個錯誤

[09/22/2022-2313] [TRT] [I]   Calibrated batch 127 in 0.30856 seconds.[09/22/2022-2316] [TRT] [E] 2: [quantization.cpp::70] Error Code 2: Internal Error (Assertion min_ <= max_ failed. )[09/22/2022-2316] [TRT] [E] 2: [builder.cpp::619] Error Code 2: Internal Error (Assertion engine != nullptr failed. )Failed to create the engineTraceback (most recent call last):

解決方法,把Calibrator中getBtach方法里面的代碼:

img = np.ascontiguousarray(img, dtype=np.float32)

to

img = np.ascontiguousarray(img, dtype=np.float16)

這樣就可以避免量化失敗。

審核編輯:彭靜
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 格式
    +關注

    關注

    0

    文章

    23

    瀏覽量

    16918
  • 模型
    +關注

    關注

    1

    文章

    3329

    瀏覽量

    49252
  • 數(shù)據(jù)集

    關注

    4

    文章

    1209

    瀏覽量

    24845

原文標題:YOLOv5模型部署TensorRT之 FP32、FP16、INT8推理

文章出處:【微信號:CVSCHOOL,微信公眾號:OpenCV學堂】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    如何在GPU上使用TensorRT部署深度學習應用程序

    本文未涉及的一個主題是在 TensorRT 中以 INT8 精度精確地執(zhí)行推理。 TensorRT 自動轉換 FP32 網絡以進行部署,同時降低精度損失。為了實現(xiàn)這一目標,
    的頭像 發(fā)表于 04-01 15:19 ?5020次閱讀
    如何在GPU上使用<b class='flag-5'>TensorRT</b>部署深度學習應用程序

    全志XR806+TinyMaix,在全志XR806上實現(xiàn)ML推理

    ATmega328 (32KB Flash, 2KB Ram) 都能基于TinyMaix跑mnist(手寫數(shù)字識別)支持INT8/FP32/FP16模型,實驗性地支持FP8模型,支持keras h5或
    發(fā)表于 09-21 09:56

    推斷FP32模型格式的速度比CPU上的FP16模型格式快是為什么?

    在 CPU 上推斷出 FP32 模型格式和 FP16 模型格式。 FP32 模型格式的推斷速度比 FP16 模型格式快。 無法確定推斷 FP32
    發(fā)表于 08-15 08:03

    C++演示中的推理速度比Python演示中的推理速度更快是為什么?

    在同一主機機上采用相同型號的 Ran Object Detection C++ 演示 和 對象檢測 Python 演示 。 C++ 演示中的推理速度比 Python
    發(fā)表于 08-15 06:52

    初次嘗試Tengine 適配 Ncnn FP32 模型

    初次嘗試Tengine 適配 Ncnn FP32 模型,相較于mnn,ncnn而言,這個框架對于多框架模型有著很好的支持性 – Caffe,Tensorflow,TF-Lite, M...
    發(fā)表于 02-07 11:16 ?0次下載
    初次嘗試Tengine 適配 Ncnn <b class='flag-5'>FP32</b> 模型

    NVIDIA TensorRT 8.2將推理速度提高6倍

      TensorRT 是一款高性能的深度學習推理優(yōu)化器和運行時,為人工智能應用程序提供低延遲、高吞吐量推理TensorRT 用于醫(yī)療、汽車、制造、互聯(lián)網/電信服務、金融服務和能源等
    的頭像 發(fā)表于 03-31 17:10 ?1792次閱讀

    使用NVIDIA TensorRT優(yōu)化T5和GPT-2

    在這篇文章中,我們向您介紹了如何將擁抱臉 PyTorch T5 和 GPT-2 模型轉換為優(yōu)化的 TensorRT 推理引擎。 TensorRT 推理機用作原始 HuggingFace
    的頭像 發(fā)表于 03-31 17:25 ?3758次閱讀
    使用NVIDIA <b class='flag-5'>TensorRT</b>優(yōu)化T5和GPT-2

    NVIDIA TensorRT和DLA分析

      位于 GitHub 存儲庫中的sampleMNIST演示了如何導入經過訓練的模型、構建 TensorRT 引擎、序列化和反序列化引擎,最后使用引擎執(zhí)行推理。
    的頭像 發(fā)表于 05-18 10:06 ?3143次閱讀

    NVIDIA T4 GPU和TensorRT提高微信搜索速度

    騰訊公司深耕模型量化開發(fā),且長期與 NVIDIA 團隊合作,成功將深度學習模型精度從 FP32 壓縮到 FP16 以及 INT8?,F(xiàn)在,該技術再次獲得了新的重要突破。騰訊團隊利用全新設計的 QAT
    的頭像 發(fā)表于 06-27 14:34 ?1681次閱讀

    TensorRT 8.6 C++開發(fā)環(huán)境配置與YOLOv8實例分割推理演示

    對YOLOv8實例分割TensorRT 推理代碼已經完成C++類封裝,三行代碼即可實現(xiàn)YOLOv8對象檢測與實例分割模型推理,不需要改任何代碼即可支持自定義數(shù)據(jù)訓練部署推理
    的頭像 發(fā)表于 04-25 10:49 ?6050次閱讀
    <b class='flag-5'>TensorRT</b> 8.6 C++開發(fā)環(huán)境配置與YOLOv8實例分割<b class='flag-5'>推理</b><b class='flag-5'>演示</b>

    三種主流模型部署框架YOLOv8推理演示

    部署。這里以YOLOv8為例,演示了YOLOv8對象檢測模型在OpenVINO、ONNXRUNTIME、TensorRT三個主流框架上C++推理演示效果。
    的頭像 發(fā)表于 08-06 11:39 ?2823次閱讀

    邊緣生成人工智能推理技術面臨的挑戰(zhàn)有哪些

    雖然訓練通?;谏纱罅繑?shù)據(jù)的 fp32fp64 浮點算法,但它不需要嚴格的延遲。功耗高,成本承受能力高。 相當不同的是推理過程。推理通常在
    發(fā)表于 10-10 09:38 ?473次閱讀
    邊緣生成人工智能<b class='flag-5'>推理</b>技術面臨的挑戰(zhàn)有哪些

    Torch TensorRT是一個優(yōu)化PyTorch模型推理性能的工具

    那么,什么是Torch TensorRT呢?Torch是我們大家聚在一起的原因,它是一個端到端的機器學習框架。而TensorRT則是NVIDIA的高性能深度學習推理軟件工具包。Torch Te
    的頭像 發(fā)表于 01-09 16:41 ?1952次閱讀
    Torch <b class='flag-5'>TensorRT</b>是一個優(yōu)化PyTorch模型<b class='flag-5'>推理</b>性能的工具

    TensorRT-LLM低精度推理優(yōu)化

    本文將分享 TensorRT-LLM 中低精度量化內容,并從精度和速度角度對比 FP8 與 INT8。首先介紹性能,包括速度和精度。其次,介紹量化工具 NVIDIA TensorRT Model
    的頭像 發(fā)表于 11-19 14:29 ?474次閱讀
    <b class='flag-5'>TensorRT</b>-LLM低精度<b class='flag-5'>推理</b>優(yōu)化

    解鎖NVIDIA TensorRT-LLM的卓越性能

    NVIDIA TensorRT-LLM 是一個專為優(yōu)化大語言模型 (LLM) 推理而設計的庫。它提供了多種先進的優(yōu)化技術,包括自定義 Attention Kernel、Inflight
    的頭像 發(fā)表于 12-17 17:47 ?285次閱讀