1. torchvision.transforms: 常用的图像预处理方法
1.数据标准化
transforms.Normalisze(mean, std, inplace=False)
功能: 不同channel对图像进行标准化
mean: 通道的均值
std: 通道的标准差
inplace: 是否原地操作
2.裁剪
1. transforms.CenterCrop # 从图像中心裁剪图片
2. transforms.RandomCrop # 从图片中随机裁剪出尺寸为size的图片
3. transforms.RandomResizedCrop # 随机大小、长宽比裁剪图片
4. transforms.FiveCrop
5. transforms.TenCrop
3.旋转 和 翻转
1. transforms.RandomHorizontalFlip
2. transforms.RandomVerticalFlip # 根据概率水平或垂直翻转图片
3. transforms.RandomRotation # 随机旋转图片
4.图像变换
1. transforms.Pad # 图片边缘填充
2. transforms.ColorJitter # 调整亮度、对比度、饱和度、色相
3. transforms.GrayScale
4. transforms.RandomGrayscale # 图片转化为灰度图
5. transforms.RandomAffine # 图片放射变换(旋转、平移、缩放、错切、旋转)
6. transforms.LinearTransformation
7. transforms.RandomErasing # 图片随机遮掩
8. transforms.Lambda # 自定义lambda方法
9. transforms.Resize
10. transforms.Totensor
11. transforms.Normalize
5. 其他操作
1. transforms.RandomChoice # 从一系列transforms方法中随机挑选一个
2. transforms.RandomApply # 根据概率执行一组transforms操作
3. transforms.RandomOrder # 对一组transforms操作打乱顺序
2. 自定义transforms
1. 仅接收一个参数,返回一个参数
2. 注意上下游的输出和输入
class MyTransforms(object):
def __init__(self, ..)
..
def __call__(self, img):
"""
主要自定义预处理逻辑操作
"""
return img
# 应用
train_transform = transforms.Compose([
transforms.Resize((224, 224)),
MyTransforms(),
transforms.ToTensor(),
transforms.Normalize(norm_mean, norm_std),
])
valid_transform = transforms.Compose([
transforms.Resize((224, 224)),
transforms.ToTensor(),
transforms.Normalize(norm_mean, norm_std)
])
数据预处理
最新推荐文章于 2024-09-12 09:11:48 发布