转换和增强图像(TRANSFORMING AND AUGMENTING)
转换是模块中可用的常见图像转换。可以使用 Compose 将它们链接在一起。大多数转换类都具有函数等效项:函数转换提供对转换的细粒度控制。如果您必须构建更复杂的转换管道(例如,在分段任务的情况下),这将非常有用。torchvision.transforms大多数变换同时接受 PIL 图像和张量图像,尽管有些变换仅接受 PIL,有些变换仅接受张量。转换转换可用于与 PIL 映像相互转换。
接受张量图像的变换也接受成批的张量图像。张量图像是具有形状的张量,其中是多个通道,并且是图像的高度和宽度。一批张量图像是形状的张量,其中是该批中的许多图像。(C, H, W)CHW(B, C, H, W)B
张量图像值的预期范围由张量 dtype 隐式定义。具有浮点 d 类型的张量图像应具有 中的值。具有整数 d 类型的张量图像应具有值,其中的值是可以在该 d 类型中表示的最大值。[0, 1)[0,MAX_DTYPE]MAX_DTYPE
随机转换将对给定批处理的所有图像应用相同的转换,但它们将在调用之间生成不同的转换。对于跨调用的可重现转换,可以使用功能转换。
Scriptable Transforms
In order to script the transformations, please use instead of Compose.torch.nn.Sequential
transforms = torch.nn.Sequential(
transforms.CenterCrop(10),
transforms.Normalize((0.485, 0.456, 0.406), (0.229, 0.224, 0.225)),
)
scripted_transforms = torch.jit.script(transforms)
Make sure to use only scriptable transformations, i.e. that work with and does not require lambda functions or .torch.TensorPIL.Image
For any custom transformations to be used with , they should be derived from .torch.jit.scripttorch.nn.Module
Functional Transforms
adjust_brightness(img, brightness_factor)
调整图像的亮度。
adjust_contrast(img, contrast_factor)
调整图像的对比度。
adjust_gamma(img, gamma[, gain])
对图像执行伽玛校正。
adjust_hue(img, hue_factor)
调整图像的色调。
adjust_saturation(img, saturation_factor)
调整图像的颜色饱和度。
adjust_sharpness(img, sharpness_factor)
调整图像的清晰度。
仿射(img,角度,平移,缩放,剪切)
对图像应用仿射变换,使图像中心保持不变。
自动造影器(img)
通过重新映射每个通道的像素来最大化图像的对比度,使最低的像素变为黑色,最亮的图像变为白色。
center_crop(img, output_size)
在中心裁剪给定图像。
convert_image_dtype(图像[,dtype])
将张量图像转换为给定图像并相应地缩放值 此函数不支持 PIL 图像。dtype
裁剪(img, 顶部, 左, 高度, 宽度)
在指定位置和输出大小裁剪给定图像。
均衡(img)
通过对输入应用非线性映射来均衡图像的直方图,以便在输出中创建灰度值的均匀分布。
erase(img, i, j, h, w, v[, inplace])
擦除具有给定值的输入张量图像。
five_crop(英制,尺寸)
将给定的图像裁剪成四个角和中央裁剪。
gaussian_blur(img, kernel_size[, sigma])
通过给定的核对图像执行高斯模糊。
get_dimensions(img)
返回图像的尺寸作为 [通道、高度、宽度]。
get_image_num_channels(img)
返回图像的通道数。
get_image_size(img)
将图像的大小返回为 [宽度、高度]。
hflip(img)
水平翻转给定图像。
反转(img)
反转 RGB/灰度图像的颜色。
规范化(张量,平均值,标准[,就地])
使用均值和标准差归一化浮点张量图像。
pad(img, padding[, fill, padding_mode])
使用给定的“pad”值在所有侧面填充给定的图像。
透视(img, startpoints, endpoints[, ...])
对给定图像执行透视变换。
pil_to_tensor(图)
将 a 转换为相同类型的张量。PIL Image
posterize(img, bits)
通过减少每个颜色通道的位数来对图像进行色调分离。
调整大小(img, size[, interpolation, max_size, ...])
将输入图像的大小调整为给定大小。
resized_crop(img, top, left, height, width, size)
裁剪给定的图像并将其大小调整为所需大小。
rgb_to_grayscale(img[, num_output_channels])
将 RGB 图像转换为图像的灰度版本。
旋转(img, angle[, 插值, 展开, ...])
按角度旋转图像。
solarize(img, threshold)
通过反转所有高于阈值的像素值来日化 RGB/灰度图像。
ten_crop(img, size[, vertical_flip])
从给定图像生成十张裁剪图像。
to_grayscale(img[, num_output_channels])
将任何模式(RGB,HSV,LAB等)的PIL图像转换为图像的灰度版本。
to_pil_image(图片[,模式])
将张量或 ndarray 转换为 PIL 图像。
to_tensor(图)
将 或 转换为张量。PIL Imagenumpy.ndarray
vflip(img)
垂直翻转给定的图像。
数据
Torchvision在模块中提供了许多内置数据集,以及用于构建自己的数据集的实用程序类。torchvision.datasets
内置数据集
所有数据集都是torch.utils.data.Dataset的子类,即它们具有和实现的方法。因此,它们都可以传递给torch.utils.data.DataLoader,后者可以使用worker并行加载多个样本。例如:__getitem____len__torch.multiprocessing
imagenet_data = torchvision.datasets.ImageNet(‘path/to/imagenet_root/’)
data_loader = torch.utils.data.DataLoader(imagenet_data,
batch_size=4,
shuffle=True,
num_workers=args.nThreads)
所有数据集都有几乎相似的API。它们都有两个共同的参数:分别转换输入和目标。您还可以使用提供的基类创建自己的数据集。transformtarget_transform
#### 图像分类 https://pytorch.org/vision/stable/datasets.html#image-classification
#### 图像检测或分割 https://pytorch.org/vision/stable/datasets.html#image-detection-or-segmentation
#### 光流 https://pytorch.org/vision/stable/datasets.html#optical-flow
#### 视频分类 https://pytorch.org/vision/stable/datasets.html#video-classification
自定义数据集可使用的基类
DatasetFolder(root, loader, Any], …)
通用数据加载程序。
ImageFolder(root, transform, …)
一个通用数据加载器,默认情况下,图像以这种方式排列:。
VisionDataset(root, transforms, transform, …)
基类 用于制作与火炬视觉兼容的数据集。
未完待续。。。