From 8e32932c143c3f3563359b8367ddf2c68fc670d7 Mon Sep 17 00:00:00 2001 From: Kaipeng Deng Date: Fri, 27 Nov 2020 23:44:22 +0800 Subject: [PATCH] add ppyolo_voc (#1497) * add ppyolo_voc --- configs/ppyolo/README.md | 10 +++ configs/ppyolo/README_cn.md | 10 +++ configs/ppyolo/ppyolo_voc.yml | 117 ++++++++++++++++++++++++++++++++++ 3 files changed, 137 insertions(+) create mode 100644 configs/ppyolo/ppyolo_voc.yml diff --git a/configs/ppyolo/README.md b/configs/ppyolo/README.md index f9786a086..57b9b399b 100644 --- a/configs/ppyolo/README.md +++ b/configs/ppyolo/README.md @@ -84,6 +84,16 @@ PP-YOLO improved performance and speed of YOLOv3 with following methods: |:----------------------------:|:----------:|:----------:| :---------: | :-----------------------: | :--------: | :----------:| :------------------: | :------------: | :------: | :-----: | | PP-YOLO_MobileNetV3_small | 4 | 32 | 75% | PP-YOLO_MobileNetV3_large | 4.1MB | 320 | 14.4 | 21.5 | [model](https://paddlemodels.bj.bcebos.com/object_detection/ppyolo_mobilenet_v3_small.pdparams) | [config](https://github.com/PaddlePaddle/PaddleDetection/tree/master/configs/ppyolo/ppyolo_mobilenet_v3_small.yml) | +### PP-YOLO on Pascal VOC + +PP-YOLO trained on Pascal VOC dataset as follows: + +| Model | GPU number | images/GPU | backbone | input shape | Box AP50val | download | config | +|:------------------:|:----------:|:----------:|:----------:| :----------:| :--------------------: | :------: | :-----: | +| PP-YOLO | 8 | 12 | ResNet50vd | 608 | 84.9 | [model](https://paddlemodels.bj.bcebos.com/object_detection/ppyolo_voc.pdparams) | [config](https://github.com/PaddlePaddle/PaddleDetection/tree/master/configs/ppyolo/ppyolo_voc.yml) | +| PP-YOLO | 8 | 12 | ResNet50vd | 416 | 84.3 | [model](https://paddlemodels.bj.bcebos.com/object_detection/ppyolo_voc.pdparams) | [config](https://github.com/PaddlePaddle/PaddleDetection/tree/master/configs/ppyolo/ppyolo_voc.yml) | +| PP-YOLO | 8 | 12 | ResNet50vd | 320 | 82.2 | [model](https://paddlemodels.bj.bcebos.com/object_detection/ppyolo_voc.pdparams) | [config](https://github.com/PaddlePaddle/PaddleDetection/tree/master/configs/ppyolo/ppyolo_voc.yml) | + ## Getting Start ### 1. Training diff --git a/configs/ppyolo/README_cn.md b/configs/ppyolo/README_cn.md index 79880eb07..e5152420c 100644 --- a/configs/ppyolo/README_cn.md +++ b/configs/ppyolo/README_cn.md @@ -77,6 +77,16 @@ PP-YOLO从如下方面优化和提升YOLOv3模型的精度和速度: - PP-YOLO_MobileNetV3 模型训练过程中使用4GPU,每GPU batch size为32进行训练,如训练GPU数和batch size不使用上述配置,须参考[FAQ](../../docs/FAQ.md)调整学习率和迭代次数。 - PP-YOLO_MobileNetV3 模型推理速度测试环境配置为麒麟990芯片单线程。 +### Pascal VOC数据集上的PP-YOLO + +PP-YOLO在Pascal VOC数据集上训练模型如下: + +| 模型 | GPU个数 | 每GPU图片个数 | 骨干网络 | 输入尺寸 | Box AP50val | 模型下载 | 配置文件 | +|:------------------:|:-------:|:-------------:|:----------:| :----------:| :--------------------: | :------: | :-----: | +| PP-YOLO | 8 | 12 | ResNet50vd | 608 | 84.9 | [model](https://paddlemodels.bj.bcebos.com/object_detection/ppyolo_voc.pdparams) | [config](https://github.com/PaddlePaddle/PaddleDetection/tree/master/configs/ppyolo/ppyolo_voc.yml) | +| PP-YOLO | 8 | 12 | ResNet50vd | 416 | 84.3 | [model](https://paddlemodels.bj.bcebos.com/object_detection/ppyolo_voc.pdparams) | [config](https://github.com/PaddlePaddle/PaddleDetection/tree/master/configs/ppyolo/ppyolo_voc.yml) | +| PP-YOLO | 8 | 12 | ResNet50vd | 320 | 82.2 | [model](https://paddlemodels.bj.bcebos.com/object_detection/ppyolo_voc.pdparams) | [config](https://github.com/PaddlePaddle/PaddleDetection/tree/master/configs/ppyolo/ppyolo_voc.yml) | + ## 使用说明 ### 1. 训练 diff --git a/configs/ppyolo/ppyolo_voc.yml b/configs/ppyolo/ppyolo_voc.yml new file mode 100644 index 000000000..cf138863d --- /dev/null +++ b/configs/ppyolo/ppyolo_voc.yml @@ -0,0 +1,117 @@ +architecture: YOLOv3 +use_gpu: true +max_iters: 70000 +log_smooth_window: 20 +log_iter: 20 +save_dir: output +snapshot_iter: 10000 +metric: VOC +pretrain_weights: https://paddle-imagenet-models-name.bj.bcebos.com/ResNet50_vd_ssld_pretrained.tar +weights: output/ppyolo/model_final +num_classes: 20 +use_fine_grained_loss: true +use_ema: true +ema_decay: 0.9998 + +YOLOv3: + backbone: ResNet + yolo_head: YOLOv3Head + use_fine_grained_loss: true + +ResNet: + norm_type: sync_bn + freeze_at: 0 + freeze_norm: false + norm_decay: 0. + depth: 50 + feature_maps: [3, 4, 5] + variant: d + dcn_v2_stages: [5] + +YOLOv3Head: + anchor_masks: [[6, 7, 8], [3, 4, 5], [0, 1, 2]] + anchors: [[10, 13], [16, 30], [33, 23], + [30, 61], [62, 45], [59, 119], + [116, 90], [156, 198], [373, 326]] + norm_decay: 0. + coord_conv: true + iou_aware: true + iou_aware_factor: 0.4 + scale_x_y: 1.05 + spp: true + yolo_loss: YOLOv3Loss + nms: MatrixNMS + drop_block: true + +YOLOv3Loss: + ignore_thresh: 0.7 + scale_x_y: 1.05 + label_smooth: false + use_fine_grained_loss: true + iou_loss: IouLoss + iou_aware_loss: IouAwareLoss + +IouLoss: + loss_weight: 2.5 + max_height: 608 + max_width: 608 + +IouAwareLoss: + loss_weight: 1.0 + max_height: 608 + max_width: 608 + +MatrixNMS: + background_label: -1 + keep_top_k: 100 + normalized: false + score_threshold: 0.01 + post_threshold: 0.01 + +LearningRate: + base_lr: 0.00333 + schedulers: + - !PiecewiseDecay + gamma: 0.1 + milestones: + - 56000 + - 62000 + - !LinearWarmup + start_factor: 0. + steps: 4000 + +OptimizerBuilder: + optimizer: + momentum: 0.9 + type: Momentum + regularizer: + factor: 0.0005 + type: L2 + +_READER_: 'ppyolo_reader.yml' +TrainReader: + dataset: + !VOCDataSet + dataset_dir: dataset/voc + anno_path: trainval.txt + use_default_label: true + with_background: false + mixup_epoch: 350 + batch_size: 12 + +EvalReader: + inputs_def: + fields: ['image', 'im_size', 'im_id', 'gt_bbox', 'gt_class', 'is_difficult'] + num_max_boxes: 50 + dataset: + !VOCDataSet + dataset_dir: dataset/voc + anno_path: test.txt + use_default_label: true + with_background: false + +TestReader: + dataset: + !ImageFolder + use_default_label: true + with_background: false -- GitLab