前面已经完成了DN-DETR模型的调试与论文阅读工作,对DN-DETR模型的基本原理有了初步的认识,接下来,便是对DN-DETR模型代码的学习。
DN-DETR模型结构图如下:
DN-DETR的构建与DETR极为相似,主要差别便是Decoder部分的mask机制。
本文主要介绍DN-DETR模型的构建过程。
首先是main.py中进行模型构建,DN-DETR一个主要思想便是引入了噪声,将真实数据加入噪声后送入Decoder来辅助匈牙利算法完成匹配过程,加快训练收敛。故而,这是一个通用的方法,因此,DN-DETR代码中分别对DAB-DETR,Deformable-DETR等都加入了DN处理,在证明其通用性的同时还检验其效果。
构建模型代码在models/DN-DAB-DETR中的DAB-DETR.py文件中
该过程与DETR极为类似。首先是骨干网络生成。
backbone = build_backbone(args)
随后便是Transformer模型的构建。具体encoder模型如下图所示:
Decoder模块如下:
整体Transformer模型结构如下: