为了账号安全,请及时绑定邮箱和手机立即绑定

RT-DETR:实时目标检测的下一阶段进化

实时目标检测是一个至关重要的领域,拥有广泛的应用,从目标跟踪到自动驾驶。想象一下,一辆自动驾驶汽车能够实时检测行人和其他车辆,或者一个能够同时追踪多个移动物体的监控系统。这些系统的效率和准确性取决于它们快速准确地处理和分析视觉数据的能力。这就是实时目标检测的重要性所在。

在这篇博客文章中,我们将讨论RT-DETR及其实现。虽然RT-DETR听起来像是一串秘密代码,但它涉及复杂的编码,以实现比当前方法更优越的图像预测。它就像是能让你的视觉数据处理更快更准确的秘密配方。把它想象成物体检测领域的全新超级英雄,带着增强的能力来拯救世界。

RT-DETR 自称是第一个实时的端到端目标检测器。这究竟是什么?

RT-DETR 代表实时检测变压器,是第一个实时、端到端的对象检测器。利用变压器在计算机视觉任务中的能力,RT-DETR 将实时对象检测的性能提升到了一个新的水平。这就像从普通汽车升级到高速列车一样,在速度和效率上都有了显著的提升。

RT-DETR 与 YOLO 有何不同?它有哪些新的实现?

传统上,由于其轻量级和简洁的设计,YOLO(You Only Look Once)一直是实时物体检测的首选模型。

然而,RT-DETR 引入了创新之处,使其区别于 YOLO。尽管 YOLO 由于其速度和准确度之间的平衡而广受欢迎,但它在处理非极大值抑制(NMS)时面临挑战。

了解更多关于 YOLO 及其实现的内容,可以参考我之前的帖子:初学者详解实现 YOLOv8

什么是NMS?

非极大值抑制(NMS)是一种计算机视觉方法,用于从多个重叠的对象中选择一个单一的对象,通常是在目标检测中选择边界框。该方法涉及丢弃低于某个概率阈值的对象,并反复选择概率最高的对象。任何剩余的边界框,如果与之前选择的边界框的交并比(IoU)≥ 0.5,则会被丢弃。这个过程会影响YOLO,导致推理速度变慢,并引入影响速度和准确性的不稳定因素。

NMS是如何影响YOLO的?

现有的实时检测器,如 YOLO,通常使用基于 CNN 的架构。尽管 YOLO 在速度和精度之间取得了合理的平衡,但它需要在后处理阶段使用 NMS,这不仅减慢了推理速度,还引入了影响速度和精度稳定性的超参数。

DETR和RT-DETR是如何解决NMS问题的?

进入 DETR 和 RT-DETR,它们解决了这些问题。虽然 DETR 模型可以解决 YOLO 的 NMS 问题,但其高昂的计算成本使得它们无法满足实时检测的需求,从而失去了 NMS 无架构的速度优势。这使我们转向了 RT-DETR,它是基于 DETR 的,但有了显著的改进。

DETR和RT-DETR是如何解决NMS问题的?

为了解决NMS带来的问题,开发了DETR(检测Transformer)和RT-DETR。DETR模型可以解决YOLO的NMS问题,但其高昂的计算成本使其无法满足实时检测的需求。因此,无NMS架构并没有表现出推理速度的优势。这促使我们转向RT-DETR,它在DETR模型的基础上进行了重大改进,以克服这些挑战。

在RT-DETR中需要哪些修改?

  • RT-DETR 的基础模型是 DETR。然而,引入多尺度特征虽然有助于加速训练收敛,但显著增加了输入编码器的序列长度。多尺度特征之间的交互带来的高计算成本使得 Transformer 编码器成为计算瓶颈,需要重新设计编码器。
  • 此外,当前直接采用分类得分的查询选择方法忽略了检测器需要同时建模物体类别和位置的需求。这可能导致选择定位信心较低的编码器特征作为初始查询,增加不确定性并降低性能。

什么是Transformer编码器?

Transformer编码器是Vaswani等人在“Attention is All You Need”论文中引入的Transformer模型架构的一部分。它使用自注意力机制并行处理输入序列,使其在自然语言处理和计算机视觉的各种任务中都非常有效。

什么是Vanilla Transformer编码器?

“Vanilla”指的是某事物的原始或基本版本。一个“Vanilla Transformer编码器”指的是最初在原始论文中描述的标准、未经修改的Transformer编码器版本。它通过自注意力和前馈神经网络处理输入序列,没有任何额外的增强或修改。

RT-DETR 实现了哪些想法来解决这些问题?

RT-DETR 实现了多种方法来克服这些挑战。为了高效处理多尺度特征,RT-DETR 使用了一个高效的混合编码器来替代普通的Transformer编码器。这通过分离不同尺度特征的内部尺度交互和跨尺度融合,显著提高了推理速度。

→ 混合编码器:

一个高效的混合编码器是标准编码器的重新设计版本,结合了不同的技术来优化性能。它将同一尺度内的内部交互(处理同一尺度内的特征)和跨尺度融合(结合不同尺度的特征)解耦,以降低计算成本并提高处理速度。

为了防止选择定位信心较低的编码器特征作为对象查询,RT-DETR 引入了最小化不确定性查询选择。这种方法明确地优化了不确定性,为解码器提供了高质量的初始查询,从而提高了准确性。

→ 最小不确定性查询选择:

最小不确定性查询选择是一种通过最小化不确定性来选择解码器最佳初始查询的技术。这确保所选特征具有高定位置信度,从而提高物体检测过程的准确性和可靠性。

