众所周知,Transformer已经席卷深度学习领域。Transformer架构最初在NLP领域取得了突破性成果,尤其是在机器翻译和语言模型中,其自注意力机制允许模型处理序列数据的全局依赖性。随之,研究者开始探索如何将这种架构应用于计算机视觉任务,特别是目标检测,这是计算机视觉中的核心问题之一。

在目标识别方面,Facebook提出的DETR(Detection Transformer)是第一个将Transformer的核心思想引入到目标检测的模型,它抛弃了传统检测框架中的锚框和区域提案步骤,实现了端到端的检测。

本文将使用四个预训练的DETR模型(DETR ResNet50、DETR ResNet50 DC5、DETR ResNet101和DETR ResNet101 DC5)在自定义数据集上对其进行微调,通过比较它们在自定义数据集上的mAP,来比较评估每个模型的检测精度。

DETR模型结构

如图所示,DETR模型通过将卷积神经网络CNN与Transformer架构相结合,来确定最终的一组边界框。

在目标检测中,预测的Bounding box经过非极大值抑制NMS处理,获得最终的预测。但是,DETR默认总是预测100个Bounding box(可以配置)。因此,我们需要一种方法将真实Bounding box与预测的Bounding box进行匹配。为此,DETR使用了二分图匹配法。

DETR的架构如下图所示。

DETR使用CNN模型作为Backbone,在官方代码中,选用的是ResNet架构。CNN学习二维表示,并将输出展平,再进入位置编码(positional encoding)阶段。位置编码后的特征进入Transformer编码器,编码器学习位置嵌入(positional embeddings)。这些位置嵌入随后传递给解码器。解码器的输出嵌入会进一步传递给前馈网络(FFN)。FFN负责识别是物体类别的边界框还是’no object’类别。它会对每个解码器输出进行分类,以确定是否检测到对象以及对应的类别。

DETR模型的详细架构如下:

数据集

本文将使用一个包含多种海洋生物的水族馆数据集(https://www.kaggle.com/datasets/sovitrath/aquarium-data)训练DETR模型。数据集目录结构如下:

Aquarium Combined.v2-raw-1024.voc
├── test [126 entries exceeds filelimit, not opening dir]
├── train [894 entries exceeds filelimit, not opening dir]
├── valid [254 entries exceeds filelimit, not opening dir]
├── README.dataset.txt
└── README.roboflow.txt