DETR:基于transformer实现端到端目标检测


本文复现DETR目标检测方案,基于Transformer实现端到端检测,无需NMS或anchor生成。模型含CNN(Res50)+Transformer+FFN结构,用二分图匹配与匈牙利算法处理预测框。适配Paddle 2.0,修复BUG并对齐精度,DETR-DC5变体在COCO2017验证集MAP达0.431。

☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜

模型介绍

论文复现第三期DETR方案, 精确度MAP为0.431

End-to-End Object Detection with Transformers

参考代码: https://aistudio.baidu.com/aistudio/projectdetail/1327221

  • 在大佬的基础上进行修改,包括Paddle 2.0适配, BUG修复,以及精度对齐等工作

github pytorch代码: https://github.com/facebookresearch/detr

论文地址: https://arxiv.org/pdf/1706.03762.pdf

  • 基于transformer实现端到端目标检测, 两大主要组成,一者是预测的匹配损失函数,再者预测目标和他们的关系。
  • 不需要使用NMS或者anchor生成, 本文能将该任务的先验知识进行编码。DETR结合目标关联关系和上下文直接并行输出最终的预测集。
  • Bipartite Matching二分图最大匹配, 将节点集V分割为互不相割的子集。训练时将预测框和GT boxes进行匹配。若没有找到匹配的预测框作为"no object"。 最终计算匹配损失。
  • transformer的自注意力机制,专门对序列中成对交互的元素进行建模,所以也很好解决去除重复框
  • 推理出的box坐标是直接基于输入图片而不是基于anchor
  • 先预设固定数量的预测量,通常比图像的目标数量多。南调是对预测目标进行评分,使用最低成对匹配成本,用到匈牙利算法。线性组合IOU损失和L1损失。
  • 网络结构由cnn(res50)+transformer+FFN. 常用的backbone都可以用。cnn到transformer通过1x1卷积进行降维,空间维度压缩到一维, FFN由3层MLP+relu组成。
  • backbone和transformer分开训练,学习率设置不一样。具体是怎样的方式?
  • 关于transformer,
    • 其实就是全连接(或一维卷积)加上attention结合体,对于局部特征捕获能力稍欠缺。
    • 编解码结构较大的局限性是固定长度的语义向量, 编码器压缩成一个固长向量无法表示整个序列信息, 前期信息容易被后序信息覆盖,解码时输入每个单词权重不一致。
    • attention解决编解码结构的弊端,编码器时将正序和逆序的隐藏层状态结合起来, 解码时步骤,1.计算编码器隐藏层状态和解码器隐藏层状态间的相关程度并用softmax归一化得到权重值, 2. 计算语义编码向量的加权和,3. 根据加权和计算隐藏状态和解码器输出。不同编解码结构的是解码时选择性的从向量序列中挑选。
    • soft attention缺点是每次decode都会计算所有编码器隐藏层状态向量,计算复杂度较高。hard attention每次近选择一个source进行计算,缺点是不可微,无法反向传播。
    • global attetion也属于soft attention, 只是计算权重公式上有差别。实验表明general方式好一些。
    • local attention, 每次选择一部分source进行计算, 既减少计算量又能可微。思路是为decoder预测一个source位置,然后基于位置选择一个窗口用于计算编码向量。关键是怎么确定pt位置, monotoic或predictive。
    • self attention, 传统attention是基于target和source间的相似度,而self是发生在target内部或者source内部的相似关联。self更容易捕获长距依赖特征。query和key点积相当于给每个单词打分,决定了编码单词时重视句子其他部分的程度。softmax决定了其他单词对当前单词编码的贡献,self作为最大,其他单词也很有参考作用。
    • transformer和attention机制一样,只是更复杂,多个encoder和docoder堆叠一起, encoder包含self-attention(不仅仅当前词还有上下文)和神经网络层(可并行),decoder多了一层attention(当前需关注的重点内容)。encoder前要对输入数据进行embedding操作。
    • 位置编码, transformer缺少解释序列中单词顺序的方法,positional encoding在维度上和embedding一样,偶数位置正弦编码,奇数位置余弦编码,决定当前词的位置或不同词间距离,并且模型可学习到。
    • 多头注意力,主要扩展了模型专注不同位置的能力,给出了注意力层的多个表示子空间。8个头就有8套qkv矩阵,每个头的qkv矩阵权重独立,将这些矩阵拼接在一起并用附加权重矩阵相乘。
    • transformer还使用到了残差和layer norm。LN是在每一个样本上计算均值和方差,而不是BN那种在批方向计算均值和方差。还用到了mask,掩盖值,使其参数更新时不产生效果, padding mask在较短序列填充0,Sequence mask只依赖t之前的信息,将t之后信息掩盖起来。

