加速44%!RT-DETR量化無損壓縮優(yōu)秀實戰(zhàn)
RT-DETR 模型是飛槳目標檢測套件 PaddleDetection 最新發(fā)布的 SOTA 目標檢測模型。其是一種基于 DETR 架構(gòu)的端到端目標檢測器,在速度和精度上均取得了 SOTA 性能。在實際部署中,為了追求“更準、更小、更快”的效率能力,本文使用飛槳模型壓縮工具 PaddleSlim 中的自動壓縮工具(ACT, Auto Compression Toolkit)將針對 RT-DETR 進行量化壓縮及部署實戰(zhàn)。使用 ACT 工具只需要幾十分鐘,即可完成量化壓縮全流程。在模型精度持平的情況下,RT-DETR 模型體積壓縮為原來的四分之一,GPU 推理加速44%。

上述表格測試使用 Paddle Inference 開啟 TensorRT,由于包含 D2H 拷貝時延,和論文 FP16 FPS 相比略慢。
RT-DETR 模型快速開始
RT-DETR 在一眾 YOLO 模型中脫穎而出,成為新 SOTA,它的效果如下圖所示。

為了更方便開發(fā)者體驗 RT-DETR 的效果,快速跑通從數(shù)據(jù)校驗,模型訓練開發(fā)到部署的全流程,飛槳在 AI Studio 全新上線了 PaddleX 模型產(chǎn)線。開發(fā)者只需要在模型庫中選擇創(chuàng)建模型產(chǎn)線,即可通過工具箱或者開發(fā)者模式快速體驗 RT-DETR 模型產(chǎn)線全流程,非常方便易用,歡迎開發(fā)者在線體驗。

RT-DETR 模型分析
在對 RT-DETR 量化壓縮前,我們對它進行了分析。RT-DETR 網(wǎng)絡(luò)模型主要由兩個部分組成,分別是 ResNet 或者 HGNetv2 構(gòu)成的 backbone 和 RT-DETR 構(gòu)成的檢測頭。在模型的 backbone 中有大量的卷積層,此外在檢測頭中也有大量的矩陣乘計算,這些操作均可進行量化,從模型結(jié)構(gòu)上分析來看,RT-DETR 模型擁有足夠的量化加速潛力。我們使用了量化分析工具分析了各層的激活值分布:

大部分激活值分布都比較集中,離群點很少,這對量化很友好。同時我們分析了各層的權(quán)重數(shù)值分布:

可以看到權(quán)重的數(shù)據(jù)分布基本上符合正態(tài)分布,且數(shù)值較小,這樣的權(quán)重分布比較適合量化。分析發(fā)現(xiàn) RT-DETR 有較好的量化壓縮潛力,并且為了進一步提升模型部署的性能,我們就開始量化壓縮實戰(zhàn)吧。
RT-DETR 模型壓縮實戰(zhàn)
01 RT-DETR 模型準備
PaddleDetection 中提供了官方訓練好的使用了不同 backbone 的模型,我們直接使用這些模型作為原始的模型即可。在 PaddleDetection 的環(huán)境下按照其流程將模型導出成為靜態(tài)圖模型,這些靜態(tài)圖用于量化壓縮和部署測試。
02 數(shù)據(jù)集準備
使用 PaddleSlim 自動壓縮工具量化模型需要少量的校準數(shù)據(jù),這里我們使用標準的 COCO 數(shù)據(jù)集進行測試,可以按照 PaddleDetection 中數(shù)據(jù)準備教程進行準備,數(shù)據(jù)格式如下所示:
03 模型量化壓縮
量化壓縮一般是指降低模型存儲和計算所用數(shù)值的位數(shù),達到減少計算量、存儲資源和提升推理速度的效果。在飛槳家族中,PaddleSlim 是一個模型壓縮工具庫,包含模型剪裁、量化、知識蒸餾、超參搜索和模型結(jié)構(gòu)搜索等一系列模型壓縮策略。其中的自動化壓縮工具通過無源碼的方式,自動對預測模型進行壓縮,壓縮后模型可直接部署應用。我們使用自動化壓縮工具進行模型壓縮分為以下3個步驟:
準備預處理配置文件
數(shù)據(jù)預處理的配置和 PaddleDetection 中的模型配置對齊即可:
定義量化配置文件
定義量化訓練的配置文件,Distillation 表示蒸餾參數(shù)配置,QuantAware 表示量化參數(shù)配置,TrainConfig 表示訓練時的訓練輪數(shù)、優(yōu)化器等設(shè)置。
開始運行
少量代碼就可以開始 ACT 量化訓練。啟動 ACT 時,需要傳入模型文件的路徑(model_dir)、模型文件名(model_filename)、參數(shù)文件名稱(params_filename)、壓縮后模型存儲路徑(save_dir)、壓縮配置文件(config)、dataloader和評估精度的 eval_callback。
如果使用 GPU 訓練,在幾十分鐘內(nèi)就可以完成整個壓縮過程。訓練完成后會在 save_dir 路徑下產(chǎn)出 model.pdmodel和model.pdiparams文件。至此,完成了模型訓練壓縮工作。
RT-DETR 模型部署
飛槳原生推理庫 Paddle Inference 性能優(yōu)異,針對不同平臺不同的應用場景進行了深度的適配優(yōu)化,做到高吞吐、低時延,支持了本項目 RT-DETR 模型的 INT8 加速推理。所以在 RT-DETR 量化壓縮后,我們使用 Paddle Inference 推理庫進行部署。
01 推理環(huán)境準備
硬件環(huán)境
需要一臺載有支持 INT8 加速推理的 NVIDIA tesla T4 顯卡或者 A10 的推理主主機。
軟件環(huán)境
PaddlePaddle develop 版本
具體地,將壓縮后的模型拷貝到指定位置,運行指令:
值得注意的是,需要運行兩次上述指令。第一次運行會收集模型信息并保存 dynamic_shape.txt,用于構(gòu)建 TensorRT 加速引擎,之后運行會直接加載該文件進行實際預測。最終測試的量化模型的效果如下表所示:


-mAP的指標均在COCO val2017數(shù)據(jù)集中評測得到,IoU=0.5:0.95
總結(jié)與展望
本文對 RT-DETR 檢測模型進行了量化壓縮的全流程實踐,在極小的成本下生成了能高速推理的壓縮模型。在 Paddle Inference 中,經(jīng)過壓縮后模型的精度損失幾乎可以忽略不計,但是帶來的加速效果十分明顯,相較于原模型最高加速比為44%。希望看到這篇文章的開發(fā)者們,如果想進一步對 RT-DETR 進行模型壓縮和部署,可以動手實踐一下,親自體驗加速AI模型的快樂,希望 PaddleSlim 和 Paddle Inference 能夠助力更多模型的部署落地。