移动paddle_detection
This commit is contained in:
@@ -0,0 +1,39 @@
|
||||
# DETR
|
||||
|
||||
## Introduction
|
||||
|
||||
|
||||
DETR is an object detection model based on transformer. We reproduced the model of the paper.
|
||||
|
||||
|
||||
## Model Zoo
|
||||
|
||||
| Backbone | Model | Images/GPU | Inf time (fps) | Box AP | Config | Download |
|
||||
|:------:|:--------:|:--------:|:--------------:|:------:|:------:|:--------:|
|
||||
| R-50 | DETR | 4 | --- | 42.3 | [config](https://github.com/PaddlePaddle/PaddleDetection/blob/develop/configs/detr/detr_r50_1x_coco.yml) | [model](https://paddledet.bj.bcebos.com/models/detr_r50_1x_coco.pdparams) |
|
||||
|
||||
**Notes:**
|
||||
|
||||
- DETR is trained on COCO train2017 dataset and evaluated on val2017 results of `mAP(IoU=0.5:0.95)`.
|
||||
- DETR uses 8GPU to train 500 epochs.
|
||||
|
||||
GPU multi-card training
|
||||
```bash
|
||||
export CUDA_VISIBLE_DEVICES=0,1,2,3,4,5,6,7
|
||||
python -m paddle.distributed.launch --gpus 0,1,2,3,4,5,6,7 tools/train.py -c configs/detr/detr_r50_1x_coco.yml --fleet
|
||||
```
|
||||
|
||||
## Citations
|
||||
```
|
||||
@inproceedings{detr,
|
||||
author = {Nicolas Carion and
|
||||
Francisco Massa and
|
||||
Gabriel Synnaeve and
|
||||
Nicolas Usunier and
|
||||
Alexander Kirillov and
|
||||
Sergey Zagoruyko},
|
||||
title = {End-to-End Object Detection with Transformers},
|
||||
booktitle = {ECCV},
|
||||
year = {2020}
|
||||
}
|
||||
```
|
||||
@@ -0,0 +1,44 @@
|
||||
architecture: DETR
|
||||
pretrain_weights: https://paddledet.bj.bcebos.com/models/pretrained/ResNet50_vb_normal_pretrained.pdparams
|
||||
hidden_dim: 256
|
||||
|
||||
|
||||
DETR:
|
||||
backbone: ResNet
|
||||
transformer: DETRTransformer
|
||||
detr_head: DETRHead
|
||||
post_process: DETRPostProcess
|
||||
|
||||
|
||||
ResNet:
|
||||
# index 0 stands for res2
|
||||
depth: 50
|
||||
norm_type: bn
|
||||
freeze_at: 0
|
||||
return_idx: [3]
|
||||
lr_mult_list: [0.0, 0.1, 0.1, 0.1]
|
||||
num_stages: 4
|
||||
|
||||
|
||||
DETRTransformer:
|
||||
num_queries: 100
|
||||
position_embed_type: sine
|
||||
nhead: 8
|
||||
num_encoder_layers: 6
|
||||
num_decoder_layers: 6
|
||||
dim_feedforward: 2048
|
||||
dropout: 0.1
|
||||
activation: relu
|
||||
|
||||
|
||||
DETRHead:
|
||||
num_mlp_layers: 3
|
||||
|
||||
|
||||
DETRLoss:
|
||||
loss_coeff: {class: 1, bbox: 5, giou: 2, no_object: 0.1}
|
||||
aux_loss: True
|
||||
|
||||
|
||||
HungarianMatcher:
|
||||
matcher_coeff: {class: 1, bbox: 5, giou: 2}
|
||||
@@ -0,0 +1,44 @@
|
||||
worker_num: 0
|
||||
TrainReader:
|
||||
sample_transforms:
|
||||
- Decode: {}
|
||||
- RandomFlip: {prob: 0.5}
|
||||
- RandomSelect: { transforms1: [ RandomShortSideResize: { short_side_sizes: [ 480, 512, 544, 576, 608, 640, 672, 704, 736, 768, 800 ], max_size: 1333 } ],
|
||||
transforms2: [
|
||||
RandomShortSideResize: { short_side_sizes: [ 400, 500, 600 ] },
|
||||
RandomSizeCrop: { min_size: 384, max_size: 600 },
|
||||
RandomShortSideResize: { short_side_sizes: [ 480, 512, 544, 576, 608, 640, 672, 704, 736, 768, 800 ], max_size: 1333 } ]
|
||||
}
|
||||
- NormalizeImage: {is_scale: true, mean: [0.485,0.456,0.406], std: [0.229, 0.224,0.225]}
|
||||
- NormalizeBox: {}
|
||||
- BboxXYXY2XYWH: {}
|
||||
- Permute: {}
|
||||
batch_transforms:
|
||||
- PadMaskBatch: {pad_to_stride: -1, return_pad_mask: true}
|
||||
batch_size: 2
|
||||
shuffle: true
|
||||
drop_last: true
|
||||
collate_batch: false
|
||||
use_shared_memory: false
|
||||
|
||||
|
||||
EvalReader:
|
||||
sample_transforms:
|
||||
- Decode: {}
|
||||
- Resize: {target_size: [800, 1333], keep_ratio: True}
|
||||
- NormalizeImage: {is_scale: true, mean: [0.485,0.456,0.406], std: [0.229, 0.224,0.225]}
|
||||
- Permute: {}
|
||||
batch_size: 1
|
||||
shuffle: false
|
||||
drop_last: false
|
||||
|
||||
|
||||
TestReader:
|
||||
sample_transforms:
|
||||
- Decode: {}
|
||||
- Resize: {target_size: [800, 1333], keep_ratio: True}
|
||||
- NormalizeImage: {is_scale: true, mean: [0.485,0.456,0.406], std: [0.229, 0.224,0.225]}
|
||||
- Permute: {}
|
||||
batch_size: 1
|
||||
shuffle: false
|
||||
drop_last: false
|
||||
@@ -0,0 +1,16 @@
|
||||
epoch: 500
|
||||
|
||||
LearningRate:
|
||||
base_lr: 0.0001
|
||||
schedulers:
|
||||
- !PiecewiseDecay
|
||||
gamma: 0.1
|
||||
milestones: [400]
|
||||
use_warmup: false
|
||||
|
||||
OptimizerBuilder:
|
||||
clip_grad_by_norm: 0.1
|
||||
regularizer: false
|
||||
optimizer:
|
||||
type: AdamW
|
||||
weight_decay: 0.0001
|
||||
@@ -0,0 +1,9 @@
|
||||
_BASE_: [
|
||||
'../datasets/coco_detection.yml',
|
||||
'../runtime.yml',
|
||||
'_base_/optimizer_1x.yml',
|
||||
'_base_/detr_r50.yml',
|
||||
'_base_/detr_reader.yml',
|
||||
]
|
||||
weights: output/detr_r50_1x_coco/model_final
|
||||
find_unused_parameters: True
|
||||
Reference in New Issue
Block a user