1. RT-DETR
飞桨在去年 3 月份推出了高精度通用目标检测模型 PP-YOLOE ,同年在 PP-YOLOE 的基础上提出了 PP-YOLOE+。而继 PP-YOLOE 提出后,MT-YOLOv6、YOLOv7、DAMO-YOLO、RTMDet 等模型先后被提出,一直迭代到今年开年的 YOLOv8。
YOLO 检测器有个较大的待改进点是需要 NMS 后处理,其通常难以优化且不够鲁棒,因此检测器的速度存在延迟。DETR是一种不需要 NMS 后处理、基于 Transformer 的端到端目标检测器。百度飞桨正式推出了——RT-DETR (Real-Time DEtection TRansformer) ,一种基于 DETR 架构的实时端到端检测器,其在速度和精度上取得了 SOTA 性能。
RT-DETR是在DETR模型基础上进行改进的,它通过使用一系列新的技术和算法,实现了更高效的训练和推理。具体来说,RT-DETR具有以下优势:
- 1、实时性能更佳:RT-DETR采用了一种新的注意力机制,能够更好地捕获物体之间的关系,并减少计算量。此外,RT-DETR还引入了一种基于时间的注意力机制,能够更好地处理视频数据。
- 2、精度更高:RT-DETR在保证实时性能的同时,还能够保持较高的检测精度。这主要得益于RT-DETR引入的一种新的多任务学习机制,能够更好地利用训练数据。
- 3、更易于训练和调参:RT-DETR采用了一种新的损失函数,能够更好地进行训练和调参。此外,RT-DETR还引入了一种新的数据增强技术,能够更好地利用训练数据。
2. OpenVINO
英特尔发行版 OpenVINO™工具套件基于oneAPI 而开发,可以加快高性能计算机视觉和深度学习视觉应用开发速度工具套件,适用于从边缘到云的各种英特尔平台上,帮助用户更快地将更准确的真实世界结果部署到生产系统中。通过简化的开发工作流程, OpenVINO™可赋能开发者在现实世界中部署高性能应用程序和算法。
OpenVINO™ 2023.1于2023年9月18日发布,该工具包带来了挖掘生成人工智能全部潜力的新功能。生成人工智能的覆盖范围得到了扩展,通过PyTorch*等框架增强了体验,您可以在其中自动导入和转换模型。大型语言模型(LLM)在运行时性能和内存优化方面得到了提升。聊天机器人、代码生成等的模型已启用。OpenVINO更便携,性能更高,可以在任何需要的地方运行:在边缘、云中或本地。
3. 环境配置
在该项目中主要包括两个环境的配置,一个是模型的下载,另一个是模型转换与部署,为了更好的大家复现该项目,所以提供主要的环境配置:
3.1 模型下载环境
paddlepaddle:2.5.1
imageio:2.31.5
imgaug:0.4.0
onnx=1.13.0
opencv-python=4.5.5.64
paddle2onnx:0.5
paddledet
3.2 模型部署环境
Numpy:1.26.0
opencv-python:4.8.1.78
openvino:2023.1.0
openvino-telemetry:2023.2.0
pillow:10.0.1
python:3.10.13
4. 模型下载与转换
PaddleDetection 提供了预训练模型以及模型训练教程,大家可以基于该教程训练自己的模型。在该项目中我们基于预训练模型展开部署案例测试,下面我们根据官方教程导出推理模型。
4.1 PaddlePaddle模型下载
首先参考PaddleDetection安装文档安装PaddlePaddle和PaddleDetection,其中PaddlePaddle要安装最新版本才可以导出RT-DETR模型。安装完成后,通过命令行下载该模型:
cd PaddleDetection
python tools/export_model.py -c configs/rtdetr/rtdetr_r50vd_6x_coco.yml -o weights=https://bj.bcebos.com/v1/paddledet/models/rtdetr_r50vd_6x_coco.pdparams trt=True --output_dir=output_inference
下表为导出模型输入输出节点信息:
通过该表,我们可以看出,该模型存在三个输入与两个输出,其中输入“im_shape”与“scale_factor”节点信息主要是该模型集成了部分后处理内容,如果大家对这种多输入的模型使用不太习惯,在下次文章中,我们将讲解如何个导出并部署不含后处理的模型部署流程。 因此该模型中比较关键的节点为“image”图片数据输入以及“reshape2_95.tmp_0”输出节点,其中模型输出的格式为: [clasid, scores, x, y, w, h]。
4.2 IR模型转换
接下来我们将模型转换为IR格式,首先将模型转ONNX格式:
paddle2onnx --model_dir=./output_inference/rtdetr_r50vd_6x_coco/ --model_filename model.pdmodel --pa