平时再跑一些深度学习 项目的时候,coco数据怎么进行处理数据的是必须得看的,
但是有一些参数不是很懂什么意思,因此本文就是解释这些参数的。
AUTO_RESUME: True #自动恢复
DATA_DIR: '' #数据文件夹
GPUS: (0,) #GPU数量
LOG_DIR: log #log是日志文件,通常是系统或者某些软件对已完成的某种处理的记录,以便将来做为参考
OUTPUT_DIR: output #监测信息的输出文件目录
PRINT_FREQ: 100 #表示100轮打印一次参数
VERBOSE: False #verbose表示详细信息,verbose=FALSE,意思就是设置运行的时候不显示详细信息
CUDNN:
BENCHMARK: True
DETERMINISTIC: False
ENABLED: True
# 在很多情况下,设置这个参数能让内置的 cuDNN 的 auto-tuner 自动寻找最适合当前配置的高效算法,以此达到优化运行效率的问题。
通常来说会遵循以下准则:
如果网络的输入数据维度或类型上变化不明显,设置 torch.backends.cudnn.benchmark = true
可以增加运行效率;
如果网络的输入数据在每次 iteration 都发生变化,会导致 cnDNN 每次都会去寻找一遍最优配置,这样反而会降低运行效率。
cuDNN使用非确定性算法,并且可以使用torch.backends.cudnn.enabled = False来进行禁用。如果设置为torch.backends.cudnn.enabled =True,说明设置为使用非确定性算法。
所以我们经常看见在代码开始出两者同时设置:
DATASET:
DATASET: coco_kpt #coco关键点检测的数据集
DATASET_TEST: coco #测试集也是coco
DATA_FORMAT: zip #数据格式是zip(不用解压也行)
FLIP: 0.5 #翻转(数据增强的一种方式)
INPUT_SIZE: 512 #输入尺寸
OUTPUT_SIZE: 128 #输出尺寸
MAX_NUM_PEOPLE: 30 #最大人数
MAX_ROTATION: 30 #图片最大的旋转角度
MAX_SCALE: 1.5 #该方法将每个特征放缩到给定范围内(默认范围0-1)
SCALE_TYPE: 'short' #缩放类型
MAX_TRANSLATE: 40 #最大_平移,数据增强方式之一
MIN_SCALE: 0.75 #与上述MAX_SCALE相对应
NUM_JOINTS: 17 #关键点数量
ROOT: 'data/coco' #根目录
TEST: val2017 #测试集
TRAIN: train2017 #训练集
OFFSET_RADIUS: 4 #偏移_半径
SIGMA: 2.0 #方差
CENTER_SIGMA: 4.0 #中心处的方差
BG_WEIGHT: 0.1 #计算损失时每个反例样本的权值,正例样本权值全为1
LOSS:
WITH_HEATMAPS_LOSS: True #热图损失函数
HEATMAPS_LOSS_FACTOR: 1.0 #热图损失因数
WITH_OFFSETS_LOSS: True #偏移损失
OFFSETS_LOSS_FACTOR: 0.03 #偏移损失因数
MODEL:
SPEC:
FINAL_CONV_KERNEL: 1 #最终的卷积核
PRETRAINED_LAYERS: ['*'] #预训练层
STAGES:
NUM_STAGES: 3 #阶段数
NUM_MODULES: #模块数
- 1
- 4
- 3
NUM_BRANCHES: #分支数
- 2
- 3
- 4
BLOCK: #三个残差块(BasicBlock)
- BASIC
- BASIC
- BASIC
NUM_BLOCKS: #BLOCK的数量
- [4, 4]
- [4, 4, 4]
- [4, 4, 4, 4]
NUM_CHANNELS: #通道数量
- [32, 64]
- [32, 64, 128]
- [32, 64, 128, 256]
FUSE_METHOD: #融合方法为相加
- SUM
- SUM
- SUM
HEAD_HEATMAP: #头部热图,残差模块为1,通道数为32,扩展率为1
BLOCK: BASIC
NUM_BLOCKS: 1
NUM_CHANNELS: 32
DILATION_RATE: 1
HEAD_OFFSET: #头部偏移,分块自适应模块,模块数量,扩张率为1
BLOCK: ADAPTIVE
NUM_BLOCKS: 2
NUM_CHANNELS_PERKPT: 15
DILATION_RATE: 1
INIT_WEIGHTS: True #这是一个函数,
import torch.nn as nn
def init_weights(model):
# kaiming高斯初始化,使得每一卷积层的输出的方差都为1
# torch.nn.init.kaiming_normal_(tensor, a=0, mode='fan_in', nonlinearity='leaky_relu')
# a :Relu函数的负半轴斜率
# mode:表示让前向传播还是反向传播的输出方差为1
for m in model.modules():
if isinstance(m, nn.Conv2d):
nn.init.kaiming_normal_(m.weight.data,
mode='fan_out',
nonlinearity='relu')
elif isinstance(m, nn.BatchNorm2d):
# Batchnorm层一共有两个需要学习的参数:
# scale因子,初始化为1,shift因子,初始化为0
m.weight.data.fill_(1)
m.bias.data.zero_()
NAME: hrnet_dekr
NUM_JOINTS: 17 #关键点数
PRETRAINED: 'model/imagenet/hrnet_w32-36af842e.pth' #预训练采用的模型
TEST:
FLIP_TEST: True #翻转测试
IMAGES_PER_GPU: 1 #根据自己的情况选择GPU数
MODEL_FILE: ''
SCALE_FACTOR: [1] #比例因子
NMS_THRE: 0.05
NMS_NUM_THRE: 8
KEYPOINT_THRESHOLD: 0.01 #关键点_阈值
ADJUST_THRESHOLD: 0.05 #调整阈值
MAX_ABSORB_DISTANCE: 75 #最大吸收距离
GUASSIAN_KERNEL: 6 #高斯核数
DECREASE: 0.9 #减少
RESCORE:
VALID: True #Valid 用于验证注解是否符合要求,直接加在变量user之前
MODEL_FILE: 'model/rescore/final_rescore_coco_kpt.pth' #模型文件
TRAIN:
BEGIN_EPOCH: 0 #开始时期
CHECKPOINT: '' #保存更新参数
END_EPOCH: 140 #结束时期
GAMMA1: 0.99 #伽玛1
GAMMA2: 0.0 #伽玛2
IMAGES_PER_GPU: 10 #GPU数量
LR: 0.001 #初始学习率为0.001,学习率LR控制了参数更新的速度,及模型学习的速度。
LR_FACTOR: 0.1 #LR _因子
LR_STEP: [90, 120] #学习率变化扩大,没迭代到一个lr_step值,学习率下降到原来的0.1
MOMENTUM: 0.9 #Momentum(动量)优化算法是对梯度下降法的一种优化, 它在原理上模拟了物理学中的动量,已成为目前非常流行的深度学习优化算法之一。
NESTEROV: False
#1.Nesterov是Momentum的变种。
2.与Momentum唯一区别就是,计算梯度的不同,Nesterov先用当前的速度v更新一遍参数,在用更新的临时参数计算梯度。
3.相当于添加了矫正因子的Momentum。
4.在GD下,Nesterov将误差收敛从O(1/k),改进到O(1/k^2)
5.然而在SGD下,Nesterov并没有任何改进
OPTIMIZER: adam #优化器为adam
RESUME: False #恢复线程
SHUFFLE: True #shuffle()方法将序列的所有元素随机排列语法
WD: 0.0001 #L1,L2正则化的参数,也就是很多深度学习框架里面的wd参数,一般默认是0.0001,调整正则化的参数可以根据模型表现来,过拟合的时候可以适当加大系数,非过拟合的时候可不调这个参数,毕竟跑一次模型得花不少时间。
WORKERS: 4 #工作数量
如果有哪些不对的或者有补充的,欢迎私信。
在跑深度学习项目的时候,我们通常会选择主要的三点,分别是:1、网络结构。2、数据集处理(本文就是关于数据集处理的一些参数注释讲解,这里我用的是coco数据集,仅供参考)。3、train.py训练文件。
以上是对一些参数进行注释和讲解,如果有那些不对的或者有补充的,欢迎私信。