文章目录DETR: 使用Transformer进行端到端的目标检测DETR是什么关于代码模型库笔记本使用 - 目标检测数据准备训练评估使用 - 分割DETR: 使用Transformer进行端到端的目标检测DETRDetection Transformer是一种创新的目标检测方法它通过使用Transformer架构来替换传统复杂的手工设计目标检测流程并在COCO数据集上与Faster R-CNN结合ResNet-50骨干网络相比在仅使用一半的计算能力FLOPs和相同数量参数的情况下达到了42 AP的成绩。DETR不仅简化了目标检测的实现过程还提供了一种高效、快速的方法来进行推理整个推理过程可以在PyTorch中用不到50行代码完成。DETR是什么不同于传统的计算机视觉技术DETR将目标检测视为一个直接的集合预测问题。它包含了一个基于集合的全局损失函数该函数通过二分匹配强制生成独特的预测结果并采用了一个Transformer编码器-解码器架构。给定一组固定的少量学习得到的对象查询DETR通过分析对象之间的关系以及全局图像上下文来直接并行输出最终的预测集合。由于这种并行特性DETR非常快速且高效。关于代码我们认为目标检测不应该比分类更难也不应该需要复杂的库来进行训练和推理。DETR易于实现和实验我们提供了一个独立的Colab笔记本展示了如何仅用几行PyTorch代码进行推理。训练代码遵循这一理念——它不是一个库而是一个简单的main.py文件导入了模型和标准训练循环的定义。此外我们在d2/文件夹中提供了一个Detectron2封装请参阅该文件夹中的README以获取更多信息。详情请见由Nicolas Carion等人撰写的《End-to-End Object Detection with Transformers》论文及我们的博客文章了解更多关于使用Transformer进行端到端目标检测的信息。模型库我们提供了基础的DETR和DETR-DC5模型并计划在未来加入更多模型。AP是在COCO 2017 val5k上计算的推断时间是基于前100张val5k COCO图像使用torchscript transformer。名称骨干网络训练轮次推理时间(s)box AP下载链接大小DETRR505000.03642.0下载159MbDETR-DC5R505000.08343.3下载159MbDETRR1015000.05043.5下载232MbDETR-DC5R1015000.09744.9下载232MbCOCO val5k评估结果可以在这个gist中找到。这些模型也可以通过torch hub获取modeltorch.hub.load(facebookresearch/detr:main,detr_resnet50,pretrainedTrue)对于全景分割的COCO panoptic val5k模型我们也提供了相应的支持。笔记本我们提供了几个在colab上的笔记本帮助您更好地理解DETRDETR动手实践笔记本展示如何从hub加载模型生成预测然后可视化模型的关注度。独立笔记本演示如何用Python实现简化版的DETR并可视化预测结果。这是深入了解架构的好起点。全景分割笔记本展示如何使用DETR进行全景分割并绘制预测结果。使用 - 目标检测DETR没有额外的编译组件依赖包也极少因此代码非常简单易用。我们提供了通过conda安装依赖的说明condainstall-cpytorch pytorch torchvision condainstallcython scipy pipinstall-Ugithttps://github.com/cocodataset/cocoapi.git#subdirectoryPythonAPI这之后就可以开始训练和评估检测模型了。为了进行全景分割工作还需要安装panopticapi。数据准备从http://cocodataset.org下载并解压COCO 2017训练和验证图像及其注释。期望的目录结构如下所示path/to/coco/ annotations/ # 注释json文件 train2017/ # 训练图像 val2017/ # 验证图像训练要在单节点上使用8个GPU为300个epoch训练基础DETR模型运行以下命令python-mtorch.distributed.launch--nproc_per_node8--use_envmain.py--coco_path/path/to/coco一个epoch大约需要28分钟所以300 epoch的训练大约需要6天的时间在一个拥有8个V100显卡的机器上。评估要使用单个GPU在COCO val5k上评估DETR R50模型运行python main.py--batch_size2--no_aux_loss--eval--resumehttps://dl.fbaipublicfiles.com/detr/detr-r50-e632da11.pth--coco_path/path/to/coco对于多节点训练分布式训练可通过Slurm和submitit获得。使用 - 分割我们展示了扩展DETR来预测分割掩膜相对简单的过程主要展示了强大的全景分割结果。数据准备方面除了COCO数据集外还需要下载和提取全景注释。训练时推荐分为两个阶段首先训练DETR来检测所有边界框然后单独训练分割头。对于实例分割可以直接训练一个正常的边界框模型或使用我们提供的预训练模型。一旦有了边界框模型检查点就需要冻结它并单独训练分割头。