做襪子娃娃的網(wǎng)站百度導(dǎo)航下載2022最新版
學(xué)習(xí)目標(biāo):熟練掌握數(shù)據(jù)變換操作
- 熟悉mindspore.dataset.transforms接口
- 實(shí)踐掌握常用變換
昇思大模型平臺(tái)學(xué)習(xí)心得記錄:
一、關(guān)于mindspore.dataset.transforms
1.1 變換
mindspore.dataset.transforms.Compose
將多個(gè)數(shù)據(jù)增強(qiáng)操作組合使用。
mindspore.dataset.transforms.Concatenate
在輸入數(shù)據(jù)的某一個(gè)軸上進(jìn)行數(shù)組拼接,目前僅支持拼接形狀為1D的數(shù)組。
mindspore.dataset.transforms.Duplicate
將輸入的數(shù)據(jù)列復(fù)制得到新的數(shù)據(jù)列,每次僅可以輸入1個(gè)數(shù)據(jù)列進(jìn)行復(fù)制。
mindspore.dataset.transforms.Fill
將Tensor的所有元素都賦值為指定的值。
mindspore.dataset.transforms.Mask
用給條件判斷輸入Tensor的內(nèi)容,并返回一個(gè)掩碼Tensor。
mindspore.dataset.transforms.OneHot
對(duì)輸入標(biāo)簽進(jìn)行OneHot編碼。
mindspore.dataset.transforms.PadEnd
對(duì)輸入Tensor進(jìn)行填充,要求 pad_shape 與輸入Tensor的維度保持一致。
mindspore.dataset.transforms.RandomApply
指定一組數(shù)據(jù)增強(qiáng)處理及其被應(yīng)用的概率,在運(yùn)算時(shí)按概率隨機(jī)應(yīng)用其中的增強(qiáng)處理。
mindspore.dataset.transforms.RandomChoice
從一組數(shù)據(jù)增強(qiáng)變換中隨機(jī)選擇一個(gè)進(jìn)行應(yīng)用。
mindspore.dataset.transforms.RandomOrder
給一個(gè)數(shù)據(jù)增強(qiáng)的列表,隨機(jī)打亂數(shù)據(jù)增強(qiáng)處理的順序。
mindspore.dataset.transforms.Slice
對(duì)輸入進(jìn)行切片。
mindspore.dataset.transforms.TypeCast
將輸入的Tensor轉(zhuǎn)換為指定的數(shù)據(jù)類型。
mindspore.dataset.transforms.Unique
對(duì)輸入張量進(jìn)行唯一運(yùn)算,每次只支持對(duì)一個(gè)數(shù)據(jù)列進(jìn)行變換。
mindspore.dataset.transforms.Relational
關(guān)系運(yùn)算符。
1.2圖像視覺變換
mindspore.dataset.vision.AdjustBrightness
調(diào)整輸入圖像的亮度。
mindspore.dataset.vision.AdjustContrast
調(diào)整輸入圖像的對(duì)比度。
mindspore.dataset.vision.AdjustGamma
對(duì)輸入圖像應(yīng)用伽馬校正。
mindspore.dataset.vision.AdjustHue
調(diào)整輸入圖像的色調(diào)。
mindspore.dataset.vision.AdjustSaturation
調(diào)整輸入圖像的飽和度。
mindspore.dataset.vision.AdjustSharpness
調(diào)整輸入圖像的銳度。
mindspore.dataset.vision.Affine
對(duì)輸入圖像進(jìn)行仿射變換,保持圖像中心不動(dòng)。
mindspore.dataset.vision.AutoAugment
應(yīng)用AutoAugment
數(shù)據(jù)增強(qiáng)方法,基于論文AutoAugment: Learning Augmentation Strategies from Data
。
mindspore.dataset.vision.AutoContrast
在輸入圖像上應(yīng)用自動(dòng)對(duì)比度。
mindspore.dataset.vision.BoundingBoxAugment
對(duì)圖像的隨機(jī)標(biāo)注邊界框區(qū)域,應(yīng)用給定的圖像變換處理。
mindspore.dataset.vision.CenterCrop
對(duì)輸入圖像應(yīng)用中心區(qū)域裁剪。
mindspore.dataset.vision.ConvertColor
更改圖像的色彩空間。
mindspore.dataset.vision.Crop
在輸入圖像上裁剪出指定區(qū)域。
mindspore.dataset.vision.CutMixBatch
對(duì)輸入批次的圖像和標(biāo)注應(yīng)用剪切混合轉(zhuǎn)換。
mindspore.dataset.vision.CutOut
從輸入圖像數(shù)組中隨機(jī)裁剪出給定數(shù)量的正方形區(qū)域。
mindspore.dataset.vision.Decode
將輸入的壓縮圖像解碼為RGB格式。
mindspore.dataset.vision.Equalize
對(duì)輸入圖像進(jìn)行直方圖均衡化。
mindspore.dataset.vision.Erase
使用指定的值擦除輸入圖像。
mindspore.dataset.vision.FiveCrop
在輸入PIL圖像的中心與四個(gè)角處分別裁剪指定尺寸大小的子圖。
mindspore.dataset.vision.GaussianBlur
使用指定的高斯核對(duì)輸入圖像進(jìn)行模糊處理。
mindspore.dataset.vision.Grayscale
將輸入PIL圖像轉(zhuǎn)換為灰度圖。
mindspore.dataset.vision.HorizontalFlip
水平翻轉(zhuǎn)輸入圖像。
mindspore.dataset.vision.HsvToRgb
將輸入的HSV格式numpy.ndarray圖像轉(zhuǎn)換為RGB格式。
mindspore.dataset.vision.HWC2CHW
將輸入圖像的shape從 <H, W, C> 轉(zhuǎn)換為 <C, H, W>
。
mindspore.dataset.vision.Invert
對(duì)輸入的RGB圖像進(jìn)行色彩反轉(zhuǎn)。
mindspore.dataset.vision.LinearTransformation
使用指定的變換方陣和均值向量對(duì)輸入numpy.ndarray圖像進(jìn)行線性變換。
mindspore.dataset.vision.MixUp
隨機(jī)混合一批輸入的numpy.ndarray圖像及其標(biāo)簽。
mindspore.dataset.vision.MixUpBatch
對(duì)輸入批次的圖像和標(biāo)注應(yīng)用混合轉(zhuǎn)換。
mindspore.dataset.vision.Normalize
根據(jù)均值和標(biāo)準(zhǔn)差對(duì)輸入圖像進(jìn)行歸一化。
mindspore.dataset.vision.NormalizePad
根據(jù)均值和標(biāo)準(zhǔn)差對(duì)輸入圖像進(jìn)行歸一化,然后填充一個(gè)全零的額外通道。
mindspore.dataset.vision.Pad
填充圖像。
mindspore.dataset.vision.PadToSize
將圖像填充到固定大小。
mindspore.dataset.vision.Perspective
對(duì)輸入圖像進(jìn)行透視變換。
mindspore.dataset.vision.Posterize
減少圖像的顏色通道的比特位數(shù),使圖像變得高對(duì)比度和顏色鮮艷,類似于海報(bào)或印刷品的效果。
mindspore.dataset.vision.RandAugment
對(duì)輸入圖像應(yīng)用RandAugment數(shù)據(jù)增強(qiáng)方法。
mindspore.dataset.vision.RandomAdjustSharpness
以給定的概率隨機(jī)調(diào)整輸入圖像的銳度。
mindspore.dataset.vision.RandomAffine
對(duì)輸入圖像應(yīng)用隨機(jī)仿射變換。
mindspore.dataset.vision.RandomAutoContrast
以給定的概率自動(dòng)調(diào)整圖像的對(duì)比度。
mindspore.dataset.vision.RandomColor
隨機(jī)調(diào)整輸入圖像的顏色。
mindspore.dataset.vision.RandomColorAdjust
隨機(jī)調(diào)整輸入圖像的亮度、對(duì)比度、飽和度和色調(diào)。
mindspore.dataset.vision.RandomCrop
對(duì)輸入圖像進(jìn)行隨機(jī)區(qū)域的裁剪。
mindspore.dataset.vision.RandomCropDecodeResize
"裁剪"、"解碼"和"調(diào)整尺寸大小"的組合處理。
mindspore.dataset.vision.RandomCropWithBBox
在輸入圖像的隨機(jī)位置進(jìn)行裁剪并相應(yīng)地調(diào)整邊界框。
mindspore.dataset.vision.RandomEqualize
以給定的概率隨機(jī)對(duì)輸入圖像進(jìn)行直方圖均衡化。
mindspore.dataset.vision.RandomErasing
按照指定的概率擦除輸入numpy.ndarray圖像上隨機(jī)矩形區(qū)域內(nèi)的像素。
mindspore.dataset.vision.RandomGrayscale
按照指定的概率將輸入PIL圖像轉(zhuǎn)換為灰度圖。
mindspore.dataset.vision.RandomHorizontalFlip
對(duì)輸入圖像按給定的概率進(jìn)行水平隨機(jī)翻轉(zhuǎn)。
mindspore.dataset.vision.RandomHorizontalFlipWithBBox
按給定的概率,對(duì)輸入圖像及其邊界框進(jìn)行隨機(jī)水平翻轉(zhuǎn)。
mindspore.dataset.vision.RandomInvert
以給定的概率隨機(jī)反轉(zhuǎn)圖像的顏色。
mindspore.dataset.vision.RandomLighting
將AlexNet PCA的噪聲添加到圖像中。
mindspore.dataset.vision.RandomPerspective
按照指定的概率對(duì)輸入PIL圖像進(jìn)行透視變換。
mindspore.dataset.vision.RandomPosterize
隨機(jī)減少圖像的顏色通道的比特位數(shù),使圖像變得高對(duì)比度和顏色鮮艷。
mindspore.dataset.vision.RandomResizedCrop
對(duì)輸入圖像進(jìn)行隨機(jī)裁剪,并使用指定的 mindspore.dataset.vision.Inter
插值方式去調(diào)整為指定的尺寸大小。
mindspore.dataset.vision.RandomResizedCropWithBBox
對(duì)輸入圖像進(jìn)行隨機(jī)裁剪且隨機(jī)調(diào)整縱橫比,并將處理后的圖像調(diào)整為指定的尺寸大小,并相應(yīng)地調(diào)整邊界框。
mindspore.dataset.vision.RandomResize
對(duì)輸入圖像使用隨機(jī)選擇的 mindspore.dataset.vision.Inter
插值方式去調(diào)整它的尺寸大小。
mindspore.dataset.vision.RandomResizeWithBBox
對(duì)輸入圖像使用隨機(jī)選擇的 mindspore.dataset.vision.Inter
插值方式去調(diào)整它的尺寸大小,并相應(yīng)地調(diào)整邊界框的尺寸大小。
mindspore.dataset.vision.RandomRotation
在指定的角度范圍內(nèi),隨機(jī)旋轉(zhuǎn)輸入圖像。
mindspore.dataset.vision.RandomSelectSubpolicy
從策略列表中隨機(jī)選擇一個(gè)子策略以應(yīng)用于輸入圖像。
mindspore.dataset.vision.RandomSharpness
在固定或隨機(jī)的范圍調(diào)整輸入圖像的銳度。
mindspore.dataset.vision.RandomSolarize
從給定閾值范圍內(nèi)隨機(jī)選擇一個(gè)子范圍,對(duì)位于給定子范圍內(nèi)的像素,將其像素值設(shè)置為(255 - 原本像素值)。
mindspore.dataset.vision.RandomVerticalFlip
以給定的概率對(duì)輸入圖像在垂直方向進(jìn)行隨機(jī)翻轉(zhuǎn)。
mindspore.dataset.vision.RandomVerticalFlipWithBBox
以給定的概率對(duì)輸入圖像和邊界框在垂直方向進(jìn)行隨機(jī)翻轉(zhuǎn)。
mindspore.dataset.vision.Rescale
基于給定的縮放
和平移
因子調(diào)整圖像的像素大小。
mindspore.dataset.vision.Resize
對(duì)輸入圖像使用給定的尺寸mindspore.dataset.vision.Inter
插值方式去調(diào)整為給定的尺寸大小。
mindspore.dataset.vision.ResizedCrop
裁切輸入圖像的指定區(qū)域并放縮到指定尺寸大小。
mindspore.dataset.vision.ResizeWithBBox
將輸入圖像調(diào)整為給定的尺寸大小并相應(yīng)地調(diào)整邊界框的大小。
mindspore.dataset.vision.RgbToHsv
將輸入的RGB格式numpy.ndarray圖像轉(zhuǎn)換為HSV格式。
mindspore.dataset.vision.Rotate
將輸入圖像旋轉(zhuǎn)指定的度數(shù)。
mindspore.dataset.vision.SlicePatches
在水平和垂直方向上將Tensor切片為多個(gè)塊。
mindspore.dataset.vision.Solarize
通過(guò)反轉(zhuǎn)閾值內(nèi)的所有像素值,對(duì)輸入圖像進(jìn)行曝光。
mindspore.dataset.vision.TenCrop
在輸入PIL圖像的中心與四個(gè)角處分別裁剪指定尺寸大小的子圖,并將其翻轉(zhuǎn)圖一并返回。
mindspore.dataset.vision.ToNumpy
將輸入PIL圖像轉(zhuǎn)換為numpy.ndarray
圖像。
mindspore.dataset.vision.ToPIL
將 numpy.ndarray 格式的解碼圖像轉(zhuǎn)換為 PIL.Image.Image
格式的圖像。
mindspore.dataset.vision.ToTensor
將輸入PIL圖像或numpy.ndarray圖像轉(zhuǎn)換為指定類型的numpy.ndarray圖像,圖像的像素值范圍將從[0, 255]
放縮為[0.0, 1.0]
,shape
將從<H, W, C>
調(diào)整為<C, H, W>
。
mindspore.dataset.vision.ToType
將輸入轉(zhuǎn)換為指定的MindSpore數(shù)據(jù)類型或NumPy數(shù)據(jù)類型。
mindspore.dataset.vision.TrivialAugmentWide
對(duì)輸入圖像應(yīng)用TrivialAugmentWide
數(shù)據(jù)增強(qiáng)方法。
mindspore.dataset.vision.UniformAugment
從指定序列中均勻采樣一批數(shù)據(jù)處理操作,并按順序隨機(jī)執(zhí)行,即采樣出的操作也可能不被執(zhí)行。
mindspore.dataset.vision.VerticalFlip
對(duì)輸入圖像進(jìn)行垂直翻轉(zhuǎn)。
二、實(shí)踐mindspore.dataset.transforms.Compose
寫法:
import mindspore.dataset.transforms as transformscomposed = transforms.Compose([vision.Rescale(1.0 / 255.0, 0),vision.Normalize(mean=(0.1307,), std=(0.3081,)),vision.HWC2CHW()]
)
應(yīng)用實(shí)踐:手寫數(shù)字Mnist數(shù)據(jù)集為例
# Begin to show your code!
# Download data from open datasets
import numpy as np
from PIL import Image
import mindspore
from mindspore import nn
from mindspore.dataset import MnistDataset, GeneratorDataset, transforms, vision, text
from download import download
from mindvision.dataset import Mnisturl = "https://mindspore-website.obs.cn-north-4.myhuaweicloud.com/" \"notebook/datasets/MNIST_Data.zip"
# 運(yùn)行過(guò)一次,后面就可注釋download語(yǔ)句
path = download(url, "./", kind="zip", replace=True)
train_dataset = MnistDataset('MNIST_Data/train')
test_dataset = MnistDataset('MNIST_Data/test')
print(train_dataset.get_col_names())# MindSpore的dataset使用數(shù)據(jù)處理流水線(Data Processing Pipeline)
def datapipe(dataset, batch_size):image_transforms = [vision.Rescale(1.0 / 255.0, 0),vision.Normalize(mean=(0.1307,), std=(0.3081,)),vision.HWC2CHW()]label_transform = transforms.TypeCast(mindspore.int32)dataset = dataset.map(image_transforms, 'image')dataset = dataset.map(label_transform, 'label')dataset = dataset.batch(batch_size)return datasetdef my_tokenizer(content):return content.split()composed = transforms.Compose([vision.Rescale(1.0 / 255.0, 0),vision.Normalize(mean=(0.1307,), std=(0.3081,)),vision.HWC2CHW()]
)# Map vision transforms and batch dataset
train_dataset = datapipe(train_dataset, 64)
test_dataset = datapipe(test_dataset, 64)if __name__ == "__main__":train_dataset = MnistDataset('MNIST_Data/train')train_dataset = train_dataset.map(composed, 'image')image, label = next(train_dataset.create_tuple_iterator())print(image.shape)for image, label in test_dataset.create_tuple_iterator():print(f"Shape of image [N, C, H, W]: {image.shape} {image.dtype}")print(f"Shape of label: {label.shape} {label.dtype}")break