DETR for PyTorch [终止随版本演进]

目录

简介

模型介绍

DETR提出了一种将对象检测视为直接集合预测问题,能够一次性预测所有的目标,其训练采用一种集合损失函数以端到端方式进行,集合损失定义在预测结果与真实目标的二部图匹配结果上;该方法简化了检测管道,有效地消除了对许多手工设计组件的需求,例如非最大抑制程序或锚点生成,简化了检测流程;和存在的其他检测方法不一样,DETR不需要任何定制的层,因此能够便捷的在任何包含transformer和CNN的深度框架中进行复现。

支持任务列表

本仓已经支持以下模型任务类型

模型 任务列表 是否支持
DETR detection train

代码实现

  • 参考实现:
url=https://github.com/facebookresearch/detr
commit_id=29901c51d7fe8712168b8d0d64351170bc0f83e0
  • 适配昇腾 AI 处理器的实现:
url=https://gitcode.com/Ascend/DrivingSDK.git
code_path=model_examples/DETR

DETR

准备训练环境

安装昇腾环境

请参考昇腾社区中《Pytorch框架训练环境准备》文档搭建昇腾环境,本仓已支持表1中软件版本。

表 1 昇腾软件版本支持表

软件类型 首次支持版本
FrameworkPTAdapter 7.0.0
CANN 8.1.RC1

安装模型环境

表 2 三方库版本支持表

Torch_Version 三方库依赖版本
PyTorch 2.1 torchvision==0.16.0
  1. 激活 CANN 环境(例如:source /usr/local/Ascend/ascend-toolkit/set_env.sh

  2. 参考《Pytorch框架训练环境准备》安装 2.1.0 版本的 PyTorch 框架和 torch_npu 插件。

  3. 设置 DETR 并安装相关依赖

    cd model_examples/DETR
    git clone https://github.com/facebookresearch/detr.git --depth=1
    
    cd detr/
    git fetch --unshallow
    git checkout 29901c51d7fe8712168b8d0d64351170bc0f83e0
    cp -f ../detr.patch ./
    cp -rf ../test ./
    git apply detr.patch
    
  4. 安装依赖

    sed -i 's/^torchvision.*/torchvision==0.16.0/' requirements.txt
    sed -i '2d;4d;6d;8d;9d' requirements.txt
    sed -i '3i\pycocotools==2.0.7' requirements.txt
    pip install -r requirements.txt
    

准备数据集

进入 COCO 官网,下载 COCO2017 数据集。将数据集上传到服务器任意路径下并解压,数据集结构排布成如下格式:

coco_path/
  annotations/  # annotation json files
  train2017/    # train images
  val2017/      # val images

准备预训练权重

  1. 联网情况下,预训练权重会自动下载。

  2. 无网络情况下,可以通过该链接自行下载 resnet50-0676ba61.pth,并拷贝至对应目录下。默认存储目录为 PyTorch 缓存目录:

    ~/.cache/torch/hub/checkpoints/resnet50-0676ba61.pth
    

快速开始

训练任务

本任务主要提供单机8卡训练脚本。

开始训练

  • 在模型根目录下,运行训练脚本。

    cd model_examples/DETR/detr
    bash test/train_8p_full.sh --data-path='/coco_path' --batch-size=8 --num-npu=8 # 8p 精度训练,epochs 默认 300
    bash test/train_8p_performance.sh --data-path='/coco_path' --batch-size=8 --num-npu=8 # 8p 性能训练,epochs 默认 20
    

    训练脚本参数说明:

    --data-path    # 数据集路径,必填
    --epochs       # 重复训练次数,可选项
    --batch-size   # 训练batch size,可选填,默认值为8
    --num-npu      # 训练卡数,可选填,默认值为8
    

训练结果

芯片 卡数 epoch Global Batchsize mAP(IoU=0.50:0.95) FPS
竞品A 8p 300 64 0.410 126
Atlas 800T A2 8p 300 64 0.410 122

变更说明

2024.11.21:首次发布

2025.1.21: 在训练脚本中增加结果保存功能,更新资料中的torch版本描述和训练结果

FAQ