File size: 3,557 Bytes
7b7527a
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
use_gpu: true
log_iter: 5
save_dir: output
snapshot_epoch: 1
weights: output/tinypose3d_multi_frames_heatmap/model_final
epoch: 420
num_joints: &num_joints 24
pixel_std: &pixel_std 200
metric: Pose3DEval
num_classes: 1
train_height: &train_height 128
train_width: &train_width 128
trainsize: &trainsize [*train_width, *train_height]
hmsize: &hmsize [24, 32]
flip_perm: &flip_perm [[1, 2], [4, 5], [7, 8], [10, 11], [13, 14], [16, 17], [18, 19], [20, 21], [22, 23]]

#####model
architecture: TinyPose3DHRHeatmapNet
pretrain_weights: medical_multi_frames_best_model.pdparams

TinyPose3DHRHeatmapNet:
  backbone: LiteHRNet
  post_process: TinyPosePostProcess
  num_joints: *num_joints
  width: &width 40
  loss: KeyPointRegressionMSELoss

LiteHRNet:
  network_type: wider_naive
  freeze_at: -1
  freeze_norm: false
  return_idx: [0]

KeyPointRegressionMSELoss:
  reduction: 'mean'

#####optimizer
LearningRate:
  base_lr: 0.001
  schedulers:
  - !PiecewiseDecay
    milestones: [17, 21]
    gamma: 0.1
  - !LinearWarmup
    start_factor: 0.01
    steps: 1000

OptimizerBuilder:
  optimizer:
    type: Adam
  regularizer:
    factor: 0.0
    type: L2

#####data
TrainDataset:
  !Keypoint3DMultiFramesDataset
    dataset_dir: "data/medical/multi_frames/train"
    image_dir: "images"
    p3d_dir: "joint_pc/player_0"
    json_path: "json_results/player_0/player_0.json"
    img_size: *trainsize # w,h
    num_frames: 6


EvalDataset:
  !Keypoint3DMultiFramesDataset
    dataset_dir: "data/medical/multi_frames/val"
    image_dir: "images"
    p3d_dir: "joint_pc/player_0"
    json_path: "json_results/player_0/player_0.json"
    img_size: *trainsize # w,h
    num_frames: 6

TestDataset:
  !Keypoint3DMultiFramesDataset
    dataset_dir: "data/medical/multi_frames/val"
    image_dir: "images"
    p3d_dir: "joint_pc/player_0"
    json_path: "json_results/player_0/player_0.json"
    img_size: *trainsize # w,h
    num_frames: 6

worker_num: 4
global_mean: &global_mean [0.485, 0.456, 0.406]
global_std: &global_std [0.229, 0.224, 0.225]
TrainReader:
  sample_transforms:
    - CropAndFlipImages:
        crop_range: [556, 1366] # 保留train_height/train_width比例的情况下,裁剪原图左右两个的黑色填充
    - RandomFlipHalfBody3DTransformImages:
        scale: 0.25
        rot: 30
        num_joints_half_body: 9
        prob_half_body: 0.3
        pixel_std: *pixel_std
        trainsize: *trainsize
        upper_body_ids: [0, 3, 6, 9, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23]
        flip_pairs: *flip_perm
        do_occlusion: true
    - Resize: {interp: 2, target_size: [*train_height,*train_width], keep_ratio: false}
  batch_transforms:
    - NormalizeImage:
        mean: *global_mean
        std: *global_std
        is_scale: true
    - PermuteImages: {}
  batch_size: 1 #32
  shuffle: true
  drop_last: false

EvalReader:
  sample_transforms:
    - CropAndFlipImages:
        crop_range: [556, 1366]
    - Resize: {interp: 2, target_size: [*train_height,*train_width], keep_ratio: false}
    #- OriginPointTranslationImages: {}
  batch_transforms:
    - NormalizeImage:
        mean: *global_mean
        std: *global_std
        is_scale: true
    - PermuteImages: {}
  batch_size: 32

TestReader:
  inputs_def:
    image_shape: [3, *train_height, *train_width]
  sample_transforms:
    - Decode: {}
    - LetterBoxResize: { target_size: [*train_height,*train_width]}
    - NormalizeImage:
        mean: *global_mean
        std: *global_std
        is_scale: true
    - Permute: {}
  batch_size: 1
  fuse_normalize: false