关于数据集COCO2017

COCO的全称是Common Objects in Context,是微软团队提供的一个可以用来进行图像识别的数据集。MS COCO数据集中的图像分为训练、验证和测试集。其行业地位就不再多少了,本文主要梳理一下该数据集包含的内容。下图是官网给出的可下载的数据集(更新时间2025年01月09日),从这里可看出其数据集主要包括有标注的和无标注的数据。

       

In [ ]
#解压数据集%cd /home/aistudio/data/data7122/ 
!unzip train2017.zip!unzip val2017.zip !unzip annotations_trainval2017.zip
    In [ ]
#加载数据集%cd ~/my_detr
!python coco_dataset.py
   

模型结构搭建

  1. Backbone在resnet50基础上修改,支持DC5变体
  2. 搭建transformer结构
  3. 搭建后处理包括匈牙利匹配算法
  4. 损失函数
  5. 后处理

核心代码主要有:

  • model.py
  • resnet.py
  • backbone.py
  • transformer.py

       

In [ ]

   

精度对齐

因为loss函数以及后处理较为复杂,所以这里特定还用了loss精度对齐

输出结果结果精度对齐

模拟tensor输入: image = [paddle.ones(shape=[3, 800, 1199])] samples.tensors = torch.ones(1, 3, 800, 1199) 因为resize对图像输入有一定差距,所以使用ones的张量, 比如使用样例数据, 0.348(torch) vs 0.31(paddle)

pytorch结果:

       

paddle结果:

       

LOSS 精度对齐

相差小数点2位

Pytorch的结果:

       

PaddlePaddle的结果:

       

训练DETR

In [ ]
#开始训练%cd ~/my_detr
!python train_val.py train
       
/home/aistudio/my_detr
/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/paddle/fluid/layers/utils.py:26: DeprecationWarning: `np.int` is a deprecated alias for the builtin `int`. To silence this warning, use `int` by itself. Doing this will not modify any behavior and is safe. When replacing `np.int`, you may wish to use e.g. `np.int64` or `np.int32` to specify the precision. If you wish to review your current use, check the release note link for additional information.
Deprecated in NumPy 1.20; for more details and guidance: https://numpy.org/devdocs/release/1.20.0-notes.html#deprecations
  def convert_to_list(value, n, name, dtype=np.int):
/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/matplotlib/__init__.py:107: DeprecationWarning: Using or importing the ABCs from 'collections' instead of from 'collections.abc' is deprecated, and in 3.8 it will stop working
  from collections import MutableMapping
/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/matplotlib/rcsetup.py:20: DeprecationWarning: Using or importing the ABCs from 'collections' instead of from 'collections.abc' is deprecated, and in 3.8 it will stop working
  from collections import Iterable, Mapping
/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/matplotlib/colors.py:53: DeprecationWarning: Using or importing the ABCs from 'collections' instead of from 'collections.abc' is deprecated, and in 3.8 it will stop working
  from collections import Sized
---->
{'hidden_dim': 256, 'lr_backbone': -1, 'masks': False, 'dilation': False, 'backbone': 'resnet50', 'num_classes': 91, 'dropout': 0.1, 'nheads': 8, 'dim_feedforward': 2048, 'enc_layers': 6, 'dec_layers': 6, 'pre_norm': False, 'num_queries': 100, 'aux_loss': True, 'set_cost_class': 1, 'set_cost_bbox': 5, 'set_cost_giou': 2, 'bbox_loss_coef': 5, 'giou_loss_coef': 2, 'eos_coef': 0.1, 'coco_path': '/home/aistudio/data/data7122', 'lr': 1e-06, 'clip_max_norm': 0.1, 'batch_size': 8, 'epochs': 2}
{'num_classes': 91, 'norm_layer': }
block 
[False, False, False]
W0514 19:16:37.620630 26619 device_context.cc:362] Please NOTE: device: 0, GPU Compute Capability: 7.0, Driver API Version: 11.0, Runtime API Version: 10.1
W0514 19:16:37.627422 26619 device_context.cc:372] device: 0, cuDNN Version: 7.6.
debug: 1 1
debug: 2 1
debug: 2 1
debug: 2 1
Epoch 0: StepDecay set learning rate to 1e-06.
loading annotations into memory...
Done (t=0.56s)
creating index...
index created!
loading annotations into memory...
Done (t=0.69s)
creating index...
index created!
/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/paddle/fluid/framework.py:687: DeprecationWarning: `np.bool` is a deprecated alias for the builtin `bool`. To silence this warning, use `bool` by itself. Doing this will not modify any behavior and is safe. If you specifically wanted the numpy scalar type, use `np.bool_` here.
Deprecated in NumPy 1.20; for more details and guidance: https://numpy.org/devdocs/release/1.20.0-notes.html#deprecations
  elif dtype == np.bool:
