diff --git a/configs/mot/deepsort/README.md b/configs/mot/deepsort/README.md
index 05b63f0f05e71faabbd6b9f9e4758fbf8c957f50..919973f54d6e0379691bed95b09560bc6563576c 100644
--- a/configs/mot/deepsort/README.md
+++ b/configs/mot/deepsort/README.md
@@ -37,17 +37,17 @@ det_results_dir
```bash
# use weights released in PaddleDetection model zoo
-CUDA_VISIBLE_DEVICES=0 python tools/eval_mot.py -c configs/mot/jde/jde_darknet53_30e_1088x608_track.yml -o metric=MOT weights=https://paddledet.bj.bcebos.com/models/mot/jde_darknet53_30e_1088x608.pdparams --output ./det_results_dir
+CUDA_VISIBLE_DEVICES=0 python tools/eval_mot.py -c configs/mot/jde/jde_darknet53_30e_1088x608_track.yml -o metric=MOT weights=https://paddledet.bj.bcebos.com/models/mot/jde_darknet53_30e_1088x608.pdparams
# use saved checkpoint after training
-CUDA_VISIBLE_DEVICES=0 python tools/eval_mot.py -c configs/mot/jde/jde_darknet53_30e_1088x608_track.yml -o metric=MOT weights=output/jde_darknet53_30e_1088x608/model_final --output ./det_results_dir
+CUDA_VISIBLE_DEVICES=0 python tools/eval_mot.py -c configs/mot/jde/jde_darknet53_30e_1088x608_track.yml -o metric=MOT weights=output/jde_darknet53_30e_1088x608/model_final
```
### 2. Tracking
```bash
# track the objects by loading detected result files
-CUDA_VISIBLE_DEVICES=0 python tools/eval_mot.py -c configs/mot/deepsort/deepsort_pcb_pyramid_r101.yml --det_results_dir ./det_results_dir/mot_results
+CUDA_VISIBLE_DEVICES=0 python tools/eval_mot.py -c configs/mot/deepsort/deepsort_pcb_pyramid_r101.yml --det_results_dir {your detection results}
```
## Citations
diff --git a/configs/mot/deepsort/README_cn.md b/configs/mot/deepsort/README_cn.md
index 0958f9c8e0c3d12047edb7f16402dc5b889b85b4..ac09f0ccb7b2da5479a97d38f4491432a9271bd2 100644
--- a/configs/mot/deepsort/README_cn.md
+++ b/configs/mot/deepsort/README_cn.md
@@ -37,17 +37,17 @@ det_results_dir
```bash
# 使用PaddleDetection发布的权重
-CUDA_VISIBLE_DEVICES=0 python tools/eval_mot.py -c configs/mot/jde/jde_darknet53_30e_1088x608_track.yml -o metric=MOT weights=https://paddledet.bj.bcebos.com/models/mot/jde_darknet53_30e_1088x608.pdparams --output ./det_results_dir
+CUDA_VISIBLE_DEVICES=0 python tools/eval_mot.py -c configs/mot/jde/jde_darknet53_30e_1088x608_track.yml -o metric=MOT weights=https://paddledet.bj.bcebos.com/models/mot/jde_darknet53_30e_1088x608.pdparams
# 使用训练保存的checkpoint
-CUDA_VISIBLE_DEVICES=0 python tools/eval_mot.py -c configs/mot/jde/jde_darknet53_30e_1088x608_track.yml -o metric=MOT weights=output/jde_darknet53_30e_1088x608/model_final --output ./det_results_dir
+CUDA_VISIBLE_DEVICES=0 python tools/eval_mot.py -c configs/mot/jde/jde_darknet53_30e_1088x608_track.yml -o metric=MOT weights=output/jde_darknet53_30e_1088x608/model_final
```
### 2. 跟踪预测
```bash
# 加载检测结果文件得到跟踪结果
-CUDA_VISIBLE_DEVICES=0 python tools/eval_mot.py -c configs/mot/deepsort/deepsort_pcb_pyramid_r101.yml --det_results_dir ./det_results_dir/mot_results
+CUDA_VISIBLE_DEVICES=0 python tools/eval_mot.py -c configs/mot/deepsort/deepsort_pcb_pyramid_r101.yml --det_results_dir {your detection results}
```
## 引用
diff --git a/configs/mot/jde/README.md b/configs/mot/jde/README.md
index ff5fd511a844371081bc9fa93de50734dd8eef55..1ad3c9060254eb606ee438c34eb95814d4c6a0b0 100644
--- a/configs/mot/jde/README.md
+++ b/configs/mot/jde/README.md
@@ -11,7 +11,7 @@ English | [简体中文](README_cn.md)
[Joint Detection and Embedding](https://arxiv.org/abs/1909.12605)(JDE) is a fast and high-performance multiple-object tracker that learns the object detection task and appearance embedding task simutaneously in a shared neural network.
-

+
## Model Zoo
@@ -21,6 +21,9 @@ English | [简体中文](README_cn.md)
| backbone | input shape | MOTA | IDF1 | IDS | FP | FN | FPS | download | config |
| :----------------- | :------- | :----: | :----: | :---: | :----: | :---: | :---: | :---: | :---: |
| DarkNet53 | 1088x608 | 73.2 | 69.4 | 1320 | 6613 | 21629 | - |[model](https://paddledet.bj.bcebos.com/models/mot/jde_darknet53_30e_1088x608.pdparams) | [config](https://github.com/PaddlePaddle/PaddleDetection/tree/develop/configs/mot/jde/jde_darknet53_30e_1088x608.yml) |
+| DarkNet53 | 864x480 | 70.1 | 65.4 | 1341 | 6454 | 25208 | - |[model](https://paddledet.bj.bcebos.com/models/mot/jde_darknet53_30e_864x480.pdparams) | [config](https://github.com/PaddlePaddle/PaddleDetection/tree/develop/configs/mot/jde/jde_darknet53_30e_864x480.yml) |
+| DarkNet53 | 576x320 | 63.1 | 64.6 | 1357 | 7083 | 32312 | - |[model](https://paddledet.bj.bcebos.com/models/mot/jde_darknet53_30e_576x320.pdparams) | [config](https://github.com/PaddlePaddle/PaddleDetection/tree/develop/configs/mot/jde/jde_darknet53_30e_576x320.yml) |
+
**Notes:**
JDE used 8 GPUs for training and mini-batch size as 4 on each GPU, and trained for 30 epoches.
diff --git a/configs/mot/jde/README_cn.md b/configs/mot/jde/README_cn.md
index b6b4bd754b99709936786b451ebb476927f6eb29..20c0a4bde30c21bc6bc79cb3bf8fc83ab89913dd 100644
--- a/configs/mot/jde/README_cn.md
+++ b/configs/mot/jde/README_cn.md
@@ -12,16 +12,18 @@
[Joint Detection and Embedding](https://arxiv.org/abs/1909.12605)(JDE) 是一个快速高性能多目标跟踪器,它是在共享神经网络中同时学习目标检测任务和外观嵌入任务的。
-

+
## 模型库与基线
### JDE on MOT-16 training set
-| 骨干网络 | 输入尺寸 | MOTA | IDF1 | IDS | FP | FN | FPS | 检测模型 | ReID模型 | 配置文件 |
+| 骨干网络 | 输入尺寸 | MOTA | IDF1 | IDS | FP | FN | FPS | 检测模型 | 配置文件 |
| :----------------- | :------- | :----: | :----: | :---: | :----: | :---: | :---: | :---: | :---: |
| DarkNet53 | 1088x608 | 73.2 | 69.4 | 1320 | 6613 | 21629 | - |[下载链接](https://paddledet.bj.bcebos.com/models/mot/jde_darknet53_30e_1088x608.pdparams) | [配置文件](https://github.com/PaddlePaddle/PaddleDetection/tree/develop/configs/mot/jde/jde_darknet53_30e_1088x608.yml) |
+| DarkNet53 | 864x480 | 70.1 | 65.4 | 1341 | 6454 | 25208 | - |[下载链接](https://paddledet.bj.bcebos.com/models/mot/jde_darknet53_30e_864x480.pdparams) | [配置文件](https://github.com/PaddlePaddle/PaddleDetection/tree/develop/configs/mot/jde/jde_darknet53_30e_864x480.yml) |
+| DarkNet53 | 576x320 | 63.1 | 64.6 | 1357 | 7083 | 32312 | - |[下载链接](https://paddledet.bj.bcebos.com/models/mot/jde_darknet53_30e_576x320.pdparams) | [配置文件](https://github.com/PaddlePaddle/PaddleDetection/tree/develop/configs/mot/jde/jde_darknet53_30e_576x320.yml) |
**Notes:**
JDE使用8个GPU进行训练,每个GPU上batch size为4,训练了30个epoches。
diff --git a/configs/mot/jde/_base_/jde_reader_576x320.yml b/configs/mot/jde/_base_/jde_reader_576x320.yml
new file mode 100644
index 0000000000000000000000000000000000000000..d4d7be98c61916e19e221d99f747836a7f881a58
--- /dev/null
+++ b/configs/mot/jde/_base_/jde_reader_576x320.yml
@@ -0,0 +1,79 @@
+worker_num: 2
+TrainReader:
+ sample_transforms:
+ - Decode: {}
+ - AugmentHSV: {}
+ - LetterBoxResize: {target_size: [320, 576]}
+ - MOTRandomAffine: {}
+ - RandomFlip: {}
+ - BboxXYXY2XYWH: {}
+ - NormalizeBox: {}
+ - NormalizeImage: {mean: [0, 0, 0], std: [1, 1, 1], is_scale: True}
+ - Permute: {}
+ batch_transforms:
+ - Gt2JDETargetThres:
+ anchor_masks: [[0, 1, 2, 3], [4, 5, 6, 7], [8, 9, 10, 11]]
+ anchors: [[[85,255], [120,320], [170,320], [340,320]],
+ [[21,64], [30,90], [43,128], [60,180]],
+ [[6,16], [8,23], [11,32], [16,45]]]
+ downsample_ratios: [32, 16, 8]
+ ide_thresh: 0.5
+ fg_thresh: 0.5
+ bg_thresh: 0.4
+ batch_size: 4
+ shuffle: true
+ drop_last: true
+ use_shared_memory: true
+
+
+EvalReader:
+ sample_transforms:
+ - Decode: {}
+ - LetterBoxResize: {target_size: [320, 576]}
+ - BboxXYXY2XYWH: {}
+ - NormalizeBox: {}
+ - NormalizeImage: {mean: [0, 0, 0], std: [1, 1, 1], is_scale: True}
+ - Permute: {}
+ batch_transforms:
+ - Gt2JDETargetMax:
+ anchor_masks: [[0, 1, 2, 3], [4, 5, 6, 7], [8, 9, 10, 11]]
+ anchors: [[[85,255], [120,320], [170,320], [340,320]],
+ [[21,64], [30,90], [43,128], [60,180]],
+ [[6,16], [8,23], [11,32], [16,45]]]
+ downsample_ratios: [32, 16, 8]
+ max_iou_thresh: 0.60
+ - BboxCXCYWH2XYXY: {}
+ - Norm2PixelBbox: {}
+ batch_size: 1
+ drop_empty: false
+
+
+TestReader:
+ inputs_def:
+ image_shape: [3, 320, 576]
+ sample_transforms:
+ - Decode: {}
+ - LetterBoxResize: {target_size: [320, 576]}
+ - NormalizeImage: {mean: [0, 0, 0], std: [1, 1, 1], is_scale: True}
+ - Permute: {}
+ batch_size: 1
+
+
+EvalMOTReader:
+ sample_transforms:
+ - Decode: {}
+ - LetterBoxResize: {target_size: [320, 576]}
+ - NormalizeImage: {mean: [0, 0, 0], std: [1, 1, 1], is_scale: True}
+ - Permute: {}
+ batch_size: 1
+
+
+TestMOTReader:
+ inputs_def:
+ image_shape: [3, 320, 576]
+ sample_transforms:
+ - Decode: {}
+ - LetterBoxResize: {target_size: [320, 576]}
+ - NormalizeImage: {mean: [0, 0, 0], std: [1, 1, 1], is_scale: True}
+ - Permute: {}
+ batch_size: 1
diff --git a/configs/mot/jde/_base_/jde_reader_864x480.yml b/configs/mot/jde/_base_/jde_reader_864x480.yml
new file mode 100644
index 0000000000000000000000000000000000000000..6690f5491eb3b726a050121eb74d47315a150176
--- /dev/null
+++ b/configs/mot/jde/_base_/jde_reader_864x480.yml
@@ -0,0 +1,79 @@
+worker_num: 2
+TrainReader:
+ sample_transforms:
+ - Decode: {}
+ - AugmentHSV: {}
+ - LetterBoxResize: {target_size: [480, 864]}
+ - MOTRandomAffine: {}
+ - RandomFlip: {}
+ - BboxXYXY2XYWH: {}
+ - NormalizeBox: {}
+ - NormalizeImage: {mean: [0, 0, 0], std: [1, 1, 1], is_scale: True}
+ - Permute: {}
+ batch_transforms:
+ - Gt2JDETargetThres:
+ anchor_masks: [[0, 1, 2, 3], [4, 5, 6, 7], [8, 9, 10, 11]]
+ anchors: [[[102,305], [143, 429], [203,508], [407,508]],
+ [[25,76], [36,107], [51,152], [71,215]],
+ [[6,19], [9,27], [13,38], [18,54]]]
+ downsample_ratios: [32, 16, 8]
+ ide_thresh: 0.5
+ fg_thresh: 0.5
+ bg_thresh: 0.4
+ batch_size: 4
+ shuffle: true
+ drop_last: true
+ use_shared_memory: true
+
+
+EvalReader:
+ sample_transforms:
+ - Decode: {}
+ - LetterBoxResize: {target_size: [480, 864]}
+ - BboxXYXY2XYWH: {}
+ - NormalizeBox: {}
+ - NormalizeImage: {mean: [0, 0, 0], std: [1, 1, 1], is_scale: True}
+ - Permute: {}
+ batch_transforms:
+ - Gt2JDETargetMax:
+ anchor_masks: [[0, 1, 2, 3], [4, 5, 6, 7], [8, 9, 10, 11]]
+ anchors: [[[102,305], [143, 429], [203,508], [407,508]],
+ [[25,76], [36,107], [51,152], [71,215]],
+ [[6,19], [9,27], [13,38], [18,54]]]
+ downsample_ratios: [32, 16, 8]
+ max_iou_thresh: 0.60
+ - BboxCXCYWH2XYXY: {}
+ - Norm2PixelBbox: {}
+ batch_size: 1
+ drop_empty: false
+
+
+TestReader:
+ inputs_def:
+ image_shape: [3, 480, 864]
+ sample_transforms:
+ - Decode: {}
+ - LetterBoxResize: {target_size: [480, 864]}
+ - NormalizeImage: {mean: [0, 0, 0], std: [1, 1, 1], is_scale: True}
+ - Permute: {}
+ batch_size: 1
+
+
+EvalMOTReader:
+ sample_transforms:
+ - Decode: {}
+ - LetterBoxResize: {target_size: [480, 864]}
+ - NormalizeImage: {mean: [0, 0, 0], std: [1, 1, 1], is_scale: True}
+ - Permute: {}
+ batch_size: 1
+
+
+TestMOTReader:
+ inputs_def:
+ image_shape: [3, 480, 864]
+ sample_transforms:
+ - Decode: {}
+ - LetterBoxResize: {target_size: [480, 864]}
+ - NormalizeImage: {mean: [0, 0, 0], std: [1, 1, 1], is_scale: True}
+ - Permute: {}
+ batch_size: 1
diff --git a/configs/mot/jde/jde_darknet53_30e_576x320.yml b/configs/mot/jde/jde_darknet53_30e_576x320.yml
new file mode 100644
index 0000000000000000000000000000000000000000..23ba22efb39d6b26580edaa28abe95ae4208540b
--- /dev/null
+++ b/configs/mot/jde/jde_darknet53_30e_576x320.yml
@@ -0,0 +1,47 @@
+_BASE_: [
+ '../../datasets/mot.yml',
+ '../../runtime.yml',
+ '_base_/optimizer_30e.yml',
+ '_base_/jde_darknet53.yml',
+ '_base_/jde_reader_576x320.yml',
+]
+weights: output/jde_darknet53_30e_576x320/model_final
+
+JDE:
+ detector: YOLOv3
+ reid: JDEEmbeddingHead
+ tracker: JDETracker
+
+YOLOv3:
+ backbone: DarkNet
+ neck: YOLOv3FPN
+ yolo_head: YOLOv3Head
+ post_process: JDEBBoxPostProcess
+ for_mot: True
+
+YOLOv3Head:
+ anchors: [[85,255], [120,320], [170,320], [340,320],
+ [21,64], [30,90], [43,128], [60,180],
+ [6,16], [8,23], [11,32], [16,45]]
+ anchor_masks: [[0, 1, 2, 3], [4, 5, 6, 7], [8, 9, 10, 11]]
+ loss: JDEDetectionLoss
+
+JDETracker:
+ det_thresh: 0.3
+ track_buffer: 30
+ min_box_area: 200
+ motion: KalmanFilter
+
+JDEBBoxPostProcess:
+ decode:
+ name: JDEBox
+ conf_thresh: 0.5
+ downsample_ratio: 32
+ nms:
+ name: MultiClassNMS
+ keep_top_k: 500
+ score_threshold: 0.01
+ nms_threshold: 0.4
+ nms_top_k: 2000
+ normalized: true
+ return_index: true
diff --git a/configs/mot/jde/jde_darknet53_30e_864x480.yml b/configs/mot/jde/jde_darknet53_30e_864x480.yml
new file mode 100644
index 0000000000000000000000000000000000000000..96ed2232c3b9d2a5ab2b702792fb61f8dcdffc9a
--- /dev/null
+++ b/configs/mot/jde/jde_darknet53_30e_864x480.yml
@@ -0,0 +1,47 @@
+_BASE_: [
+ '../../datasets/mot.yml',
+ '../../runtime.yml',
+ '_base_/optimizer_30e.yml',
+ '_base_/jde_darknet53.yml',
+ '_base_/jde_reader_864x480.yml',
+]
+weights: output/jde_darknet53_30e_864x480/model_final
+
+JDE:
+ detector: YOLOv3
+ reid: JDEEmbeddingHead
+ tracker: JDETracker
+
+YOLOv3:
+ backbone: DarkNet
+ neck: YOLOv3FPN
+ yolo_head: YOLOv3Head
+ post_process: JDEBBoxPostProcess
+ for_mot: True
+
+YOLOv3Head:
+ anchors: [[102,305], [143, 429], [203,508], [407,508],
+ [25,76], [36,107], [51,152], [71,215],
+ [6,19], [9,27], [13,38], [18,54]]
+ anchor_masks: [[0, 1, 2, 3], [4, 5, 6, 7], [8, 9, 10, 11]]
+ loss: JDEDetectionLoss
+
+JDETracker:
+ det_thresh: 0.3
+ track_buffer: 30
+ min_box_area: 200
+ motion: KalmanFilter
+
+JDEBBoxPostProcess:
+ decode:
+ name: JDEBox
+ conf_thresh: 0.5
+ downsample_ratio: 32
+ nms:
+ name: MultiClassNMS
+ keep_top_k: 500
+ score_threshold: 0.01
+ nms_threshold: 0.4
+ nms_top_k: 2000
+ normalized: true
+ return_index: true
diff --git a/requirements.txt b/requirements.txt
index 6e0388c3b912a3f9f9164023a73b7e47afa5cc66..c90680d608003682955ee4e30f62f75e99ebbd9b 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -13,4 +13,5 @@ setuptools>=42.0.0
lap
sklearn
cython_bbox
-motmetrics
\ No newline at end of file
+motmetrics
+openpyxl
\ No newline at end of file