更换文档检测模型
This commit is contained in:
1
paddle_detection/configs/mot/bytetrack/detector/README.md
Symbolic link
1
paddle_detection/configs/mot/bytetrack/detector/README.md
Symbolic link
@@ -0,0 +1 @@
|
||||
README_cn.md
|
||||
39
paddle_detection/configs/mot/bytetrack/detector/README_cn.md
Normal file
39
paddle_detection/configs/mot/bytetrack/detector/README_cn.md
Normal file
@@ -0,0 +1,39 @@
|
||||
简体中文 | [English](README.md)
|
||||
|
||||
# ByteTrack的检测器
|
||||
|
||||
## 简介
|
||||
[ByteTrack](https://arxiv.org/abs/2110.06864)(ByteTrack: Multi-Object Tracking by Associating Every Detection Box) 通过关联每个检测框来跟踪,而不仅是关联高分的检测框。此处提供了几个常用检测器的配置作为参考。由于训练数据集、输入尺度、训练epoch数、NMS阈值设置等的不同均会导致模型精度和性能的差异,请自行根据需求进行适配。
|
||||
|
||||
## 模型库
|
||||
|
||||
### 在MOT17-half val数据集上的检测结果
|
||||
| 骨架网络 | 网络类型 | 输入尺度 | 学习率策略 |推理时间(fps) | Box AP | 下载 | 配置文件 |
|
||||
| :-------------- | :------------- | :--------: | :---------: | :-----------: | :-----: | :------: | :-----: |
|
||||
| DarkNet-53 | YOLOv3 | 608X608 | 40e | ---- | 42.7 | [下载链接](https://paddledet.bj.bcebos.com/models/mot/deepsort/yolov3_darknet53_40e_608x608_mot17half.pdparams) | [配置文件](./yolov3_darknet53_40e_608x608_mot17half.yml) |
|
||||
| CSPResNet | PPYOLOe | 640x640 | 36e | ---- | 52.9 | [下载链接](https://paddledet.bj.bcebos.com/models/mot/deepsort/ppyoloe_crn_l_36e_640x640_mot17half.pdparams) | [配置文件](./ppyoloe_crn_l_36e_640x640_mot17half.yml) |
|
||||
| CSPDarkNet | YOLOX-x(mix_mot_ch) | 800x1440 | 24e | ---- | 61.9 | [下载链接](https://paddledet.bj.bcebos.com/models/mot/deepsort/yolox_x_24e_800x1440_mix_mot_ch.pdparams) | [配置文件](./yolox_x_24e_800x1440_mix_mot_ch.yml) |
|
||||
| CSPDarkNet | YOLOX-x(mix_det) | 800x1440 | 24e | ---- | 65.4 | [下载链接](https://paddledet.bj.bcebos.com/models/mot/deepsort/yolox_x_24e_800x1440_mix_det.pdparams) | [配置文件](./yolox_x_24e_800x1440_mix_det.yml) |
|
||||
|
||||
**注意:**
|
||||
- 以上模型除YOLOX外采用**MOT17-half train**数据集训练,数据集可以从[此链接](https://bj.bcebos.com/v1/paddledet/data/mot/MOT17.zip)下载。
|
||||
- **MOT17-half train**是MOT17的train序列(共7个)每个视频的前一半帧的图片和标注组成的数据集,而为了验证精度可以都用**MOT17-half val**数据集去评估,它是每个视频的后一半帧组成的,数据集可以从[此链接](https://paddledet.bj.bcebos.com/data/mot/mot17half/annotations.zip)下载,并解压放在`dataset/mot/MOT17/images/`文件夹下。
|
||||
- YOLOX-x(mix_mot_ch)采用**mix_mot_ch**数据集,是MOT17、CrowdHuman组成的联合数据集;YOLOX-x(mix_det)采用**mix_det**数据集,是MOT17、CrowdHuman、Cityscapes、ETHZ组成的联合数据集,数据集整理的格式和目录可以参考[此链接](https://github.com/ifzhang/ByteTrack#data-preparation),最终放置于`dataset/mot/`目录下。为了验证精度可以都用**MOT17-half val**数据集去评估。
|
||||
- 行人跟踪请使用行人检测器结合行人ReID模型。车辆跟踪请使用车辆检测器结合车辆ReID模型。
|
||||
- 用于ByteTrack跟踪时,这些模型的NMS阈值等后处理设置会与纯检测任务的设置不同。
|
||||
|
||||
|
||||
## 快速开始
|
||||
|
||||
通过如下命令一键式启动评估、评估和导出
|
||||
```bash
|
||||
job_name=ppyoloe_crn_l_36e_640x640_mot17half
|
||||
config=configs/mot/bytetrack/detector/${job_name}.yml
|
||||
log_dir=log_dir/${job_name}
|
||||
# 1. training
|
||||
python -m paddle.distributed.launch --log_dir=${log_dir} --gpus 0,1,2,3,4,5,6,7 tools/train.py -c ${config} --eval --amp
|
||||
# 2. evaluation
|
||||
CUDA_VISIBLE_DEVICES=0 python tools/eval.py -c ${config} -o weights=output/${job_name}/model_final.pdparams
|
||||
# 3. export
|
||||
CUDA_VISIBLE_DEVICES=0 python tools/export_model.py -c ${config} -o weights=output/${job_name}/model_final.pdparams
|
||||
```
|
||||
@@ -0,0 +1,83 @@
|
||||
# This config is an assembled config for ByteTrack MOT, used as eval/infer mode for MOT.
|
||||
_BASE_: [
|
||||
'../../../ppyoloe/ppyoloe_crn_l_300e_coco.yml',
|
||||
'../_base_/mot17.yml',
|
||||
]
|
||||
weights: output/ppyoloe_crn_l_36e_640x640_mot17half/model_final
|
||||
log_iter: 20
|
||||
snapshot_epoch: 2
|
||||
|
||||
|
||||
# schedule configuration for fine-tuning
|
||||
epoch: 36
|
||||
LearningRate:
|
||||
base_lr: 0.001
|
||||
schedulers:
|
||||
- !CosineDecay
|
||||
max_epochs: 43
|
||||
- !LinearWarmup
|
||||
start_factor: 0.001
|
||||
epochs: 1
|
||||
|
||||
OptimizerBuilder:
|
||||
optimizer:
|
||||
momentum: 0.9
|
||||
type: Momentum
|
||||
regularizer:
|
||||
factor: 0.0005
|
||||
type: L2
|
||||
|
||||
|
||||
TrainReader:
|
||||
batch_size: 8
|
||||
|
||||
|
||||
# detector configuration
|
||||
architecture: YOLOv3
|
||||
norm_type: sync_bn
|
||||
use_ema: true
|
||||
ema_decay: 0.9998
|
||||
pretrain_weights: https://bj.bcebos.com/v1/paddledet/models/ppyoloe_crn_l_300e_coco.pdparams
|
||||
depth_mult: 1.0
|
||||
width_mult: 1.0
|
||||
|
||||
YOLOv3:
|
||||
backbone: CSPResNet
|
||||
neck: CustomCSPPAN
|
||||
yolo_head: PPYOLOEHead
|
||||
post_process: ~
|
||||
|
||||
CSPResNet:
|
||||
layers: [3, 6, 6, 3]
|
||||
channels: [64, 128, 256, 512, 1024]
|
||||
return_idx: [1, 2, 3]
|
||||
use_large_stem: True
|
||||
|
||||
CustomCSPPAN:
|
||||
out_channels: [768, 384, 192]
|
||||
stage_num: 1
|
||||
block_num: 3
|
||||
act: 'swish'
|
||||
spp: true
|
||||
|
||||
PPYOLOEHead:
|
||||
fpn_strides: [32, 16, 8]
|
||||
grid_cell_scale: 5.0
|
||||
grid_cell_offset: 0.5
|
||||
static_assigner_epoch: -1 # 100
|
||||
use_varifocal_loss: True
|
||||
loss_weight: {class: 1.0, iou: 2.5, dfl: 0.5}
|
||||
static_assigner:
|
||||
name: ATSSAssigner
|
||||
topk: 9
|
||||
assigner:
|
||||
name: TaskAlignedAssigner
|
||||
topk: 13
|
||||
alpha: 1.0
|
||||
beta: 6.0
|
||||
nms:
|
||||
name: MultiClassNMS
|
||||
nms_top_k: 1000
|
||||
keep_top_k: 100
|
||||
score_threshold: 0.01
|
||||
nms_threshold: 0.6
|
||||
@@ -0,0 +1,77 @@
|
||||
# This config is an assembled config for ByteTrack MOT, used as eval/infer mode for MOT.
|
||||
_BASE_: [
|
||||
'../../../yolov3/yolov3_darknet53_270e_coco.yml',
|
||||
'../_base_/mot17.yml',
|
||||
]
|
||||
weights: output/yolov3_darknet53_40e_608x608_mot17half/model_final
|
||||
log_iter: 20
|
||||
snapshot_epoch: 2
|
||||
|
||||
# schedule configuration for fine-tuning
|
||||
epoch: 40
|
||||
LearningRate:
|
||||
base_lr: 0.0001
|
||||
schedulers:
|
||||
- !PiecewiseDecay
|
||||
gamma: 0.1
|
||||
milestones:
|
||||
- 32
|
||||
- 36
|
||||
- !LinearWarmup
|
||||
start_factor: 0.3333333333333333
|
||||
steps: 100
|
||||
|
||||
OptimizerBuilder:
|
||||
optimizer:
|
||||
momentum: 0.9
|
||||
type: Momentum
|
||||
regularizer:
|
||||
factor: 0.0005
|
||||
type: L2
|
||||
|
||||
TrainReader:
|
||||
batch_size: 8
|
||||
mixup_epoch: 35
|
||||
|
||||
# detector configuration
|
||||
architecture: YOLOv3
|
||||
pretrain_weights: https://bj.bcebos.com/v1/paddledet/models/yolov3_darknet53_270e_coco.pdparams
|
||||
norm_type: sync_bn
|
||||
|
||||
YOLOv3:
|
||||
backbone: DarkNet
|
||||
neck: YOLOv3FPN
|
||||
yolo_head: YOLOv3Head
|
||||
post_process: BBoxPostProcess
|
||||
|
||||
DarkNet:
|
||||
depth: 53
|
||||
return_idx: [2, 3, 4]
|
||||
|
||||
# use default config
|
||||
# YOLOv3FPN:
|
||||
|
||||
YOLOv3Head:
|
||||
anchors: [[10, 13], [16, 30], [33, 23],
|
||||
[30, 61], [62, 45], [59, 119],
|
||||
[116, 90], [156, 198], [373, 326]]
|
||||
anchor_masks: [[6, 7, 8], [3, 4, 5], [0, 1, 2]]
|
||||
loss: YOLOv3Loss
|
||||
|
||||
YOLOv3Loss:
|
||||
ignore_thresh: 0.7
|
||||
downsample: [32, 16, 8]
|
||||
label_smooth: false
|
||||
|
||||
BBoxPostProcess:
|
||||
decode:
|
||||
name: YOLOBox
|
||||
conf_thresh: 0.005
|
||||
downsample_ratio: 32
|
||||
clip_bbox: true
|
||||
nms:
|
||||
name: MultiClassNMS
|
||||
keep_top_k: 100
|
||||
score_threshold: 0.01
|
||||
nms_threshold: 0.45
|
||||
nms_top_k: 1000
|
||||
@@ -0,0 +1,80 @@
|
||||
# This config is an assembled config for ByteTrack MOT, used as eval/infer mode for MOT.
|
||||
_BASE_: [
|
||||
'../../../yolox/yolox_x_300e_coco.yml',
|
||||
'../_base_/ht21.yml',
|
||||
]
|
||||
weights: output/yolox_x_24e_800x1440_ht21/model_final
|
||||
log_iter: 20
|
||||
snapshot_epoch: 2
|
||||
|
||||
# schedule configuration for fine-tuning
|
||||
epoch: 24
|
||||
LearningRate:
|
||||
base_lr: 0.0005 # fintune
|
||||
schedulers:
|
||||
- !CosineDecay
|
||||
max_epochs: 24
|
||||
min_lr_ratio: 0.05
|
||||
last_plateau_epochs: 4
|
||||
- !ExpWarmup
|
||||
epochs: 1
|
||||
|
||||
OptimizerBuilder:
|
||||
optimizer:
|
||||
type: Momentum
|
||||
momentum: 0.9
|
||||
use_nesterov: True
|
||||
regularizer:
|
||||
factor: 0.0005
|
||||
type: L2
|
||||
|
||||
|
||||
TrainReader:
|
||||
batch_size: 4
|
||||
mosaic_epoch: 20
|
||||
|
||||
# detector configuration
|
||||
architecture: YOLOX
|
||||
pretrain_weights: https://bj.bcebos.com/v1/paddledet/models/yolox_x_300e_coco.pdparams
|
||||
norm_type: sync_bn
|
||||
use_ema: True
|
||||
ema_decay: 0.9999
|
||||
ema_decay_type: "exponential"
|
||||
act: silu
|
||||
find_unused_parameters: True
|
||||
depth_mult: 1.33
|
||||
width_mult: 1.25
|
||||
|
||||
YOLOX:
|
||||
backbone: CSPDarkNet
|
||||
neck: YOLOCSPPAN
|
||||
head: YOLOXHead
|
||||
input_size: [800, 1440]
|
||||
size_stride: 32
|
||||
size_range: [18, 32] # multi-scale range [576*1024 ~ 800*1440], w/h ratio=1.8
|
||||
|
||||
CSPDarkNet:
|
||||
arch: "X"
|
||||
return_idx: [2, 3, 4]
|
||||
depthwise: False
|
||||
|
||||
YOLOCSPPAN:
|
||||
depthwise: False
|
||||
|
||||
# Tracking requires higher quality boxes, so NMS score_threshold will be higher
|
||||
YOLOXHead:
|
||||
l1_epoch: 20
|
||||
depthwise: False
|
||||
loss_weight: {cls: 1.0, obj: 1.0, iou: 5.0, l1: 1.0}
|
||||
assigner:
|
||||
name: SimOTAAssigner
|
||||
candidate_topk: 10
|
||||
use_vfl: False
|
||||
nms:
|
||||
name: MultiClassNMS
|
||||
nms_top_k: 1000
|
||||
keep_top_k: 100
|
||||
score_threshold: 0.01
|
||||
nms_threshold: 0.7
|
||||
# For speed while keep high mAP, you can modify 'nms_top_k' to 1000 and 'keep_top_k' to 100, the mAP will drop about 0.1%.
|
||||
# For high speed demo, you can modify 'score_threshold' to 0.25 and 'nms_threshold' to 0.45, but the mAP will drop a lot.
|
||||
@@ -0,0 +1,80 @@
|
||||
# This config is an assembled config for ByteTrack MOT, used as eval/infer mode for MOT.
|
||||
_BASE_: [
|
||||
'../../../yolox/yolox_x_300e_coco.yml',
|
||||
'../_base_/mix_det.yml',
|
||||
]
|
||||
weights: output/yolox_x_24e_800x1440_mix_det/model_final
|
||||
log_iter: 20
|
||||
snapshot_epoch: 2
|
||||
|
||||
# schedule configuration for fine-tuning
|
||||
epoch: 24
|
||||
LearningRate:
|
||||
base_lr: 0.00075 # fintune
|
||||
schedulers:
|
||||
- !CosineDecay
|
||||
max_epochs: 24
|
||||
min_lr_ratio: 0.05
|
||||
last_plateau_epochs: 4
|
||||
- !ExpWarmup
|
||||
epochs: 1
|
||||
|
||||
OptimizerBuilder:
|
||||
optimizer:
|
||||
type: Momentum
|
||||
momentum: 0.9
|
||||
use_nesterov: True
|
||||
regularizer:
|
||||
factor: 0.0005
|
||||
type: L2
|
||||
|
||||
|
||||
TrainReader:
|
||||
batch_size: 6
|
||||
mosaic_epoch: 20
|
||||
|
||||
# detector configuration
|
||||
architecture: YOLOX
|
||||
pretrain_weights: https://bj.bcebos.com/v1/paddledet/models/yolox_x_300e_coco.pdparams
|
||||
norm_type: sync_bn
|
||||
use_ema: True
|
||||
ema_decay: 0.9999
|
||||
ema_decay_type: "exponential"
|
||||
act: silu
|
||||
find_unused_parameters: True
|
||||
depth_mult: 1.33
|
||||
width_mult: 1.25
|
||||
|
||||
YOLOX:
|
||||
backbone: CSPDarkNet
|
||||
neck: YOLOCSPPAN
|
||||
head: YOLOXHead
|
||||
input_size: [800, 1440]
|
||||
size_stride: 32
|
||||
size_range: [18, 30] # multi-scale range [576*1024 ~ 800*1440], w/h ratio=1.8
|
||||
|
||||
CSPDarkNet:
|
||||
arch: "X"
|
||||
return_idx: [2, 3, 4]
|
||||
depthwise: False
|
||||
|
||||
YOLOCSPPAN:
|
||||
depthwise: False
|
||||
|
||||
# Tracking requires higher quality boxes, so NMS score_threshold will be higher
|
||||
YOLOXHead:
|
||||
l1_epoch: 20
|
||||
depthwise: False
|
||||
loss_weight: {cls: 1.0, obj: 1.0, iou: 5.0, l1: 1.0}
|
||||
assigner:
|
||||
name: SimOTAAssigner
|
||||
candidate_topk: 10
|
||||
use_vfl: False
|
||||
nms:
|
||||
name: MultiClassNMS
|
||||
nms_top_k: 1000
|
||||
keep_top_k: 100
|
||||
score_threshold: 0.01
|
||||
nms_threshold: 0.7
|
||||
# For speed while keep high mAP, you can modify 'nms_top_k' to 1000 and 'keep_top_k' to 100, the mAP will drop about 0.1%.
|
||||
# For high speed demo, you can modify 'score_threshold' to 0.25 and 'nms_threshold' to 0.45, but the mAP will drop a lot.
|
||||
@@ -0,0 +1,80 @@
|
||||
# This config is an assembled config for ByteTrack MOT, used as eval/infer mode for MOT.
|
||||
_BASE_: [
|
||||
'../../../yolox/yolox_x_300e_coco.yml',
|
||||
'../_base_/mix_mot_ch.yml',
|
||||
]
|
||||
weights: output/yolox_x_24e_800x1440_mix_mot_ch/model_final
|
||||
log_iter: 20
|
||||
snapshot_epoch: 2
|
||||
|
||||
# schedule configuration for fine-tuning
|
||||
epoch: 24
|
||||
LearningRate:
|
||||
base_lr: 0.00075 # fine-tune
|
||||
schedulers:
|
||||
- !CosineDecay
|
||||
max_epochs: 24
|
||||
min_lr_ratio: 0.05
|
||||
last_plateau_epochs: 4
|
||||
- !ExpWarmup
|
||||
epochs: 1
|
||||
|
||||
OptimizerBuilder:
|
||||
optimizer:
|
||||
type: Momentum
|
||||
momentum: 0.9
|
||||
use_nesterov: True
|
||||
regularizer:
|
||||
factor: 0.0005
|
||||
type: L2
|
||||
|
||||
|
||||
TrainReader:
|
||||
batch_size: 6
|
||||
mosaic_epoch: 20
|
||||
|
||||
# detector configuration
|
||||
architecture: YOLOX
|
||||
pretrain_weights: https://bj.bcebos.com/v1/paddledet/models/yolox_x_300e_coco.pdparams
|
||||
norm_type: sync_bn
|
||||
use_ema: True
|
||||
ema_decay: 0.9999
|
||||
ema_decay_type: "exponential"
|
||||
act: silu
|
||||
find_unused_parameters: True
|
||||
depth_mult: 1.33
|
||||
width_mult: 1.25
|
||||
|
||||
YOLOX:
|
||||
backbone: CSPDarkNet
|
||||
neck: YOLOCSPPAN
|
||||
head: YOLOXHead
|
||||
input_size: [800, 1440]
|
||||
size_stride: 32
|
||||
size_range: [18, 30] # multi-scale range [576*1024 ~ 800*1440], w/h ratio=1.8
|
||||
|
||||
CSPDarkNet:
|
||||
arch: "X"
|
||||
return_idx: [2, 3, 4]
|
||||
depthwise: False
|
||||
|
||||
YOLOCSPPAN:
|
||||
depthwise: False
|
||||
|
||||
# Tracking requires higher quality boxes, so NMS score_threshold will be higher
|
||||
YOLOXHead:
|
||||
l1_epoch: 20
|
||||
depthwise: False
|
||||
loss_weight: {cls: 1.0, obj: 1.0, iou: 5.0, l1: 1.0}
|
||||
assigner:
|
||||
name: SimOTAAssigner
|
||||
candidate_topk: 10
|
||||
use_vfl: False
|
||||
nms:
|
||||
name: MultiClassNMS
|
||||
nms_top_k: 1000
|
||||
keep_top_k: 100
|
||||
score_threshold: 0.01
|
||||
nms_threshold: 0.7
|
||||
# For speed while keep high mAP, you can modify 'nms_top_k' to 1000 and 'keep_top_k' to 100, the mAP will drop about 0.1%.
|
||||
# For high speed demo, you can modify 'score_threshold' to 0.25 and 'nms_threshold' to 0.45, but the mAP will drop a lot.
|
||||
Reference in New Issue
Block a user