十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

第290篇 DETR——重新定义目标检测的 Transformer 架构

第290篇 DETR——重新定义目标检测的 Transformer 架构 YOLO系列聊完了这篇讲一个完全不同的目标检测范式——DETR。YOLO是CNN路线的极致优化DETR则引入了Transformer彻底改变了目标检测的设计思路。DETR的全称是Detection Transformer2020年由Facebook AI Research提出。它的核心创新是把目标检测重新定义为一个集合预测问题用Transformer的注意力机制直接输出检测结果完全不需要anchor、NMS这些传统组件。面试中DETR经常作为你对前沿技术了解多少的考题。虽然DETR在工业界的实际部署还不如YOLO广泛但它代表的方向——端到端检测、Transformer视觉模型——是未来趋势。理解DETR的设计思路对你理解后续的视觉Transformer很有帮助。一、DETR的架构DETR的架构很简洁只有三个主要组件。Backbone用ResNet通常ResNet-50提取图像特征。跟传统检测器一样CNN backbone负责从原始图像中提取多尺度特征图。Transformer Encoder-Decoder这是核心。Encoder处理backbone输出的特征图生成全局的上下文表示。Decoder接收encoder的输出和一组learned object queries可学习的目标查询每个query对应一个潜在的目标。# DETR架构概要 class DETR(nn.Module): def __init__(self, num_classes, num_queries100): self.backbone ResNet50() self.transformer Transformer(d_model256, nhead8) self.query_embed nn.Embedding(num_queries, 256) self.class_head nn.Linear(256, num_classes 1) # 1 for no-object self.bbox_head nn.Sequential( nn.Linear(256, 256), nn.ReLU(), nn.Linear(256, 4) # cx, cy, w, h )预测头每个query输出两样东西——类别通过线性层softmax和边界框通过线性层输出cx,cy,w,h。100个query就输出100个预测结果。关键设计object queries。这是DETR最核心的创新。每个query是一个256维的向量通过注意力机制去查询特征图中的信息。不同的query会关注图像中不同的区域——有的query学会了检测人有的学会了检测车。这些query是端到端训练出来的不需要人工设计。二、匈牙利匹配与损失DETR的训练需要一个关键步骤二分图匹配Hungarian Matching。问题是100个query输出100个预测但一张图可能只有3个目标。怎么把预测和ground truth配对传统方法用IoU阈值来配对YOLO的做法。DETR用匈牙利算法做最优匹配——计算所有预测和所有GT之间的匹配代价找到总代价最小的配对方案。# 匹配代价计算 cost (classification_cost bbox_l1_cost giou_cost) # 匈牙利算法找最优匹配 indices linear_sum_assignment(cost)匹配代价由三部分组成分类代价预测类别和GT类别的负对数似然、L1框回归代价、GIoU代价。三者的权重需要调——通常分类权重1L1权重5GIoU权重2。实际使用中要注意query的数量默认100要大于图像中目标的最大数量。如果一张图最多有50个目标100个query够用。多出来的query会预测为no-object。训练时匈牙利匹配的计算量是O(N^3)N是query数量。N太大会拖慢训练速度。损失函数也只对匹配上的query计算。未匹配的query对应背景只计算分类损失预测为no-object。这样避免了正负样本不均衡的问题——不需要像YOLO那样精心设计正负样本分配策略。三、DETR的优缺点优点端到端设计——不需要anchor、不需要NMS、不需要手工设计的正负样本分配。整个流程干净简洁可学习的组件都有明确的数学意义。全局注意力——Transformer的self-attention让每个位置都能看到整张图像的信息。不需要FPN来做多尺度特征融合模型自己学会了处理不同大小的目标。集合预测——把检测定义为集合预测问题天然没有重复检测的问题通过匈牙利匹配保证一对一。不需要调NMS的IoU阈值不存在阈值设大了重复检测、设小了漏检的尴尬。模型输出的就是最终结果后处理极其简单。缺点收敛慢——DETR需要训练500个epoch才能收敛YOLO只需要300个。原因是Transformer的注意力机制需要很长时间才能学会定位目标。后续Deformable DETR用可变形注意力解决了这个问题100个epoch就能收敛。小目标检测差——全局注意力的计算量随特征图尺寸平方增长。DETR的特征图分辨率通常只有原始图像的1/32小目标信息损失严重。后续Conditional DETR、DAB-DETR做了改进。推理速度慢——Transformer的计算量大DETR的推理速度远不如YOLO。在边缘设备上部署DETR目前还不现实。四、DETR的后续发展DETR之后涌现了大量改进工作。Deformable DETR用可变形注意力Deformable Attention替代标准注意力。注意力只关注目标附近的少量关键位置而不是整张特征图。训练速度提升10倍精度也有提升。Conditional DETR用条件查询替代可学习的查询。每个query先预测一个类别相关的条件再用这个条件去查询特征。减少了query的学习难度。DINODETR with Improved deNoising anchOrs引入去噪训练——在训练时加入带噪声的GT框作为辅助query帮助模型更快学会定位。目前精度最高的DETR变体之一。RT-DETR专门针对实时性优化的DETR。用混合编码器融合多尺度特征、高效的编码器-解码器设计在保持端到端优势的同时达到接近YOLO的推理速度。在COCO上RT-DETR-R50达到53.1 AP推理速度114 FPSA100。这是DETR走向实际部署的重要一步证明了Transformer检测器也能做到实时。五、面试高频追问QDETR和YOLO的本质区别是什么A设计哲学不同。YOLO是基于锚框的回归方法——在预定义的锚框基础上做微调需要NMS去重。DETR是基于集合预测的方法——用匈牙利匹配保证一对一不需要NMS。YOLO更快DETR更优雅。Q为什么DETR收敛慢A标准attention的计算是全局的训练初期模型不知道该关注哪里梯度信号很弱。Deformable DETR用可变形注意力让模型一开始就关注局部区域加速了收敛。这类似于YOLO用anchor给模型一个初始化的定位信息。QDETR在工业界有实际应用吗A目前还不多。大多数工业场景对实时性要求高YOLO更合适。但DETR的端到端特性在离线检测、高精度检测场景有优势。RT-DETR的出现让DETR在实时场景也有了竞争力。长远看Transformer在视觉领域的渗透会越来越深。DETR代表了目标检测的一个新方向——用Transformer替代传统CNN检测流水线。架构设计、匈牙利匹配、优缺点分析、后续发展这四个方面理解了你就掌握了DETR的核心。下一篇我们聊目标检测部署TensorRT。DETR是目标检测领域的重要创新。Transformer检测架构、匈牙利匹配训练机制、优缺点对比分析、后续演进方向这四个维度构成了DETR的完整知识体系。上一篇第289篇 YOLO系列下一篇聊目标检测部署TensorRT。如果这篇文章对你有帮助欢迎点赞支持一下你的鼓励是我持续更新的动力
返回列表