此外,由于 DETR 的多层解码器架构,RT-DETR 支持灵活的速度调节,以适应各种实时场景而无需重新训练。这使得 RT-DETR 成为实时物体检测的灵活且强大的解决方案,解决了先前模型的局限性,并在该领域设立了新的标准。

通过集成这些先进的技术,RT-DETR 不仅解决了 NMS 带来的挑战,还实现了卓越的性能,使其在实时目标检测领域中成为强有力的竞争者。

现在让我们来看看RT-DETR的架构!!

  1. 骨干网络:
  • 后端是初始阶段,输入图像在这里被处理以提取特征。这通常涉及一个卷积神经网络(CNN),该网络在减少图像空间维度的同时增加深度,从而在不同阶段(S3、S4、S5)生成特征图。

2. 高效混合编码器:

  • 此模块处理来自骨干网络的特征图。它包含:

  • AIFI(自适应交互融合集成): 它融合了骨干网络不同层级(S3、S4、S5)的特征,以创建更丰富的表示。

  • CCFF(跨尺度通道融合融合): 此模块执行多级融合,结合不同尺度的特征,以保持高层次语义信息和低层次细节特征之间的平衡。

  • F5: 融合后的最终特征图,供下一阶段使用。

3. 最小化不确定性查询选择:

  • 此组件根据查询的不确定性来选择查询。它确保选择最具有信息量的查询用于检测任务,减少冗余并提高效率。

4. 解码器 & 头部:

  • 解码器和头部模块: 处理选定的查询以生成最终的检测输出。
  • 位置嵌入: 向查询添加空间信息,帮助模型理解图像中对象的位置。
  • 图像特征: 在这里使用了从编码器中提取的精炼特征。
  • 对象查询: 这些是可学习的嵌入,帮助模型专注于图像的不同部分以进行对象检测。

5. 检测头:

  • 用于最终检测的卷积层有两种类型:

  • Conv1x1 s1: 一个1x1的卷积,后面跟着批量归一化(BN)和SiLU激活函数。

  • Conv3x3 s2: 一个3x3的卷积,后面跟着批量归一化(BN)和SiLU激活函数。

这些层产生检测到的对象的最终边界框坐标和类别分数。

实现:

安装所有依赖和包:

    import torch  
    import requests  

    import numpy as np  
    import supervision as sv  
    import albumentations as A  

    from PIL import Image  
    from pprint import pprint  
    from roboflow import Roboflow  
    from dataclasses import dataclass, replace  
    from google.colab import userdata  
    from torch.utils.data import Dataset  
    from transformers import (  
        AutoImageProcessor,  
        AutoModelForObjectDetection,  
        TrainingArguments,  
        Trainer  
    )  
    from torchmetrics.detection.mean_ap import MeanAveragePrecision

加载模型:

    CHECKPOINT = "PekingU/rtdetr_r50vd_coco_o365"  
    DEVICE = torch.device("cuda" if torch.cuda.is_available() else "cpu")  

    model = AutoModelForObjectDetection.from_pretrained(CHECKPOINT).to(DEVICE)  
    processor = AutoImageProcessor.from_pretrained(CHECKPOINT)  

加载输入图像:

    URL = "https://media.istockphoto.com/id/627966690/photo/two-dogs-in-the-city.jpg?s=612x612&w=0&k=20&c=6Fj5qtEH9vs7ojnyfjF1mOgEA_i63rzAQtjtuVuw37A="  

    image = Image.open(requests.get(URL, stream=True).raw)  
    inputs = processor(image, return_tensors="pt").to(DEVICE)  

    with torch.no_grad():  
        outputs = model(**inputs)  

    w, h = image.size  
    results = processor.post_process_object_detection(  
        outputs, target_sizes=[(h, w)], threshold=0.3)

无NMS的结果:

    detections = sv.Detections.from_transformers(results[0])  
    labels = [  
        model.config.id2label[class_id]  
        for class_id  
        in detections.class_id  
    ]  

    annotated_image = image.copy()  
    annotated_image = sv.BoundingBoxAnnotator().annotate(annotated_image, detections)  
    annotated_image = sv.LabelAnnotator().annotate(annotated_image, detections, labels=labels)  
    annotated_image.thumbnail((600, 600))  
    annotated_image

带有NMS的结果:

    detections = sv.Detections.from_transformers(results[0]).with_nms(threshold=0.1)  
    labels = [  
        model.config.id2label[class_id]  
        for class_id  
        in detections.class_id  
    ]  

    annotated_image = image.copy()  
    annotated_image = sv.BoundingBoxAnnotator().annotate(annotated_image, detections)  
    annotated_image = sv.LabelAnnotator().annotate(annotated_image, detections, labels=labels)  
    annotated_image.thumbnail((600, 600))  
    annotated_image

RT-DETR 在实时目标检测领域取得了重大突破。通过解决之前模型如 YOLO 的局限性,并引入高效混合编码器和最小化不确定性查询选择等创新解决方案,RT-DETR 提供了更快速、更准确和更灵活的性能。

这使得它成为从自动驾驶到高级监控系统等各种应用中不可或缺的工具。随着技术的不断发展,像 RT-DETR 这样的模型无疑将在实时视觉数据处理的未来发展中发挥关键作用。

敬请期待这个动态领域更多的激动人心的发展!

参考资料:
  1. NMS: https://paperswithcode.com/method/non-maximum-suppression
  2. RT-DETR 论文: https://arxiv.org/pdf/2304.08069
  3. RT-DETR Github: https://github.com/lyuwenyu/RT-DETR

4. 来自Roboflow的代码: https://blog.roboflow.com/train-rt-detr-custom-dataset-transformers/

5. 我的github上的完整代码: https://github.com/NandiniLReddy/RT-DETR

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消