/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/paddle/tensor/creation.py:143: DeprecationWarning: `np.object` is a deprecated alias for the builtin `object`. To silence this warning, use `object` by itself. Doing this will not modify any behavior and is safe. 
Deprecated in NumPy 1.20; for more details and guidance: https://numpy.org/devdocs/release/1.20.0-notes.html#deprecations
  if data.dtype == np.object:
/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/paddle/fluid/dygraph/math_op_patch.py:238: UserWarning: The dtype of left and right variables are not the same, left dtype is VarType.FP32, but right dtype is VarType.INT64, the right dtype will convert to VarType.FP32
  format(lhs_dtype, rhs_dtype, lhs_dtype))
epoch: 0, batch_id: 0, loss: 10.05978012084961
epoch: 0, batch_id: 100, loss: 6.360683917999268
epoch: 0, batch_id: 200, loss: 6.134881973266602
epoch: 0, batch_id: 300, loss: 7.114040851593018
epoch: 0, batch_id: 400, loss: 6.500746250152588
epoch: 0, batch_id: 500, loss: 6.7673797607421875
epoch: 0, batch_id: 600, loss: 5.745387554168701
epoch: 1, batch_id: 0, loss: 7.610352993011475
epoch: 1, batch_id: 100, loss: 5.726753234863281
epoch: 1, batch_id: 200, loss: 5.837918758392334
epoch: 1, batch_id: 300, loss: 6.997137069702148
epoch: 1, batch_id: 400, loss: 6.292409420013428
epoch: 1, batch_id: 500, loss: 6.677578926086426
epoch: 1, batch_id: 600, loss: 5.692938327789307
       

验证DETR

In [14]
%cd ~/my_detr
!python train_val.py eval
       
/home/aistudio/my_detr
/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/paddle/fluid/layers/utils.py:26: DeprecationWarning: `np.int` is a deprecated alias for the builtin `int`. To silence this warning, use `int` by itself. Doing this will not modify any behavior and is safe. When replacing `np.int`, you may wish to use e.g. `np.int64` or `np.int32` to specify the precision. If you wish to review your current use, check the release note link for additional information.
Deprecated in NumPy 1.20; for more details and guidance: https://numpy.org/devdocs/release/1.20.0-notes.html#deprecations
  def convert_to_list(value, n, name, dtype=np.int):
/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/matplotlib/__init__.py:107: DeprecationWarning: Using or importing the ABCs from 'collections' instead of from 'collections.abc' is deprecated, and in 3.8 it will stop working
  from collections import MutableMapping
/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/matplotlib/rcsetup.py:20: DeprecationWarning: Using or importing the ABCs from 'collections' instead of from 'collections.abc' is deprecated, and in 3.8 it will stop working
  from collections import Iterable, Mapping
/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/matplotlib/colors.py:53: DeprecationWarning: Using or importing the ABCs from 'collections' instead of from 'collections.abc' is deprecated, and in 3.8 it will stop working
  from collections import Sized
---->
{'hidden_dim': 256, 'lr_backbone': -1, 'masks': False, 'dilation': False, 'backbone': 'resnet50', 'num_classes': 91, 'dropout': 0.1, 'nheads': 8, 'dim_feedforward': 2048, 'enc_layers': 6, 'dec_layers': 6, 'pre_norm': False, 'num_queries': 100, 'aux_loss': True, 'set_cost_class': 1, 'set_cost_bbox': 5, 'set_cost_giou': 2, 'bbox_loss_coef': 5, 'giou_loss_coef': 2, 'eos_coef': 0.1, 'coco_path': '/home/aistudio/data/data7122', 'lr': 1e-06, 'clip_max_norm': 0.1, 'batch_size': 8, 'epochs': 2}
{'num_classes': 91, 'norm_layer': }
block 
[False, False, False]
W0514 21:08:15.278102  7932 device_context.cc:362] Please NOTE: device: 0, GPU Compute Capability: 7.0, Driver API Version: 11.0, Runtime API Version: 10.1
W0514 21:08:15.283421  7932 device_context.cc:372] device: 0, cuDNN Version: 7.6.
debug: 1 1
debug: 2 1
debug: 2 1
debug: 2 1
Epoch 0: StepDecay set learning rate to 1e-06.
loading annotations into memory...
Done (t=0.55s)
creating index...
index created!
loading annotations into memory...
Done (t=0.68s)
creating index...
index created!
/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/paddle/fluid/framework.py:687: DeprecationWarning: `np.bool` is a deprecated alias for the builtin `bool`. To silence this warning, use `bool` by itself. Doing this will not modify any behavior and is safe. If you specifically wanted the numpy scalar type, use `np.bool_` here.
Deprecated in NumPy 1.20; for more details and guidance: https://numpy.org/devdocs/release/1.20.0-notes.html#deprecations
  elif dtype == np.bool:
