是否预训练 | 是否冻结层 | 训练时间/min | mAP平均精度 | FPS | Total sample number | |
T_0 | 否 | 否 | 83 | 2.68% | 9.874 | 78 |
T_1 | 是 | 否 | 79 | 49.32% | 10.426 | 78 |
T_2 | 否 | 15 | 52 | 21.95% | 8.550 | 78 |
T_3 | 否 | 30 | 55 | 15.96% | 10.565 | 78 |
T_4 | 否 | 50 | 79 | 73.18% | 11.409 | 78 |
T_5 | 是 | 15 | 83 | 47.57% | 10.992 | 78 |
T_6 | 是 | 30 | 63 | 76.48% | 10.988 | 78 |
T_7 | 是 | 50 | 63 | 80.05% | 9.277 | 78 |
表格中是否冻结层15表示冻结网络的前15层,实验采用Resnet50
实验环境说明:
- GPU:AI Studio中V100 16GB
- epoch: 50
测试文件地址:
- TL_Test_0 - 飞桨AI Studio星河社区 (baidu.com)
- TL_Test_1 - 飞桨AI Studio星河社区 (baidu.com)
- TL_Test_2 - 飞桨AI Studio星河社区 (baidu.com)
- TL_Test_3 - 飞桨AI Studio星河社区
- TL_Test_4 - 飞桨AI Studio星河社区 (baidu.com)
- TL_Test_5 - 飞桨AI Studio星河社区
- TL_Test_6 - 飞桨AI Studio星河社区 (baidu.com)
- TL_Test_7 - 飞桨AI Studio星河社区
测试_0
文件名:ppyolov2_r50vd_dcn_voc.yml
说明:
- snapshot_epoch: 10
-
epoch: 50
-
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
说明:
-
epoch: 50 #365
-
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
说明:
- 没有预训练 # pretrain_weights: https://paddledet.bj.bcebos.com/models/pretrained/ResNet50_vd_ssld_pretrained.pdparams
- 没有冻结任何层
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