Pytorch中的圖像增廣transforms類(lèi)和預(yù)處理方法
1.隨機(jī)翻轉(zhuǎn)(水平和垂直)
torchvision.transforms.RandomVerticalFlip
函數(shù)和torchvision.transforms.RandomHorizontalFlip
函數(shù)是兩個(gè)可以實(shí)現(xiàn)數(shù)據(jù)增強(qiáng)的函數(shù),可以將輸入的圖像進(jìn)行隨機(jī)垂直翻轉(zhuǎn)和隨機(jī)水平翻轉(zhuǎn),從而增加數(shù)據(jù)集的多樣性。
具體來(lái)說(shuō),torchvision.transforms.RandomVerticalFlip
函數(shù)可以將輸入圖像在垂直方向上進(jìn)行隨機(jī)翻轉(zhuǎn),而torchvision.transforms.RandomHorizontalFlip
函數(shù)可以將輸入圖像在水平方向上進(jìn)行隨機(jī)翻轉(zhuǎn)。這兩個(gè)函數(shù)都可以通過(guò)設(shè)置參數(shù)來(lái)控制翻轉(zhuǎn)的概率。
下面是這兩個(gè)函數(shù)的使用方法:
import torch import torchvision.transforms as transforms # 定義隨機(jī)垂直翻轉(zhuǎn)和隨機(jī)水平翻轉(zhuǎn)的概率 vflip_probability = 0.5 # 隨機(jī)垂直翻轉(zhuǎn)的概率 hflip_probability = 0.5 # 隨機(jī)水平翻轉(zhuǎn)的概率 # 定義圖像變換 transform = transforms.Compose([ transforms.RandomVerticalFlip(p=vflip_probability), transforms.RandomHorizontalFlip(p=hflip_probability) ])
在上述代碼中,我們首先通過(guò)transforms.Compose
函數(shù)定義了一個(gè)圖像變換的序列,其中包含了隨機(jī)垂直翻轉(zhuǎn)和隨機(jī)水平翻轉(zhuǎn)兩個(gè)操作。
2.隨機(jī)裁剪縮放
torchvision.transforms.RandomResizedCrop
函數(shù)可以進(jìn)行隨機(jī)裁剪和縮放,從而增加數(shù)據(jù)集的多樣性。在實(shí)際使用中,這個(gè)函數(shù)有許多可調(diào)參數(shù),下面是一個(gè)更加完整的介紹:
transforms.RandomResizedCrop( size, # 輸出圖像的大小 scale=(0.08, 1.0), # 縮放范圍,將輸入圖像按照該范圍內(nèi)的隨機(jī)比例縮放 ratio=(3.0/4.0, 4.0/3.0), # 長(zhǎng)寬比范圍,將輸入圖像按照該范圍內(nèi)的隨機(jī)比例進(jìn)行裁剪 interpolation=2 # 縮放時(shí)使用的插值方法,可選1、2、3、4中的一個(gè),默認(rèn)為PIL.Image.BILINEAR )
下面是各個(gè)參數(shù)的詳細(xì)介紹:
size
:輸出圖像的大小,可以是一個(gè)整數(shù),表示輸出圖像的邊長(zhǎng),或者是一個(gè)二元組,表示輸出圖像的寬和高。例如,如果設(shè)置size=224,則輸出圖像的大小為 224 × 224 224\times224 224×224;如果設(shè)置size=(256,192),則輸出圖像的大小為 256 × 192 256\times192 256×192。scale
:縮放范圍,將輸入圖像按照該范圍內(nèi)的隨機(jī)比例縮放。該參數(shù)是一個(gè)二元組,表示縮放比例的范圍,例如(0.08,1.0)表示將輸入圖像縮放到原來(lái)的 0.08 0.08 0.08到 1.0 1.0 1.0倍之間的隨機(jī)比例。默認(rèn)值為(0.08, 1.0)。ratio
:長(zhǎng)寬比范圍,將輸入圖像按照該范圍內(nèi)的隨機(jī)比例進(jìn)行裁剪。該參數(shù)是一個(gè)二元組,表示長(zhǎng)寬比的范圍,例如(3.0/4.0,4.0/3.0)表示將輸入圖像按照寬高比在 3 / 4 3/4 3/4到 4 / 3 4/3 4/3之間的隨機(jī)比例進(jìn)行裁剪。默認(rèn)值為(3.0/4.0, 4.0/3.0)。interpolation
:縮放時(shí)使用的插值方法,可選1、2、3、4中的一個(gè),分別表示PIL.Image.NEAREST、PIL.Image.BILINEAR、PIL.Image.BICUBIC和PIL.Image.LANCZOS。默認(rèn)值為PIL.Image.BILINEAR。
3.隨機(jī)修改顏色(顏色抖動(dòng))
在PyTorch中,torchvision.transforms.RandomColorJitter
函數(shù)可以用于對(duì)圖像進(jìn)行隨機(jī)顏色抖動(dòng),增加數(shù)據(jù)集的多樣性。這個(gè)函數(shù)可以隨機(jī)地改變圖像的亮度、對(duì)比度、飽和度和色相,并且還可以隨機(jī)地進(jìn)行灰度化操作。下面是該函數(shù)的參數(shù):
transforms.RandomColorJitter( brightness=0.1, # 亮度調(diào)整的強(qiáng)度,默認(rèn)值為0.1 contrast=0.1, # 對(duì)比度調(diào)整的強(qiáng)度,默認(rèn)值為0.1 saturation=0.1, # 飽和度調(diào)整的強(qiáng)度,默認(rèn)值為0.1 hue=0.1, # 色相調(diào)整的強(qiáng)度,默認(rèn)值為0.1 p=0.5, # 執(zhí)行顏色抖動(dòng)的概率,默認(rèn)值為0.5 )
下面是各個(gè)參數(shù)的詳細(xì)介紹:
brightness
:亮度調(diào)整的強(qiáng)度。默認(rèn)值為0.1。如果設(shè)置為0,則不進(jìn)行亮度調(diào)整。contrast
:對(duì)比度調(diào)整的強(qiáng)度。默認(rèn)值為0.1。如果設(shè)置為0,則不進(jìn)行對(duì)比度調(diào)整。saturation
:飽和度調(diào)整的強(qiáng)度。默認(rèn)值為0.1。如果設(shè)置為0,則不進(jìn)行飽和度調(diào)整。hue
:色相調(diào)整的強(qiáng)度。默認(rèn)值為0.1。如果設(shè)置為0,則不進(jìn)行色相調(diào)整。p
:執(zhí)行顏色抖動(dòng)的概率。默認(rèn)值為0.5。如果設(shè)置為1,則每個(gè)圖像都會(huì)執(zhí)行顏色抖動(dòng)。
4.將圖像轉(zhuǎn)化為張量
在PyTorch的torchvision
庫(kù)中,ToTensor
函數(shù)是一種將PIL Image或numpy.ndarray格式的圖像轉(zhuǎn)換為PyTorch Tensor格式的函數(shù)。它可以將圖像中的像素值轉(zhuǎn)換為0到1之間的標(biāo)準(zhǔn)化數(shù)值,并調(diào)整圖像的通道順序,使其符合PyTorch模型的輸入要求。
ToTensor
函數(shù)的使用方法如下:
from torchvision.transforms import ToTensor transform = ToTensor()
一般來(lái)說(shuō),在使用Compose
組合在一起的一組transform中,ToTensor
函數(shù)應(yīng)該放在最后一個(gè)位置,以便將圖像轉(zhuǎn)換為PyTorch Tensor格式的圖像,并確保其他所有的transform都在Tensor轉(zhuǎn)換之前完成。
5.標(biāo)準(zhǔn)化操作
在PyTorch的torchvision.transforms
庫(kù)中,Normalize
函數(shù)是一種對(duì)圖像進(jìn)行標(biāo)準(zhǔn)化處理的函數(shù)。它可以將圖像中的像素值進(jìn)行歸一化處理,使得圖像的像素值均值為0,標(biāo)準(zhǔn)差為1,從而增強(qiáng)模型的收斂速度和泛化性能。
Normalize
函數(shù)的使用方法如下:
from torchvision.transforms import Normalize transform = Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225])
在上述代碼中,我們首先導(dǎo)入了Normalize
函數(shù),并創(chuàng)建了一個(gè)名為transform的Normalize對(duì)象。其中,mean
和std
參數(shù)分別代表圖像各通道像素值的平均值和標(biāo)準(zhǔn)差。在這里,我們以ImageNet數(shù)據(jù)集的圖像均值和標(biāo)準(zhǔn)差為例進(jìn)行了設(shè)置。
需要注意的是,Normalize
函數(shù)應(yīng)該在圖像轉(zhuǎn)換為PyTorch Tensor格式之后應(yīng)用,即在ToTensor之后。這是因?yàn)?code>Normalize需要對(duì)每個(gè)通道的像素值進(jìn)行標(biāo)準(zhǔn)化,而ToTensor函數(shù)將圖像中的像素值轉(zhuǎn)換為PyTorch Tensor格式后,每個(gè)通道的像素值將存儲(chǔ)在不同的維度上,因此才需要在ToTensor
之后進(jìn)行標(biāo)準(zhǔn)化處理。
6.同時(shí)結(jié)合多種增廣方法
在PyTorch的torchvision
庫(kù)中,Compose
函數(shù)是一種將多個(gè)數(shù)據(jù)增強(qiáng)操作組合在一起的函數(shù)。它可以將多個(gè)數(shù)據(jù)增強(qiáng)操作按照一定的順序組合在一起,并將它們作為一個(gè)整體應(yīng)用于數(shù)據(jù)集中的每個(gè)樣本。Compose
函數(shù)可以幫助我們方便地實(shí)現(xiàn)復(fù)雜的數(shù)據(jù)增強(qiáng)操作,同時(shí)也可以使我們的代碼更加簡(jiǎn)潔和易讀。
Compose
函數(shù)的使用方法如下:
from torchvision.transforms import Compose from torchvision.transforms import RandomCrop, RandomHorizontalFlip, ToTensor transform = Compose([ RandomCrop(32), RandomHorizontalFlip(), ToTensor() ])
在上述代碼中,我們首先導(dǎo)入了Compose
函數(shù)和其他一些數(shù)據(jù)增強(qiáng)操作,然后創(chuàng)建了一個(gè)名為transform的Compose
對(duì)象。該Compose對(duì)象由三個(gè)數(shù)據(jù)增強(qiáng)操作組成:隨機(jī)裁剪(RandomCrop),隨機(jī)水平翻轉(zhuǎn)(RandomHorizontalFlip)和轉(zhuǎn)換為T(mén)ensor格式(ToTensor)。
到此這篇關(guān)于Pytorch中的圖像增廣和預(yù)處理方法(transforms類(lèi))的文章就介紹到這了,更多相關(guān)Pytorch圖像增廣和預(yù)處理內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Pytorch數(shù)據(jù)讀取與預(yù)處理該如何實(shí)現(xiàn)
- pytorch數(shù)據(jù)預(yù)處理錯(cuò)誤的解決
- 關(guān)于Pytorch的MNIST數(shù)據(jù)集的預(yù)處理詳解
- pytorch 圖像預(yù)處理之減去均值,除以方差的實(shí)例
- Pytorch中transforms.Resize()的簡(jiǎn)單使用
- pytorch 中transforms的使用詳解
- pytorch中的transforms.ToTensor和transforms.Normalize的實(shí)現(xiàn)
- pytorch中的transforms模塊實(shí)例詳解
相關(guān)文章
pycharm專(zhuān)業(yè)版遠(yuǎn)程登錄服務(wù)器的詳細(xì)教程
這篇文章主要介紹了pycharm專(zhuān)業(yè)版遠(yuǎn)程登錄服務(wù)器的詳細(xì)教程,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-09-09Pycharm最全報(bào)錯(cuò)的原因與解決方法總結(jié)(推薦!)
這篇文章主要給大家介紹了關(guān)于Pycharm最全報(bào)錯(cuò)的原因與解決方法的相關(guān)資料,文中記錄了Python各種報(bào)錯(cuò)解釋及處理方法,屬于個(gè)人記錄型,需要的朋友可以參考下2022-07-07Python爬蟲(chóng)實(shí)現(xiàn)搭建代理ip池
這篇文章主要介紹了Python爬蟲(chóng)實(shí)現(xiàn)搭建代理ip池,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下,希望對(duì)你的工作有所幫助2022-06-06python實(shí)現(xiàn)多層感知器MLP(基于雙月數(shù)據(jù)集)
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)多層感知器MLP,基于雙月數(shù)據(jù)集,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-01-01零基礎(chǔ)使用Python讀寫(xiě)處理Excel表格的方法
這篇文章主要介紹了Python讀寫(xiě)處理Excel表格,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-05-05Python跨文件調(diào)用函數(shù)以及在一個(gè)文件中執(zhí)行另一個(gè)文件
這篇文章主要給大家介紹了關(guān)于Python跨文件調(diào)用函數(shù)以及在一個(gè)文件中執(zhí)行另一個(gè)文件的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Python具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2022-12-12用Q-learning算法實(shí)現(xiàn)自動(dòng)走迷宮機(jī)器人的方法示例
這篇文章主要介紹了用Q-learning算法實(shí)現(xiàn)自動(dòng)走迷宮機(jī)器人的方法示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-06-06Python實(shí)現(xiàn)刪除列表首元素的多種方式總結(jié)
在Python中,處理列表的操作是日常開(kāi)發(fā)中不可避免的任務(wù)之一,其中,刪除列表中的元素是一個(gè)常見(jiàn)的需求,本文為大家整理了Python中刪除列表中的第一個(gè)元素的多種方法,需要的可以參考下2023-12-12詳解python如何調(diào)用C/C++底層庫(kù)與互相傳值
Python作為一門(mén)腳本解釋語(yǔ)言,本身又很好的結(jié)合C++,所以使用Python開(kāi)發(fā),在性能要求的地方調(diào)用C/C++底層庫(kù),這簡(jiǎn)直是神器。本文詳細(xì)介紹了Python調(diào)用C/C++底層庫(kù),互相傳值問(wèn)題,下面一起來(lái)看看。2016-08-08Python爬取京東商品信息評(píng)論存并進(jìn)MySQL
這篇文章主要介紹了Python爬取京東商品信息評(píng)論存并進(jìn)MySQL,文章通過(guò)構(gòu)建mysql數(shù)據(jù)表展開(kāi)Python爬取信息存進(jìn)MySQL的內(nèi)容,需要的小伙伴可以參考一下2022-04-04