微信公众号:OpenCV学堂
关注获取更多计算机视觉与深度学习知识
引言
YOLOv5最新版本的6.x已经支持直接导出engine文件并部署到TensorRT上了。
FP32推理TensorRT演示
python export.py --weights yolov5s.pt --include onnx engine --device 0
其中onnx表示导出onnx格式的模型文件,支持部署到:
- OpenCV DNN
- OpenVINO
- TensorRT
- ONNXRUNTIME
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
推理执行的命令跟FP32的相同,直接运行,显示结果如下:
INT8量化与推理TensorRT演示
#使用calibrator验证时候每次张数,跟显存有关系,最少1张
get_batch_size
#获取每个批次的图像数据,组装成CUDA内存数据
get_batch
#如果以前运行过保存过,可以直接读取量化,低碳给国家省电
read_calibration_cache
#保存calibration文件,量化时候会用到
write_calibration_cache
TensorRT-8.4.0.6\samples\python\int8_caffe_mnist
# build trt engine
builder.max_batch_size = 1
config.max_workspace_size = 1 << 30
config.set_flag(trt.BuilderFlag.INT8)
config.int8_calibrator = calibrator
print('Int8 mode enabled')
plan = builder.build_serialized_network(network, config)
量化效果非常好,精度只有一点下降,但是速度比FP32的提升了1.5倍左右(3050Ti)。
已知问题与解决
量化过程遇到这个错误
[09/22/2022-23:01:13] [TRT] [I] Calibrated batch 127 in 0.30856 seconds.
[09/22/2022-23:01:16] [TRT] [E] 2: [quantization.cpp::nvinfer1::DynamicRange::DynamicRange::70] Error Code 2: Internal Error (Assertion min_ <= max_ failed. )
[09/22/2022-23:01:16] [TRT] [E] 2: [builder.cpp::nvinfer1::builder::Builder::buildSerializedNetwork::619] Error Code 2: Internal Error (Assertion engine != nullptr failed. )
Failed to create the engine
Traceback (most recent call last):
解决方法,把Calibrator中getBtach方法里面的代码:
img = np.ascontiguousarray(img, dtype=np.float32)
to
img = np.ascontiguousarray(img, dtype=np.float16)
这样就可以避免量化失败。
具体解释可以查看这个帖子!
https://github.com/NVIDIA/TensorRT/issues/1634
扫码查看OpenCV+OpenVIO+Pytorch系统化学习路线图
推荐阅读
CV全栈开发者说 - 从传统算法到深度学习怎么修炼
2022入坑深度学习,我选择Pytorch框架!
Pytorch轻松实现经典视觉任务
教程推荐 | Pytorch框架CV开发-从入门到实战
OpenCV4 C++学习 必备基础语法知识三
OpenCV4 C++学习 必备基础语法知识二
OpenCV4.5.4 人脸检测+五点landmark新功能测试
OpenCV4.5.4人脸识别详解与代码演示
OpenCV二值图象分析之Blob分析找圆
OpenCV4.5.x DNN + YOLOv5 C++推理
OpenCV4.5.4 直接支持YOLOv5 6.1版本模型推理
OpenVINO2021.4+YOLOX目标检测模型部署测试
比YOLOv5还厉害的YOLOX来了,官方支持OpenVINO推理