/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/paddle/fluid/dygraph/math_op_patch.py:238: UserWarning: The dtype of left and right variables are not the same, left dtype is VarType.FP32, but right dtype is VarType.INT64, the right dtype will convert to VarType.FP32
  format(lhs_dtype, rhs_dtype, lhs_dtype))
Accumulating evaluation results...
/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/pycocotools/cocoeval.py:378: DeprecationWarning: `np.float` is a deprecated alias for the builtin `float`. To silence this warning, use `float` by itself. Doing this will not modify any behavior and is safe. If you specifically wanted the numpy scalar type, use `np.float64` here.
Deprecated in NumPy 1.20; for more details and guidance: https://numpy.org/devdocs/release/1.20.0-notes.html#deprecations
  tp_sum = np.cumsum(tps, axis=1).astype(dtype=np.float)
/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/pycocotools/cocoeval.py:379: DeprecationWarning: `np.float` is a deprecated alias for the builtin `float`. To silence this warning, use `float` by itself. Doing this will not modify any behavior and is safe. If you specifically wanted the numpy scalar type, use `np.float64` here.
Deprecated in NumPy 1.20; for more details and guidance: https://numpy.org/devdocs/release/1.20.0-notes.html#deprecations
  fp_sum = np.cumsum(fps, axis=1).astype(dtype=np.float)
DONE (t=11.61s).
IoU metric: bbox
 Average Precision  (AP) @[ IoU=0.50:0.95 | area=   all | maxDets=100 ] = 0.420
 Average Precision  (AP) @[ IoU=0.50      | area=   all | maxDets=100 ] = 0.624
 Average Precision  (AP) @[ IoU=0.75      | area=   all | maxDets=100 ] = 0.442
 Average Precision  (AP) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.213
 Average Precision  (AP) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.460
 Average Precision  (AP) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.611
 Average Recall     (AR) @[ IoU=0.50:0.95 | area=   all | maxDets=  1 ] = 0.334
 Average Recall     (AR) @[ IoU=0.50:0.95 | area=   all | maxDets= 10 ] = 0.533
 Average Recall     (AR) @[ IoU=0.50:0.95 | area=   all | maxDets=100 ] = 0.575
 Average Recall     (AR) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.325
 Average Recall     (AR) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.631
 Average Recall     (AR) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.809
       

训练DETR-DC5

这个模型非常耗显存, 很难训练

In [ ]
#开始训练DC5%cd ~/my_detr
!python train_val_dc5.py train
       
/home/aistudio/my_detr
/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/paddle/fluid/layers/utils.py:26: DeprecationWarning: `np.int` is a deprecated alias for the builtin `int`. To silence this warning, use `int` by itself. Doing this will not modify any behavior and is safe. When replacing `np.int`, you may wish to use e.g. `np.int64` or `np.int32` to specify the precision. If you wish to review your current use, check the release note link for additional information.
Deprecated in NumPy 1.20; for more details and guidance: https://numpy.org/devdocs/release/1.20.0-notes.html#deprecations
  def convert_to_list(value, n, name, dtype=np.int):
/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/matplotlib/__init__.py:107: DeprecationWarning: Using or importing the ABCs from 'collections' instead of from 'collections.abc' is deprecated, and in 3.8 it will stop working
  from collections import MutableMapping
/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/matplotlib/rcsetup.py:20: DeprecationWarning: Using or importing the ABCs from 'collections' instead of from 'collections.abc' is deprecated, and in 3.8 it will stop working
  from collections import Iterable, Mapping
/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/matplotlib/colors.py:53: DeprecationWarning: Using or importing the ABCs from 'collections' instead of from 'collections.abc' is deprecated, and in 3.8 it will stop working
  from collections import Sized
