Pytorch - 数据增广
增加一个已有数据集,使得有更多的多样性
- 在语言里面加入各种不同的背景噪音
- 改变图片的颜色和形状
翻转
- 左右翻转
- 上下翻转
但是并不总是可行的。
切割
从图片中切割一块,然后变形到固定形状
- 随机高宽比
- 随机大小
- 随机位置
颜色
改变色调、饱和度、明亮度。
总结:
- 数据增强通过变形数据来获取多样性从而使得模型泛化性能更好
- 常见图片增强包括翻转、切割、变色
代码实现
随机水平翻转
from PIL import Image
from torchvision import transforms
image = Image.open("../data/1.jpg")
# 水平方向随机翻转
horizontal = transforms.RandomHorizontalFlip()
horizontal_out = horizontal(image)
horizontal_out.show()
随机垂直翻转
# 垂直方向随机翻转
vertical = transforms.RandomVerticalFlip()
vertical_out = vertical(image)
vertical_out.show()
随机裁剪
# 随机裁剪
# size 裁剪后重新设置大小为 200 * 200
# 随机裁剪区域大小设置为 从原图大小的10%到100%随机裁剪
# ration:高宽比
resizeCrop = transforms.RandomResizedCrop(size=(200,200),scale=(0.1,0.9),ratio=(0.5,2))
resizeCrop_out = resizeCrop(image)
resizeCrop_out.show()
随机更改图像的亮度
# 随机更改图像的亮度
# brightness:亮度,0.5亮度增加/降低50%
# contrast:对比度
# saturation:饱和度
# hue:颜色
colorJitter = transforms.ColorJitter(brightness=0.5,contrast=0,saturation=0,hue=0)
colorJitter_out = colorJitter(image)
colorJitter_out.show()
随机更改图像的色调
# 随机更改图像的色调
colorJitter = transforms.ColorJitter(brightness=0,contrast=0,saturation=0,hue=0.5)
colorJitter_out = colorJitter(image)
colorJitter_out.show()
常用的是,同时调整,上下50%
colorJitter = transforms.ColorJitter(brightness=0.5,contrast=0.5,saturation=0.5,hue=0.5)
colorJitter_out = colorJitter(image)
colorJitter_out.show()