File size: 15,476 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 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 |
**# config yaml配置项说明**
KeyPoint 使用时config文件配置项说明,以[tinypose_256x192.yml](../../configs/keypoint/tiny_pose/tinypose_256x192.yml)为例
```yaml
use_gpu: true #是否使用gpu训练
log_iter: 5 #打印log的iter间隔
save_dir: output #模型保存目录
snapshot_epoch: 10 #保存模型epoch间隔
weights: output/tinypose_256x192/model_final #测试加载模型路径(不含后缀“.pdparams”)
epoch: 420 #总训练epoch数量
num_joints: &num_joints 17 #关键点数量
pixel_std: &pixel_std 200 #变换时相对比率像素(无需关注,不动就行)
metric: KeyPointTopDownCOCOEval #metric评估函数
num_classes: 1 #种类数(检测模型用,不需关注)
train_height: &train_height 256 #模型输入尺度高度变量设置
train_width: &train_width 192 #模型输入尺度宽度变量设置
trainsize: &trainsize [*train_width, *train_height] #模型输入尺寸,使用已定义变量
hmsize: &hmsize [48, 64] #输出热力图尺寸(宽,高)
flip_perm: &flip_perm [[1, 2], [3, 4], [5, 6], [7, 8], [9, 10], [11, 12], [13, 14], [15, 16]] #左右关键点经图像翻转时对应关系,例如:图像翻转后,左手腕变成了右手腕,右手腕变成了左手腕
\#####model
architecture: TopDownHRNet #模型框架结构类选择
TopDownHRNet: #TopDownHRNet相关配置
backbone: LiteHRNet #模型主干网络
post_process: HRNetPostProcess #模型后处理类
flip_perm: *flip_perm #同上flip_perm
num_joints: *num_joints #关键点数量(输出通道数量)
width: &width 40 #backbone输出通道数
loss: KeyPointMSELoss #loss函数选择
use_dark: true #是否使用DarkPose后处理
LiteHRNet: #LiteHRNet相关配置
network_type: wider_naive #网络结构类型选择
freeze_at: -1 #梯度截断branch id,截断则该branch梯度不会反传
freeze_norm: false #是否固定normalize层参数
return_idx: [0] #返回feature的branch id
KeyPointMSELoss: #Loss相关配置
use_target_weight: true #是否使用关键点权重
loss_scale: 1.0 #loss比率调整,1.0表示不变
\#####optimizer
LearningRate: #学习率相关配置
base_lr: 0.002 #初始基础学习率
schedulers:
\- !PiecewiseDecay #衰减策略
milestones: [380, 410] #衰减时间对应epoch次数
gamma: 0.1 #衰减率
\- !LinearWarmup #Warmup策略
start_factor: 0.001 #warmup初始学习率比率
steps: 500 #warmup所用iter次数
OptimizerBuilder: #学习策略设置
optimizer:
type: Adam #学习策略Adam
regularizer:
factor: 0.0 #正则项权重
type: L2 #正则类型L2/L1
\#####data
TrainDataset: #训练数据集设置
!KeypointTopDownCocoDataset #数据加载类
image_dir: "" #图片文件夹,对应dataset_dir/image_dir
anno_path: aic_coco_train_cocoformat.json #训练数据Json文件,coco格式
dataset_dir: dataset #训练数据集所在路径,image_dir、anno_path路径基于此目录
num_joints: *num_joints #关键点数量,使用已定义变量
trainsize: *trainsize #训练使用尺寸,使用已定义变量
pixel_std: *pixel_std #同上pixel_std
use_gt_bbox: True #是否使用gt框
EvalDataset: #评估数据集设置
!KeypointTopDownCocoDataset #数据加载类
image_dir: val2017 #图片文件夹
anno_path: annotations/person_keypoints_val2017.json #评估数据Json文件,coco格式
dataset_dir: dataset/coco #数据集路径,image_dir、anno_path路径基于此目录
num_joints: *num_joints #关键点数量,使用已定义变量
trainsize: *trainsize #训练使用尺寸,使用已定义变量
pixel_std: *pixel_std #同上pixel_std
use_gt_bbox: True #是否使用gt框,一般测试时用
image_thre: 0.5 #检测框阈值设置,测试时使用非gt_bbox时用
TestDataset: #纯测试数据集设置,无label
!ImageFolder #数据加载类,图片文件夹类型
anno_path: dataset/coco/keypoint_imagelist.txt #测试图片列表文件
worker_num: 2 #数据加载worker数量,一般2-4,太多可能堵塞
global_mean: &global_mean [0.485, 0.456, 0.406] #全局均值变量设置
global_std: &global_std [0.229, 0.224, 0.225] #全局方差变量设置
TrainReader: #训练数据加载类设置
sample_transforms: #数据预处理变换设置
\- RandomFlipHalfBodyTransform: #随机翻转&随机半身变换类
scale: 0.25 #最大缩放尺度比例
rot: 30 #最大旋转角度
num_joints_half_body: 8 #关键点小于此数不做半身变换
prob_half_body: 0.3 #半身变换执行概率(满足关键点数量前提下)
pixel_std: *pixel_std #同上pixel_std
trainsize: *trainsize #训练尺度,同上trainsize
upper_body_ids: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10] #上半身关键点id
flip_pairs: *flip_perm #左右关键点对应关系,同上flip_perm
\- AugmentationbyInformantionDropping:
prob_cutout: 0.5 #随机擦除变换概率
offset_factor: 0.05 #擦除位置中心点随机波动范围相对图片宽度比例
num_patch: 1 #擦除位置数量
trainsize: *trainsize #同上trainsize
\- TopDownAffine:
trainsize: *trainsize #同上trainsize
use_udp: true #是否使用udp_unbias(flip测试使用)
\- ToHeatmapsTopDown_DARK: #生成热力图gt类
hmsize: *hmsize #热力图尺寸
sigma: 2 #生成高斯核sigma值设置
batch_transforms:
\- NormalizeImage: #图像归一化类
mean: *global_mean #均值设置,使用已有变量
std: *global_std #方差设置,使用已有变量
is_scale: true #图像元素是否除255.,即[0,255]到[0,1]
\- Permute: {} #通道变换HWC->CHW,一般都需要
batch_size: 128 #训练时batchsize
shuffle: true #数据集是否shuffle
drop_last: false #数据集对batchsize取余数量是否丢弃
EvalReader:
sample_transforms: #数据预处理变换设置,意义同TrainReader
\- TopDownAffine: #Affine变换设置
trainsize: *trainsize #训练尺寸同上trainsize,使用已有变量
use_udp: true #是否使用udp_unbias,与训练需对应
batch_transforms:
\- NormalizeImage: #图片归一化,与训练需对应
mean: *global_mean
std: *global_std
is_scale: true
\- Permute: {} #通道变换HWC->CHW
batch_size: 16 #测试时batchsize
TestReader:
inputs_def:
image_shape: [3, *train_height, *train_width] #输入数据维度设置,CHW
sample_transforms:
\- Decode: {} #图片加载
\- TopDownEvalAffine: #Affine类,Eval时用
trainsize: *trainsize #输入图片尺度
\- NormalizeImage: #输入图像归一化
mean: *global_mean #均值
std: *global_std #方差
is_scale: true #图像元素是否除255.,即[0,255]到[0,1]
\- Permute: {} #通道变换HWC->CHW
batch_size: 1 #Test batchsize
fuse_normalize: false #导出模型时是否内融合归一化操作(若是,预处理中可省略normalize,可以加快pipeline速度)
```
|