国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

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

完善資料讓更多小伙伴認識你,還能領取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格式文件,參數engine就是這個作用。上面的命令行執行完成之后,就會得到onnx格式模型文件與engine格式模型文件。--device 0參數表示GPU 0,因為我只有一張卡!上述導出的FP32的engine文件。

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

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文件。就這樣直接執行該命令行就可以導出生成了,圖示如下:

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

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

對比可以發現相比FP32大小的engine文件,FP16的engine文件比FP32的engine大小減少一半左右,整個文件只有17MB大小左右。

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

對比發現FP32跟FP16版本相比,速度提升了但是精度幾乎不受影響!

INT8量化與推理TensorRT演示

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

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

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

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

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

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

搞定了Calibrator之后,需要一個驗證數據集,對YOLOv5來說,其默認coco128數據集就是一個很好的驗證數據,在data文件夾下有一個coco128.yaml文件,最后一行就是就是數據集的下載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

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

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

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

    關注

    0

    文章

    23

    瀏覽量

    17196
  • 模型
    +關注

    關注

    1

    文章

    3752

    瀏覽量

    52109
  • 數據集
    +關注

    關注

    4

    文章

    1236

    瀏覽量

    26193

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

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

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

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

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

    將Whisper大型v3 fp32模型轉換為較低精度后,推理時間增加,怎么解決?

    將 openai/whisper-large-v3 FP32 模型轉換為 FP16、INT8 和 INT4。 推理所花費的時間比在 FP32 上花費的時間要多
    發表于 06-24 06:23

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

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

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

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

    初次嘗試Tengine 適配 Ncnn FP32 模型

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

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

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

    NVIDIA TensorRT和DLA分析

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

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

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

    TensorRT 8.6 C++開發環境配置與YOLOv8實例分割推理演示

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

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

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

    Torch TensorRT是一個優化PyTorch模型推理性能的工具

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

    TensorRT-LLM低精度推理優化

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

    計算精度對比:FP64、FP32FP16、TF32、BF16、int8

    本文轉自:河北人工智能計算中心在當今快速發展的人工智能領域,算力成為決定模型訓練與推理速度的關鍵因素之一。為了提高計算效率,不同精度的數據類型應運而生,包括FP64、FP32、FP16
    的頭像 發表于 06-26 11:09 ?2821次閱讀
    計算精度對比:<b class='flag-5'>FP</b>64、<b class='flag-5'>FP32</b>、<b class='flag-5'>FP</b>16、TF32、BF16、int8

    小白必讀:到底什么是FP32、FP16、INT8?

    網上關于算力的文章,如果提到某個芯片或某個智算中心的算力,都會寫:在FP32精度下,英偉達H100的算力大約為0.9PFlops。在FP16精度下,某智算中心的算力是6.7EFlops。在INT8
    的頭像 發表于 10-20 14:34 ?1293次閱讀
    小白必讀:到底什么是<b class='flag-5'>FP32</b>、<b class='flag-5'>FP</b>16、INT8?

    NVIDIA TensorRT LLM 1.0推理框架正式上線

    TensorRT LLM 作為 NVIDIA 為大規模 LLM 推理打造的推理框架,核心目標是突破 NVIDIA 平臺上的推理性能瓶頸。為實現這一目標,其構建了多維度的核心實現路徑:一
    的頭像 發表于 10-21 11:04 ?1174次閱讀