1、多GPU训练
Pytorch分布式训练DataParallel和DistributedDataParallel详解_ncll backend_九点澡堂子的博客-CSDN博客
关于DDP单卡多GPU训练:为防止出现OS中无WORLD_SIZE、RANK、LOCAL_RANK、MASTER_ADDR、MASTER_PORT字段,及init_process_group卡死,需要使用命令行拉起进程:
CUDA_VISIBLE_DEVICES=0,3 python -m torch.distributed.launch --nnodes 1 --nproc_per_node 2 --node_rank 0 --master_addr 127.0.0.1 --master_port 23541 --use_env main.py other_parm
2、随机种子seed
随机种子的作用是为了初始化参数;
保证每一次初始化的参数都一样;
这样每一次训练出来的结果都会保持一致
https://blog.csdn.net/weixin_43942515/article/details/115758887
https://blog.csdn.net/hyh14/article/details/127804743
3、图像处理
T.Compose([ ...])
T.RandomHorizontalFlip():随机水平翻转给定的PIL.Image,概率为0.5。即:一半的概率翻转,一半的概率不翻转。
T.ColorJitter(0.4, 0.4, 0.4, 0.4):随机调整图像的亮度,对比度,饱和度和色调。
T.RandomSelect:随机选择两个子操作之一: (1) 一个单个 RandomResize
步骤; (2) 一个 三步骤操作: RandomReize
, RandomSizeCrop
, 以及 RandomResize
T.RandomResize(scales, max_size=1333):该方法随机选择sizes
中的一个值作为图像短边的目标尺寸,同时保持图像的比例不变。但是,如果图像的长边大于max_size
(当使用所选尺寸作为短边时),则将图像的长边设置为max_size
,而较短的尺寸需要重新计算以保持图像长宽比例不变。
T.RandomSizeCrop:对图片进行随机尺寸的裁剪 最后缩放到统一大小
T.ToTensor():将numpy的图片shape是hwc(高,宽,通道)格式的图片矩阵转换为chw格式的torch.tensor格式https://blog.csdn.net/weixin_43794311/article/details/122135827
T.Normalize(mean, std):输入(channel,height,width)形式的tensor,并输入每个channel对应的均值和标准差作为参数,函数会利用这两个参数分别将每层标准化(使数据均值为0,方差为1)后输出。https://blog.csdn.net/Yasin1/article/details/120123710
4、封装数据集
DataSet:数据集。负责对原始训练数据的封装,将其封装成 Python 可识别的数据结构,Dataset的派生类必须提供接口__getitem__获取单个数据。
Sampler:采样器,负责采样方式或者说是采样策略,实现某种提取/采样策略从Dataset之中拿到数据索引,供DataLoade使用。
DistributedSampler(Sampler):转化为分布式采样。
BatchSampler(DistributedSampler):在一个batch中封装一个其他的采样器, 返回一个 batch 大小的 index 索引
DataLoader(DataSet, Sampler):依据Sampler指定的采样规则,从DataSet数据集中加载数据