---->
{'hidden_dim': 256, 'lr_backbone': -1, 'masks': False, 'dilation': True, 'backbone': 'resnet50', 'num_classes': 91, 'dropout': 0.1, 'nheads': 8, 'dim_feedforward': 2048, 'enc_layers': 6, 'dec_layers': 6, 'pre_norm': False, 'num_queries': 100, 'aux_loss': True, 'set_cost_class': 1, 'set_cost_bbox': 5, 'set_cost_giou': 2, 'bbox_loss_coef': 5, 'giou_loss_coef': 2, 'eos_coef': 0.1, 'coco_path': '/home/aistudio/data/data7122', 'lr': 1e-06, 'clip_max_norm': 0.1, 'batch_size': 1, 'epochs': 1}
{'num_classes': 91, 'replace_stride_with_dilation': [False, False, True], 'norm_layer': }
block 
[False, False, True]
W0514 17:11:00.507395 24269 device_context.cc:362] Please NOTE: device: 0, GPU Compute Capability: 7.0, Driver API Version: 11.0, Runtime API Version: 10.1
W0514 17:11:00.512784 24269 device_context.cc:372] device: 0, cuDNN Version: 7.6.
debug: 1 1
debug: 2 1
debug: 2 1
debug: 1 2
530
Epoch 0: StepDecay set learning rate to 1e-06.
loading annotations into memory...
Done (t=0.57s)
creating index...
index created!
loading annotations into memory...
Done (t=0.70s)
creating index...
index created!
/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/paddle/fluid/framework.py:687: DeprecationWarning: `np.bool` is a deprecated alias for the builtin `bool`. To silence this warning, use `bool` by itself. Doing this will not modify any behavior and is safe. If you specifically wanted the numpy scalar type, use `np.bool_` here.
Deprecated in NumPy 1.20; for more details and guidance: https://numpy.org/devdocs/release/1.20.0-notes.html#deprecations
  elif dtype == np.bool:
/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/paddle/tensor/creation.py:143: DeprecationWarning: `np.object` is a deprecated alias for the builtin `object`. To silence this warning, use `object` by itself. Doing this will not modify any behavior and is safe. 
Deprecated in NumPy 1.20; for more details and guidance: https://numpy.org/devdocs/release/1.20.0-notes.html#deprecations
  if data.dtype == np.object:
/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/paddle/fluid/dygraph/math_op_patch.py:238: UserWarning: The dtype of left and right variables are not the same, left dtype is VarType.FP32, but right dtype is VarType.INT64, the right dtype will convert to VarType.FP32
  format(lhs_dtype, rhs_dtype, lhs_dtype))
epoch: 0, batch_id: 0, loss: 5.015964031219482
epoch: 0, batch_id: 100, loss: 14.247769355773926
epoch: 0, batch_id: 200, loss: 7.298154830932617
epoch: 0, batch_id: 300, loss: 1.0471426248550415
epoch: 0, batch_id: 400, loss: 7.584997653961182
epoch: 0, batch_id: 500, loss: 3.577380895614624
epoch: 0, batch_id: 600, loss: 4.61794900894165
epoch: 0, batch_id: 700, loss: 5.049403667449951
epoch: 0, batch_id: 800, loss: 5.122508525848389
epoch: 0, batch_id: 900, loss: 3.216052770614624
epoch: 0, batch_id: 1000, loss: 3.3042514324188232
epoch: 0, batch_id: 1100, loss: 4.413068771362305
epoch: 0, batch_id: 1200, loss: 7.288424015045166
epoch: 0, batch_id: 1300, loss: 6.1409735679626465
epoch: 0, batch_id: 1400, loss: 10.504143714904785
epoch: 0, batch_id: 1500, loss: 3.685210704803467
epoch: 0, batch_id: 1600, loss: 2.6168665885925293
epoch: 0, batch_id: 1700, loss: 22.14373016357422
epoch: 0, batch_id: 1800, loss: 8.267280578613281
epoch: 0, batch_id: 1900, loss: 1.4486600160598755
epoch: 0, batch_id: 2000, loss: 4.107017993927002
epoch: 0, batch_id: 2100, loss: 9.582965850830078
epoch: 0, batch_id: 2200, loss: 6.967478275299072
epoch: 0, batch_id: 2300, loss: 15.338693618774414
epoch: 0, batch_id: 2400, loss: 13.399685859680176
epoch: 0, batch_id: 2500, loss: 1.4326478242874146
epoch: 0, batch_id: 2600, loss: 6.990074157714844
epoch: 0, batch_id: 2700, loss: 8.32422161102295
epoch: 0, batch_id: 2800, loss: 5.453993797302246
epoch: 0, batch_id: 2900, loss: 7.272365093231201
epoch: 0, batch_id: 3000, loss: 8.217702865600586
epoch: 0, batch_id: 3100, loss: 2.2091081142425537
epoch: 0, batch_id: 3200, loss: 0.9168111085891724
epoch: 0, batch_id: 3300, loss: 1.9928405284881592
epoch: 0, batch_id: 3400, loss: 6.245678424835205
epoch: 0, batch_id: 3500, loss: 8.91486930847168
epoch: 0, batch_id: 3600, loss: 6.916267395019531
epoch: 0, batch_id: 3700, loss: 4.461080551147461
epoch: 0, batch_id: 3800, loss: 8.265044212341309
epoch: 0, batch_id: 3900, loss: 8.603659629821777
epoch: 0, batch_id: 4000, loss: 4.085428714752197
epoch: 0, batch_id: 4100, loss: 10.250466346740723
epoch: 0, batch_id: 4200, loss: 2.327882766723633
epoch: 0, batch_id: 4300, loss: 3.273315906524658
epoch: 0, batch_id: 4400, loss: 6.719542026519775
epoch: 0, batch_id: 4500, loss: 3.232994794845581
epoch: 0, batch_id: 4600, loss: 4.106349945068359
epoch: 0, batch_id: 4700, loss: 1.6361501216888428
epoch: 0, batch_id: 4800, loss: 4.615266799926758
epoch: 0, batch_id: 4900, loss: 8.394232749938965
start evaluating....
Accumulating evaluation results...
/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/pycocotools/cocoeval.py:378: DeprecationWarning: `np.float` is a deprecated alias for the builtin `float`. To silence this warning, use `float` by itself. Doing this will not modify any behavior and is safe. If you specifically wanted the numpy scalar type, use `np.float64` here.
Deprecated in NumPy 1.20; for more details and guidance: https://numpy.org/devdocs/release/1.20.0-notes.html#deprecations
  tp_sum = np.cumsum(tps, axis=1).astype(dtype=np.float)
