From 7a2e79505c0e5c4dc87d9b19cbc8281141e4227a Mon Sep 17 00:00:00 2001 From: TTerror Date: Fri, 18 Dec 2020 14:44:39 +0800 Subject: [PATCH] support ppyolo for kunlun (#1898) * support ppyolo for kunlun --- configs/ppyolo/ppyolo_roadsign_kunlun.yml | 198 ++++++++++++++++++++++ docs/tutorials/train_on_kunlun.md | 39 +++++ 2 files changed, 237 insertions(+) create mode 100644 configs/ppyolo/ppyolo_roadsign_kunlun.yml create mode 100644 docs/tutorials/train_on_kunlun.md diff --git a/configs/ppyolo/ppyolo_roadsign_kunlun.yml b/configs/ppyolo/ppyolo_roadsign_kunlun.yml new file mode 100644 index 000000000..46d634841 --- /dev/null +++ b/configs/ppyolo/ppyolo_roadsign_kunlun.yml @@ -0,0 +1,198 @@ +architecture: YOLOv3 +use_gpu: false +use_xpu: true +max_iters: 5000 +log_iter: 1 +save_dir: output +snapshot_iter: 500 +metric: VOC +pretrain_weights: https://paddlemodels.bj.bcebos.com/object_detection/ppyolo.pdparams +weights: output/ppyolo_roadsign_kunlun/model_final +num_classes: 4 +finetune_exclude_pretrained_params: ['yolo_output'] +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: '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.0001 + schedulers: + - !PiecewiseDecay + gamma: 0.1 + milestones: + - 800 + - 110 + - !LinearWarmup + start_factor: 0 + steps: 100 + +OptimizerBuilder: + optimizer: + momentum: 0.9 + type: Momentum + regularizer: + factor: 0.0005 + type: L2 + +TrainReader: + inputs_def: + fields: ['image', 'gt_bbox', 'gt_class', 'gt_score'] + num_max_boxes: 50 + dataset: + !VOCDataSet + dataset_dir: dataset/roadsign_voc + anno_path: train.txt + with_background: false + sample_transforms: + - !DecodeImage + to_rgb: True + with_mixup: True + - !MixupImage + alpha: 1.5 + beta: 1.5 + - !ColorDistort {} + - !RandomExpand + fill_value: [123.675, 116.28, 103.53] + ratio: 1.5 + - !RandomCrop {} + - !RandomFlipImage + is_normalized: false + - !NormalizeBox {} + - !PadBox + num_max_boxes: 50 + - !BboxXYXY2XYWH {} + batch_transforms: + - !RandomShape + sizes: [320] + random_inter: True + - !NormalizeImage + mean: [0.485, 0.456, 0.406] + std: [0.229, 0.224, 0.225] + is_scale: True + is_channel_first: false + - !Permute + to_bgr: false + channel_first: True + - !Gt2YoloTarget + 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]] + downsample_ratios: [32, 16, 8] + batch_size: 8 + shuffle: true + mixup_epoch: 250 + drop_last: true + worker_num: 2 + bufsize: 2 + use_process: false #true + + +EvalReader: + inputs_def: + fields: ['image', 'im_size', 'im_id', 'gt_bbox', 'gt_class', 'is_difficult'] + num_max_boxes: 50 + dataset: + !VOCDataSet + dataset_dir: dataset/roadsign_voc + anno_path: valid.txt + with_background: false + sample_transforms: + - !DecodeImage + to_rgb: True + - !ResizeImage + target_size: 608 + interp: 2 + - !NormalizeImage + mean: [0.485, 0.456, 0.406] + std: [0.229, 0.224, 0.225] + is_scale: True + is_channel_first: false + - !PadBox + num_max_boxes: 50 + - !Permute + to_bgr: false + channel_first: True + batch_size: 1 + drop_empty: false + worker_num: 4 + bufsize: 2 + +TestReader: + inputs_def: + image_shape: [3, 608, 608] + fields: ['image', 'im_size', 'im_id'] + dataset: + !ImageFolder + anno_path: dataset/roadsign_voc/label_list.txt + with_background: false + sample_transforms: + - !DecodeImage + to_rgb: True + - !ResizeImage + target_size: 608 + interp: 2 + - !NormalizeImage + mean: [0.485, 0.456, 0.406] + std: [0.229, 0.224, 0.225] + is_scale: True + is_channel_first: false + - !Permute + to_bgr: false + channel_first: True + batch_size: 1 diff --git a/docs/tutorials/train_on_kunlun.md b/docs/tutorials/train_on_kunlun.md new file mode 100644 index 000000000..f871cedb3 --- /dev/null +++ b/docs/tutorials/train_on_kunlun.md @@ -0,0 +1,39 @@ +# How to train on kunlun + +## Prepare kunlun environment +[Paddle installation for machines with Kunlun XPU card](https://www.paddlepaddle.org.cn/install/quick?docurl=/documentation/docs/zh/2.0-rc1/install/install_Kunlun_zh.html) + +## yolov3 + +### Prepare data +Prepare data roadsign + + +### Train +```shell +python3.7 -u tools/train.py -c configs/yolov3_mobilenet_v1_roadsign.yml -o use_gpu=False use_xpu=True +``` + + +### Eval +```shell +python3.7 -u tools/eval.py -c configs/yolov3_mobilenet_v1_roadsign.yml -o weights=output/yolov3_mobilenet_v1_roadsign/model_final.pdparams use_gpu=False use_xpu=True +``` + + +## ppyolo + +### Prepare data +Prepare data roadsign + + +### Train +```shell +python3.7 -u tools/train.py --eval -c configs/ppyolo/ppyolo_roadsign_kunlun.yml +``` + + +### Eval +```shell +python3.7 -u tools/eval.py -c configs/ppyolo/ppyolo_roadsign_kunlun.yml +``` -- GitLab