欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

transforms.Compose()函數(shù)的使用及說明

 更新時間:2023年08月03日 09:06:28   作者:HealthScience  
這篇文章主要介紹了transforms.Compose()函數(shù)的使用及說明,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

transforms.Compose()函數(shù)的使用

torchvision.transforms是pytorch中的圖像預處理包。

一般用Compose把多個步驟整合到一起

比如說:

transforms.Compose([
    transforms.CenterCrop(10),
    transforms.ToTensor(),
])

這樣就把兩個步驟整合到了一起。

介紹transforms中的函數(shù)

Resize把給定的圖片resize到given size
Normalize用均值和標準差歸一化張量圖像
ToTensorconvert a PIL image to tensor (H*W*C) in range [0,255] to a torch.Tensor(C*H*W) in the range [0.0,1.0]
CenterCrop在圖片的中間區(qū)域進行裁剪
RandomCrop在一個隨機的位置進行裁剪
FiceCrop把圖像裁剪為四個角和一個中心
RandomResizedCrop將PIL圖像裁剪成任意大小和縱橫比
ToPILImageconvert a tensor to PIL image
RandomHorizontalFlip以0.5的概率水平翻轉給定的PIL圖像
RandomVerticalFlip以0.5的概率豎直翻轉給定的PIL圖像
Grayscale將圖像轉換為灰度圖像
RandomGrayscale將圖像以一定的概率轉換為灰度圖像
ColorJitter隨機改變圖像的亮度對比度和飽和度

備注:Python圖像庫PIL(Python Image Library)是python的第三方圖像處理庫,但是由于其強大的功能與眾多的使用人數(shù),幾乎已經被認為是python官方圖像處理庫了。

實例

經??吹?/p>

transform.ToTensor(),
transform.Normalize((0.5,0.5,0.5),(0.5,0.5,0.5))

那transform.Normalize()是怎么工作的呢?以上面代碼為例,

  • ToTensor()能夠把灰度范圍從0-255變換到0-1之間,
  • 而后面的transform.Normalize()則把0-1變換到(-1,1).

具體地說,對每個通道而言,Normalize執(zhí)行以下操作:image=(image-mean)/std其中mean和std分別通過(0.5,0.5,0.5)和(0.5,0.5,0.5)進行指定。

原來的0-1最小值0則變成(0-0.5)/0.5=-1,而最大值1則變成(1-0.5)/0.5=1. 

transforms.Compose()類詳解:串聯(lián)多個transform操作

torchvision是pytorch的一個圖形庫,它服務于PyTorch深度學習框架的,主要用來構建計算機視覺模型。torchvision.transforms主要是用于常見的一些圖形變換。

以下是torchvision的構成:

  • torchvision.datasets: 一些加載數(shù)據(jù)的函數(shù)及常用的數(shù)據(jù)集接口;
  • torchvision.models: 包含常用的模型結構(含預訓練模型),例如AlexNet、VGG、ResNet等;
  • torchvision.transforms: 常用的圖片變換,例如裁剪、旋轉等;
  • torchvision.utils: 其他的一些有用的方法。

本文的主題是其中的torchvision.transforms.Compose()類。

這個類的主要作用是串聯(lián)多個圖片變換的操作。

這個類的構造很簡單:

class torchvision.transforms.Compose(transforms):
 # Composes several transforms together.
 # Parameters: transforms (list of Transform objects) – list of transforms to compose.
Example # 可以看出Compose里面的參數(shù)實際上就是個列表,而這個列表里面的元素就是你想要執(zhí)行的transform操作。
>>> transforms.Compose([
>>>     transforms.CenterCrop(10),
>>>     transforms.ToTensor(),])

事實上,Compose()類會將transforms列表里面的transform操作進行遍歷。

實現(xiàn)的代碼很簡單:

## 這里對源碼進行了部分截取。
def __call__(self, img):
	for t in self.transforms:	
		img = t(img)
    return img

總結

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

最新評論