/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/pycocotools/cocoeval.py:379: DeprecationWarning: `np.float` is a deprecated alias for the builtin `float`. To silence this warning, use `float` by itself. Doing this will not modify any behavior and is safe. If you specifically wanted the numpy scalar type, use `np.float64` here.
Deprecated in NumPy 1.20; for more details and guidance: https://numpy.org/devdocs/release/1.20.0-notes.html#deprecations
  fp_sum = np.cumsum(fps, axis=1).astype(dtype=np.float)
DONE (t=9.37s).
IoU metric: bbox
 Average Precision  (AP) @[ IoU=0.50:0.95 | area=   all | maxDets=100 ] = 0.432
 Average Precision  (AP) @[ IoU=0.50      | area=   all | maxDets=100 ] = 0.634
 Average Precision  (AP) @[ IoU=0.75      | area=   all | maxDets=100 ] = 0.458
 Average Precision  (AP) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.223
 Average Precision  (AP) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.471
 Average Precision  (AP) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.612
 Average Recall     (AR) @[ IoU=0.50:0.95 | area=   all | maxDets=  1 ] = 0.340
 Average Recall     (AR) @[ IoU=0.50:0.95 | area=   all | maxDets= 10 ] = 0.551
 Average Recall     (AR) @[ IoU=0.50:0.95 | area=   all | maxDets=100 ] = 0.591
 Average Recall     (AR) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.334
 Average Recall     (AR) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.642
 Average Recall     (AR) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.815
save weights with map:  0.43226377363430357
       

验证DETR-DC5

In [15]
#验证DETR-DC5%cd ~/my_detr
!python train_val_dc5.py eval
       
/home/aistudio/my_detr
/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/paddle/fluid/layers/utils.py:26: DeprecationWarning: `np.int` is a deprecated alias for the builtin `int`. To silence this warning, use `int` by itself. Doing this will not modify any behavior and is safe. When replacing `np.int`, you may wish to use e.g. `np.int64` or `np.int32` to specify the precision. If you wish to review your current use, check the release note link for additional information.
Deprecated in NumPy 1.20; for more details and guidance: https://numpy.org/devdocs/release/1.20.0-notes.html#deprecations
  def convert_to_list(value, n, name, dtype=np.int):
/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/matplotlib/__init__.py:107: DeprecationWarning: Using or importing the ABCs from 'collections' instead of from 'collections.abc' is deprecated, and in 3.8 it will stop working
  from collections import MutableMapping
/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/matplotlib/rcsetup.py:20: DeprecationWarning: Using or importing the ABCs from 'collections' instead of from 'collections.abc' is deprecated, and in 3.8 it will stop working
  from collections import Iterable, Mapping
/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/matplotlib/colors.py:53: DeprecationWarning: Using or importing the ABCs from 'collections' instead of from 'collections.abc' is deprecated, and in 3.8 it will stop working
  from collections import Sized
