图像增强在深度学习的作用
目的就是扩充数据集,opencv和torchvision中的transform只是提供一种手段,防止重复造轮子
知道内核后,再去理解图像增强,才能具体情况具体对应
torchvision.transform
对于简单的图像旋转、拼接等处理可以直接用torchvision.transform
下面介绍的标题上的torchvision功能都是在torchvision.transforms以及torchvision.transforms.functional.下,opencv实现方式会在标题后面
部分opencv的方式需要获取转移矩阵,再通过cv2.warpXXXX等方式转换,下面不再叙述
torchvision
import cv2
import numpy as np
import matplotlib.pyplot as plt
from torchvision import transforms
import torch
#这里特意说一下 PIL读入 和CV 读入不一样
img = cv2.imread('data\monet_800600.jpg')
# cv2载入的是BGR模式 如果plt显示图像要用下面代码转成RGB
img = cv2.cvtColor(img,cv2.COLOR_BGR2RGB)
plt.imshow(img)
原图像
再具体介绍各种操作前,先掌握一下compose标准写法:
#Compose处理 可以把多个transform合并顺序处理
trans = transforms.Compose(
#如果opencv载入图片的话,先要转成tensor
[transforms.ToTensor(),
#中间省略 会按照顺序进行transform处理
transforms.CenterCrop(500),
]
)
如果你想随机选取的话可以用下面这个RandomApply
# 用torch.nn.ModuleList套上你想要的处理,用P指定概率
transforms = transforms.RandomApply(torch.nn.ModuleList([
transforms.某个处理(