迁移学习预训练微调实验测试对比

是否预训练是否冻结层训练时间/minmAP平均精度FPSTotal sample number
T_0832.68%9.87478
T_17949.32%10.42678
T_2155221.95%8.55078
T_3305515.96%10.56578
T_4507973.18%11.40978
T_5158347.57%10.99278
T_6306376.48%10.98878
T_7506380.05%9.27778

表格中是否冻结层15表示冻结网络的前15层,实验采用Resnet50

实验环境说明:

  1. GPU:AI Studio中V100 16GB
  2. epoch: 50

测试文件地址:

测试_0

文件名:ppyolov2_r50vd_dcn_voc.yml

说明:

  1. snapshot_epoch: 10
  2. epoch: 50

  3. milestones:

        - 35 

        - 42 

文件路径/home/aistudio/work/PaddleDetection/configs/ppyolo/ppyolov2_r50vd_dcn_voc.yml

_BASE_: [ 
  '/home/aistudio/work/PaddleDetection/configs/datasets/voc.yml', 
  '/home/aistudio/work/PaddleDetection/configs/runtime.yml', 
  # 主要说明了公共的运行参数,比如说是否使用GPU、每多少个epoch存储checkpoint等
  '/home/aistudio/work/PaddleDetection/configs/ppyolo/_base_/ppyolov2_r50vd_dcn.yml', 
  #主要说明模型、和主干网络的情况
  '/home/aistudio/work/PaddleDetection/configs/ppyolo/_base_/optimizer_365e.yml', 
  #主要说明了学习率和优化器的配置
  '/home/aistudio/work/PaddleDetection/configs/ppyolo/_base_/ppyolov2_reader.yml',
 #主要说明数据读取器配置,如batch size,并发加载子进程数等,同时包含读取后预处理操作,如resize、数据增强等等
]
 
#../datasets/voc.yml  #/home/aistudio/work/PaddleDetection/configs/datasets/voc.yml
#../runtime.yml   #/home/aistudio/work/PaddleDetection/configs/runtime.yml
#./_base_/ppyolov2_r50vd_dcn.yml #/home/aistudio/work/PaddleDetection/configs/ppyolo/_base_/ppyolov2_r50vd_dcn.yml
 #./_base_/optimizer_365e.yml   #/home/aistudio/work/PaddleDetection/configs/ppyolo/_base_/optimizer_365e.yml
 #./_base_/ppyolov2_reader.yml  #/home/aistudio/work/PaddleDetection/configs/ppyolo/_base_/ppyolov2_reader.yml
 
snapshot_epoch: 10 # 这是模型保存快照的周期,即每83个epoch保存一次模型。  83
weights: output/ppyolov2_r50vd_dcn_voc/model_final # 这是模型权重的保存路径。
 
TrainReader:
  mixup_epoch: 350
  batch_size: 5 #*********
 
# set collate_batch to false because ground-truth info is needed
# on voc dataset and should not collate data in batch when batch size
# is larger than 1.
EvalReader:
  collate_batch: false
 
epoch: 50  #***********
 
LearningRate:
  base_lr: 0.00333
  schedulers:
  - !PiecewiseDecay
    gamma: 0.1
    milestones:
    - 35 #466  ************
    - 42 #516  ************
  - !LinearWarmup
    start_factor: 0.
    steps: 4000
 
OptimizerBuilder:
  optimizer:
    momentum: 0.9
    type: Momentum
  regularizer:
    factor: 0.0005
    type: L2

 文件名:optimizer_365e.yml

说明:

  1. epoch: 50 #365

  2. milestones:

        - 35 #243

文件路径:/home/aistudio/work/PaddleDetection/configs/ppyolo/_base_/optimizer_365e.yml

epoch: 50 #365

LearningRate:
  base_lr: 0.005
  schedulers:
  - !PiecewiseDecay
    gamma: 0.1
    milestones:
    - 35 #243
  - !LinearWarmup
    start_factor: 0.
    steps: 4000

OptimizerBuilder:
  clip_grad_by_norm: 35.
  optimizer:
    momentum: 0.9
    type: Momentum
  regularizer:
    factor: 0.0005
    type: L2

文件名:ppyolov2_r50vd_dcn.yml

说明:

  1. 没有预训练 # pretrain_weights: https://paddledet.bj.bcebos.com/models/pretrained/ResNet50_vd_ssld_pretrained.pdparams
  2. 没有冻结任何层

      freeze_at: -1

      freeze_norm: false

文件路径:/home/aistudio/work/PaddleDetection/configs/ppyolo/_base_/ppyolov2_r50vd_dcn.yml 

architecture: YOLOv3
#pretrain_weights: https://paddledet.bj.bcebos.com/models/pretrained/ResNet50_vd_ssld_pretrained.pdparams
norm_type: sync_bn
use_ema: true
ema_decay: 0.9998