---->
{'hidden_dim': 256, 'lr_backbone': -1, 'masks': False, 'dilation': True, 'backbone': 'resnet50', 'num_classes': 91, 'dropout': 0.1, 'nheads': 8, 'dim_feedforward': 2048, 'enc_layers': 6, 'dec_layers': 6, 'pre_norm': False, 'num_queries': 100, 'aux_loss': True, 'set_cost_class': 1, 'set_cost_bbox': 5, 'set_cost_giou': 2, 'bbox_loss_coef': 5, 'giou_loss_coef': 2, 'eos_coef': 0.1, 'coco_path': '/home/aistudio/data/data7122', 'lr': 1e-06, 'clip_max_norm': 0.1, 'batch_size': 1, 'epochs': 1}
{'num_classes': 91, 'replace_stride_with_dilation': [False, False, True], 'norm_layer': }
block 
[False, False, True]
W0514 21:21:04.015319  9341 device_context.cc:362] Please NOTE: device: 0, GPU Compute Capability: 7.0, Driver API Version: 11.0, Runtime API Version: 10.1
W0514 21:21:04.020784  9341 device_context.cc:372] device: 0, cuDNN Version: 7.6.
debug: 1 1
debug: 2 1
debug: 2 1
debug: 1 2
Epoch 0: StepDecay set learning rate to 1e-06.
loading annotations into memory...
Done (t=0.56s)
creating index...
index created!
loading annotations into memory...
Done (t=0.69s)
creating index...
index created!
/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/paddle/fluid/framework.py:687: DeprecationWarning: `np.bool` is a deprecated alias for the builtin `bool`. To silence this warning, use `bool` by itself. Doing this will not modify any behavior and is safe. If you specifically wanted the numpy scalar type, use `np.bool_` here.
Deprecated in NumPy 1.20; for more details and guidance: https://numpy.org/devdocs/release/1.20.0-notes.html#deprecations
  elif dtype == np.bool:
/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/paddle/fluid/dygraph/math_op_patch.py:238: UserWarning: The dtype of left and right variables are not the same, left dtype is VarType.FP32, but right dtype is VarType.INT64, the right dtype will convert to VarType.FP32
  format(lhs_dtype, rhs_dtype, lhs_dtype))
Accumulating evaluation results...
/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/pycocotools/cocoeval.py:378: DeprecationWarning: `np.float` is a deprecated alias for the builtin `float`. To silence this warning, use `float` by itself. Doing this will not modify any behavior and is safe. If you specifically wanted the numpy scalar type, use `np.float64` here.
Deprecated in NumPy 1.20; for more details and guidance: https://numpy.org/devdocs/release/1.20.0-notes.html#deprecations
  tp_sum = np.cumsum(tps, axis=1).astype(dtype=np.float)
/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/pycocotools/cocoeval.py:379: DeprecationWarning: `np.float` is a deprecated alias for the builtin `float`. To silence this warning, use `float` by itself. Doing this will not modify any behavior and is safe. If you specifically wanted the numpy scalar type, use `np.float64` here.
Deprecated in NumPy 1.20; for more details and guidance: https://numpy.org/devdocs/release/1.20.0-notes.html#deprecations
  fp_sum = np.cumsum(fps, axis=1).astype(dtype=np.float)
DONE (t=9.90s).
IoU metric: bbox
 Average Precision  (AP) @[ IoU=0.50:0.95 | area=   all | maxDets=100 ] = 0.431
 Average Precision  (AP) @[ IoU=0.50      | area=   all | maxDets=100 ] = 0.630
 Average Precision  (AP) @[ IoU=0.75      | area=   all | maxDets=100 ] = 0.458
 Average Precision  (AP) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.223
 Average Precision  (AP) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.470
 Average Precision  (AP) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.609
 Average Recall     (AR) @[ IoU=0.50:0.95 | area=   all | maxDets=  1 ] = 0.340
 Average Recall     (AR) @[ IoU=0.50:0.95 | area=   all | maxDets= 10 ] = 0.549
 Average Recall     (AR) @[ IoU=0.50:0.95 | area=   all | maxDets=100 ] = 0.593
 Average Recall     (AR) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.339
 Average Recall     (AR) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.645
 Average Recall     (AR) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.812


# paddlepaddle  # 均值  # 的是  # 端到  # 大佬  # 时将  # 编解码  # 后处理  # 基础上  # 多个  # 匈牙利  # embedding  # bug  # https  # transformer  # python  # pytorch  # cnn  # 算法  # github  # padding  # map  #   # Object  # red  # cos  # ai  # facebook  # git 


相关栏目: 【 Google疑问12 】 【 Facebook疑问10 】 【 网络优化91478 】 【 技术知识72672 】 【 云计算0 】 【 GEO优化84317 】 【 优选文章0 】 【 营销推广36048 】 【 网络运营41350 】 【 案例网站102563 】 【 AI智能45237


