PyTorch 学习笔记(二):PyTorch的数据增强与数据标准化

2019 年 4 月 25 日 极市平台

加入极市专业CV交流群,与6000+来自腾讯,华为,百度,北大,清华,中科院等名企名校视觉开发者互动交流!更有机会与李开复老师等大牛群内互动!

同时提供每月大咖直播分享、真实项目需求对接、干货资讯汇总,行业技术交流点击文末“阅读原文”立刻申请入群~


作者 | 余霆嵩

来源专栏 | PyTorch学习笔记

已获作者原创授权,请勿二次转发


本文截取自一个github上千星的火爆教程——《PyTorch 模型训练实用教程》教程内容主要为在 PyTorch 中训练一个模型所可能涉及到的方法及函数的详解等,本文为作者整理的学习笔记(二),后续会继续更新这个系列,欢迎关注。

项目代码:https://github.com/tensor-yu/PyTorch_Tutorial


系列回顾:PyTorch 学习笔记(一):让PyTorch读取你的数据集


在实际应用过程中,我们会在数据进入模型之前进行一些预处理,例如数据中心化(仅减均值),数据标准化(减均值,再除以标准差),随机裁剪,旋转一定角度,镜像等一系列操作。PyTorch有一系列数据增强方法供大家使用,下面将介绍这些方法。


在PyTorch中,这些数据增强方法放在了transforms.py文件中。这些数据处理可以满足我们大部分的需求,通过熟悉transforms.py,以及1.4节中的内容,我们也可以自定义数据处理函数,实现自己的数据增强。


在本小节,从宏观地介绍transform的使用,在下一小节,将会详细介绍transform的所有操作。


transform的使用

请查看/Code/main_trainingmain.py中代码:

normMean = [0.4948052, 0.48568845, 0.44682974]normStd = [0.24580306, 0.24236229, 0.2603115]normTransform = transforms.Normalize(normMean, normStd)trainTransform = transforms.Compose([    transforms.Resize(32),    transforms.RandomCrop(32, padding=4),    transforms.ToTensor(),    normTransform    ])validTransform = transforms.Compose([    transforms.ToTensor(),    normTransform    ])

前三行设置均值,标准差,以及数据标准化:transforms.Normalize()函数,这里是以通道为单位进行计算均值,标准差。然后用transforms.Compose将所需要进行的处理给compose起来,并且需要注意顺序!


在训练时,依次对图片进行以下操作:

1. 随机裁剪2. Totensor3. 数据标准化(减均值,除以标准差)

1. 随机裁剪 第一个处理是随机裁剪,在裁剪之前先对图片的上下左右均填充上4个pixel,值为0,即变成一个40*40的数据,然后再随机进行3232的裁剪。例如下图,是经过transforms.RandomCrop(32, padding=4),之后的图片,其中红色框是原始图片数据,31列是填充的0,28-31行也是填充的0.



2. Totensor 第二个处理是 transforms.ToTensor() 在这里会对数据进行transpose,原来是hwc,会经过img = img.transpose(0, 1).transpose(0, 2).contiguous(),变成chw再除以255,使得像素值归一化至[0-1]之间,来看看Red通道。



来看看27行,30列 原来是8的, 经过ToTensor之后变成:8/255= 0.03137255


3. 数据标准化(减均值,除以标准差) 第三个处理是对图像进行标准化,通过标准化之后,再来看看Red通道的数据:



至此,数据预处理完毕,最后转换成Variable类型,就是输入网络模型的数据了。


细心的朋友可能会发现,在进行Normalize时,需要设置均值和方差,在这里直接给出了,但在实际应用中是要去训练集中计算的,天下可没有免费的午餐。


这里给出计算训练集的均值和方差的脚本: 

https://github.com/tensor-yu/PyTorch_Tutorial/blob/master/Code/1_data_prepare/1_5_compute_mean.py





*延伸阅读



点击左下角阅读原文”,即可申请加入极市目标跟踪、目标检测、工业检测、人脸方向、视觉竞赛等技术交流群,更有每月大咖直播分享、真实项目需求对接、干货资讯汇总,行业技术交流,一起来让思想之光照的更远吧~


觉得有用麻烦给个在看啦~  

登录查看更多
8

相关内容

【2020新书】实战R语言4,323页pdf
专知会员服务
100+阅读 · 2020年7月1日
干净的数据:数据清洗入门与实践,204页pdf
专知会员服务
161+阅读 · 2020年5月14日
【Amazon】使用预先训练的Transformer模型进行数据增强
专知会员服务
56+阅读 · 2020年3月6日
【模型泛化教程】标签平滑与Keras, TensorFlow,和深度学习
专知会员服务
20+阅读 · 2019年12月31日
【GitHub实战】Pytorch实现的小样本逼真的视频到视频转换
专知会员服务
35+阅读 · 2019年12月15日
【干货】大数据入门指南:Hadoop、Hive、Spark、 Storm等
专知会员服务
95+阅读 · 2019年12月4日
【书籍】深度学习框架:PyTorch入门与实践(附代码)
专知会员服务
163+阅读 · 2019年10月28日
【初学者系列】tensorboard学习笔记
专知
7+阅读 · 2019年10月4日
PyTorch 学习笔记(七):PyTorch的十个优化器
极市平台
8+阅读 · 2019年5月19日
PyTorch 学习笔记(六):PyTorch的十七个损失函数
极市平台
47+阅读 · 2019年5月13日
PyTorch 学习笔记(五):Finetune和各层定制学习率
PyTorch 学习笔记(四):权值初始化的十种方法
极市平台
14+阅读 · 2019年5月1日
PyTorch 学习笔记(三):transforms的二十二个方法
极市平台
12+阅读 · 2019年4月28日
PyTorch 学习笔记(一):让PyTorch读取你的数据集
极市平台
16+阅读 · 2019年4月24日
快速上手笔记,PyTorch模型训练实用教程(附代码)
一文读懂PyTorch张量基础(附代码)
数据派THU
6+阅读 · 2018年6月12日
PyTorch:60分钟入门学习
全球人工智能
13+阅读 · 2018年5月18日
Arxiv
7+阅读 · 2020年3月1日
Image Captioning: Transforming Objects into Words
Arxiv
7+阅读 · 2019年6月14日
CoQA: A Conversational Question Answering Challenge
Arxiv
7+阅读 · 2018年8月21日
Arxiv
6+阅读 · 2018年4月3日
Arxiv
7+阅读 · 2018年3月22日
VIP会员
相关VIP内容
相关资讯
【初学者系列】tensorboard学习笔记
专知
7+阅读 · 2019年10月4日
PyTorch 学习笔记(七):PyTorch的十个优化器
极市平台
8+阅读 · 2019年5月19日
PyTorch 学习笔记(六):PyTorch的十七个损失函数
极市平台
47+阅读 · 2019年5月13日
PyTorch 学习笔记(五):Finetune和各层定制学习率
PyTorch 学习笔记(四):权值初始化的十种方法
极市平台
14+阅读 · 2019年5月1日
PyTorch 学习笔记(三):transforms的二十二个方法
极市平台
12+阅读 · 2019年4月28日
PyTorch 学习笔记(一):让PyTorch读取你的数据集
极市平台
16+阅读 · 2019年4月24日
快速上手笔记,PyTorch模型训练实用教程(附代码)
一文读懂PyTorch张量基础(附代码)
数据派THU
6+阅读 · 2018年6月12日
PyTorch:60分钟入门学习
全球人工智能
13+阅读 · 2018年5月18日
Top
微信扫码咨询专知VIP会员