# AMP training
master_grad: true

YOLOv3:
  backbone: ResNet
  neck: PPYOLOPAN
  yolo_head: YOLOv3Head
  post_process: BBoxPostProcess

ResNet:
  depth: 50
  variant: d
  return_idx: [1, 2, 3]
  dcn_v2_stages: [3]
  freeze_at: -1
  freeze_norm: false
  norm_decay: 0.

PPYOLOPAN:
  drop_block: true
  block_size: 3
  keep_prob: 0.9
  spp: true

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
  iou_aware: true
  iou_aware_factor: 0.5

YOLOv3Loss:
  ignore_thresh: 0.7
  downsample: [32, 16, 8]
  label_smooth: false
  scale_x_y: 1.05
  iou_loss: IouLoss
  iou_aware_loss: IouAwareLoss

IouLoss:
  loss_weight: 2.5
  loss_square: true

IouAwareLoss:
  loss_weight: 1.0

BBoxPostProcess:
  decode:
    name: YOLOBox
    conf_thresh: 0.01
    downsample_ratio: 32
    clip_bbox: true
    scale_x_y: 1.05
  nms:
    name: MatrixNMS
    keep_top_k: 100
    score_threshold: 0.01
    post_threshold: 0.01
    nms_top_k: -1
    background_label: -1

测试_1

文件名:ppyolov2_r50vd_dcn.yml

说明:与测试_0区别只在于使用了预训练

architecture: YOLOv3
pretrain_weights: https://paddledet.bj.bcebos.com/models/pretrained/ResNet50_vd_ssld_pretrained.pdparams
norm_type: sync_bn
use_ema: true
ema_decay: 0.9998

# AMP training
master_grad: true

YOLOv3:
  backbone: ResNet
  neck: PPYOLOPAN
  yolo_head: YOLOv3Head
  post_process: BBoxPostProcess

ResNet:
  depth: 50
  variant: d
  return_idx: [1, 2, 3]
  dcn_v2_stages: [3]
  freeze_at: -1
  freeze_norm: false
  norm_decay: 0.

PPYOLOPAN:
  drop_block: true
  block_size: 3
  keep_prob: 0.9
  spp: true

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
  iou_aware: true
  iou_aware_factor: 0.5

YOLOv3Loss:
  ignore_thresh: 0.7
  downsample: [32, 16, 8]
  label_smooth: false
  scale_x_y: 1.05
  iou_loss: IouLoss
  iou_aware_loss: IouAwareLoss

IouLoss:
  loss_weight: 2.5
  loss_square: true

IouAwareLoss:
  loss_weight: 1.0

BBoxPostProcess:
  decode:
    name: YOLOBox
    conf_thresh: 0.01
    downsample_ratio: 32
    clip_bbox: true
    scale_x_y: 1.05
  nms:
    name: MatrixNMS
    keep_top_k: 100
    score_threshold: 0.01
    post_threshold: 0.01
    nms_top_k: -1
    background_label: -1

测试_2

文件名:ppyolov2_r50vd_dcn.yml

说明:与测试_0区别只在于冻结了前十五层网络

architecture: YOLOv3
#pretrain_weights: https://paddledet.bj.bcebos.com/models/pretrained/ResNet50_vd_ssld_pretrained.pdparams
norm_type: sync_bn
use_ema: true
ema_decay: 0.9998
 
# AMP training
master_grad: true
 
YOLOv3:
  backbone: ResNet
  neck: PPYOLOPAN
  yolo_head: YOLOv3Head
  post_process: BBoxPostProcess
 
ResNet:
  depth: 50
  variant: d
  return_idx: [1, 2, 3]
  dcn_v2_stages: [3]
  freeze_at: 15
  freeze_norm: false
  norm_decay: 0.
 
PPYOLOPAN:
  drop_block: true
  block_size: 3
  keep_prob: 0.9
  spp: true
 
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
  iou_aware: true
  iou_aware_factor: 0.5
 
YOLOv3Loss:
  ignore_thresh: 0.7
  downsample: [32, 16, 8]
  label_smooth: false
  scale_x_y: 1.05
  iou_loss: IouLoss
  iou_aware_loss: IouAwareLoss
 
IouLoss:
  loss_weight: 2.5
  loss_square: true
 
IouAwareLoss:
  loss_weight: 1.0
 
BBoxPostProcess:
  decode:
    name: YOLOBox
    conf_thresh: 0.01
    downsample_ratio: 32
    clip_bbox: true
    scale_x_y: 1.05
  nms:
    name: MatrixNMS
    keep_top_k: 100
    score_threshold: 0.01
    post_threshold: 0.01
    nms_top_k: -1
    background_label: -1

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值