相关推荐: AI QA 工程:通往人工智能质量保障工程师的职业道路  Feelin网页版在线入口 Feelin官方网站导航  怎么用ai进行用户画像分析 AI消费行为与兴趣标签提炼【详解】  ChatGPT 辅助自媒体博主进行选题与大纲策划  批改网AI检测工具怎样开启实时检测_批改网AI检测工具实时检测开启与延迟设置【指南】  豆包AI怎么生成员工成长总结_豆包AI成长指标提取与案例编写【方法】  Kling AI 2.5 Turbo:视频生成领域的颠覆者,深度评测与对比  AI赋能建筑合同管理:ChatGPT实用案例深度解析  扣子AI能否连接企业微信_扣子AI企业微信对接与接口配置【攻略】  如何用 ChatGPT 批量处理 Excel 复杂公式  3步教你用AI帮你把菜谱转换成详细的烹饪步骤视频脚本  智行ai抢票如何查看抢票进度_智行ai抢票进度查询与状态解读【实操】  百度浏览器侧边栏ai怎么关 百度浏览器ai侧边栏隐藏  2025年冷邮件营销:技巧、工具和成功案例分享  feelin聊天官方网站入口 feelinAl官方网站  AI Sales Assistant:提升销售效率与客户互动的终极指南  客户生命周期价值:终极商业增长策略  律师视角下的生成式AI:信息爆炸时代的法律实践与未来展望  即梦ai能否生成节日主题插画_即梦ai节日主题关键词与元素库使用【攻略】  如何用AI帮你制定个人OKR?目标管理从未如此简单  软件工程师必备的AI工具:提升效率的六款利器  教你用AI将一篇长文自动拆解成社交媒体帖子,实现一文多发  斑马AI如何设置奖励机制_斑马AI积分奖励与勋章获取【步骤】  EdrawMax AI:项目管理和创意专业人士的终极图表工具  WorkPPT:AI驱动的PPT制作神器,效率提升不止10倍!  简历没回改:利用AI润色让你的文字更专业  批改网AI检测工具怎么生成评分报告_批改网AI检测工具报告生成与维度解读【指南】  Voice AI:下一代AI语音助手,重塑人机交互  ChatGPT写论文大纲教程 辅助学术构思与资料检索操作方法  智谱AI内容创作怎么用_智谱AI内容创作使用方法详细指南【教程】  Django与React构建AI音乐推荐:数据库集成实战指南  2025 YouTube自动化终极指南:利用AI实现高效内容创作和多平台发布  Google AI Studio 中的提示词微调实验教程  AI Buildr: 构建 AI 应用的终极指南  DeepSeek 辅助进行 Linux 内核参数调优教程  教你用AI一键生成Excel VBA脚本,彻底告别重复操作  tofai最新官网入口 tofai网页版直接进入  千问怎样调整回答语气_千问语气设置亲切专业等【指南】  AI海报设计终极指南:用ChatGPT和ImageFX轻松创建专业级海报  创客贴AI排版如何批量处理图文_创客贴AI排版批量操作与效率提升【方法】  AI一键生成原创SEO文章  ASUS Armoury Crate深度评测:最新功能与个性化定制  百度APP的ai助手怎么关闭 百度APP ai功能取消方法  精选AI销售工具:提升业绩的终极指南(2025年最新)  3步教你用AI将你的博客文章改编成引人入胜的播客脚本  Google Gemini 处理结构化 XML 数据转换教程  AI电影制作:颠覆传统,引领未来*新纪元  教你用AI一键去除图片水印,操作简单效果惊人  ChatGPT官方网页端入口 ChatGPT官网快速登录方法  如何用 ChatGPT 快速生成短视频分镜脚本 

 2025-07-24

了解您产品搜索量及市场趋势,制定营销计划

同行竞争及网站分析保障您的广告效果

点击免费数据支持

提交您的需求,1小时内享受我们的专业解答。

南京市珐之弘网络技术有限公司


南京市珐之弘网络技术有限公司

南京市珐之弘网络技术有限公司专注海外推广十年,是谷歌推广.Facebook广告全球合作伙伴,我们精英化的技术团队为企业提供谷歌海外推广+外贸网站建设+网站维护运营+Google SEO优化+社交营销为您提供一站式海外营销服务。

 87067657

 13565296790

 87067657@qq.com

Notice

We and selected third parties use cookies or similar technologies for technical purposes and, with your consent, for other purposes as specified in the cookie policy.
You can consent to the use of such technologies by closing this notice, by interacting with any link or button outside of this notice or by continuing to browse otherwise.