Pytorch實(shí)戰(zhàn)之?dāng)?shù)據(jù)加載和處理詳解
Pytorch提供了許多工具來簡化和希望數(shù)據(jù)加載,使代碼更具可讀性。這里將專門講述transforms數(shù)據(jù)預(yù)處理方法,即數(shù)據(jù)增強(qiáng)。
數(shù)據(jù)增強(qiáng)又稱為數(shù)據(jù)增廣、數(shù)據(jù)擴(kuò)增,它是對(duì)訓(xùn)練集進(jìn)行變換,使訓(xùn)練集更豐富,從而讓模型更具泛化能力。
# 在進(jìn)行下面代碼學(xué)習(xí)前需要安裝torchvision==0.8.2 !pip install torchvision==0.8.2 --user
from PIL import Image from torchvision import transforms as T import torch as t to_tensor = T.ToTensor() to_pil = T.ToPILImage() cat = Image.open('./cat.jpeg')
transforms——Crop
# torchvision.transforms.CenterCrop transforms = T.Compose([T.Resize(224),T.CenterCrop(224),T.ToTensor()]) # Resize:縮放 cat_t = transforms(cat) # 傳入transforms中的數(shù)據(jù)是PIL數(shù)據(jù),lena_t為tensor cat_t.shape # 3*224*224 ; 當(dāng)T.CenterCrop()的參數(shù)大于T.Resize()的參數(shù)時(shí),周圍用0填充 to_pil(cat_t)
# torchvision.transforms.RandomCrop transforms = T.Compose([T.Resize(224),T.RandomCrop(224, padding=(16, 64)),T.ToTensor()]) # Resize:縮放 cat_t = transforms(cat) # 傳入transforms中的數(shù)據(jù)是PIL數(shù)據(jù),lena_t為tensor cat_t.shape # 3*224*224 ; 當(dāng)T.CenterCrop()的參數(shù)大于T.Resize()的參數(shù)時(shí),周圍用0填充 to_pil(cat_t)
transforms——Flip
# torchvision.transforms.RandomHorizontalFlip transforms = T.Compose([T.Resize(224),T.RandomHorizontalFlip(p=0.5),T.ToTensor()]) # Resize:縮放 cat_t = transforms(cat) # 傳入transforms中的數(shù)據(jù)是PIL數(shù)據(jù),lena_t為tensor cat_t.shape # 3*224*224 ; 當(dāng)T.CenterCrop()的參數(shù)大于T.Resize()的參數(shù)時(shí),周圍用0填充 to_pil(cat_t)
# torchvision.transforms.RandomRotation transforms = T.Compose([T.Resize(224),T.RandomRotation(30, center=(0, 0), expand=True),T.ToTensor()]) # Resize:縮放 cat_t = transforms(cat) # 傳入transforms中的數(shù)據(jù)是PIL數(shù)據(jù),lena_t為tensor cat_t.shape # 3*224*224 ; 當(dāng)T.CenterCrop()的參數(shù)大于T.Resize()的參數(shù)時(shí),周圍用0填充 to_pil(cat_t)
圖像變換
transforms的操作
自定義transforms
自定義transforms要素:
1.僅接收一個(gè)參數(shù),返回一個(gè)參數(shù)
2.注意上下游的輸出與輸入
class Compose(object): def __call__(self, img): for t in transforms: img = t(img) return img
通過類實(shí)現(xiàn)多參數(shù)傳入:
class YourTransforms(object): def __init__(self, transforms): self.transforms = transforms def __call__(self, img): for t in self.transforms: img = t(img) return img
椒鹽噪聲又稱為脈沖噪聲,是一種隨機(jī)出現(xiàn)的白點(diǎn)或者黑點(diǎn),白點(diǎn)稱為鹽噪聲,黑色為椒噪聲。
信噪比(Signal-Noise Rate,SNR)是衡量噪聲的比例,圖像中為圖像像素的占比。
class AddPepperNoise(object): def __init__(self, snr, p): self.snr = snr self.p = p def __call__(self, img): # 添加椒鹽噪聲具體實(shí)現(xiàn)過程 img = None return img
transforms方法
到此這篇關(guān)于Pytorch實(shí)戰(zhàn)之?dāng)?shù)據(jù)加載和處理詳解的文章就介紹到這了,更多相關(guān)Pytorch數(shù)據(jù)加載內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
pytorch MSELoss計(jì)算平均的實(shí)現(xiàn)方法
這篇文章主要介紹了pytorch MSELoss計(jì)算平均的實(shí)現(xiàn)方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2021-05-05python批量實(shí)現(xiàn)Word文件轉(zhuǎn)換為PDF文件
這篇文章主要為大家詳細(xì)介紹了python批量實(shí)現(xiàn)Word文件轉(zhuǎn)換為PDF文件的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-03-03