1. 程式人生 > 程式設計 >pytorch中的transforms模組例項詳解

pytorch中的transforms模組例項詳解

pytorch中的transforms模組中包含了很多種對影象資料進行變換的函式,這些都是在我們進行影象資料讀入步驟中必不可少的,下面我們講解幾種最常用的函式,詳細的內容還請參考pytorch官方文件(放在文末)。

data_transforms = transforms.Compose([
    transforms.RandomResizedCrop(224),transforms.RandomHorizontalFlip(),transforms.ToTensor(),transforms.Normalize([0.485,0.456,0.406],[0.229,0.224,0.225])
  ])

從上面的data_transforms變數中我們能夠看出進行了多種變換,而Compose方法是將多種變換組合起來。data_transforms中一共包含了四個變換,前兩個是對PILImage進行的,分別對其進行隨機大小(預設原始影象大小的0.08-1.0)和隨機寬高比(預設原始影象寬高比的3/4-4/3)的裁剪,之後resize到指定大小224;以及對原始影象進行隨機(預設0.5概率)的水平翻轉。

第三個transforms.ToTensor()的變換操作是關鍵一步,它將PILImage轉變為torch.FloatTensor的資料形式,這種資料形式一定是C x H x W的影象格式加上[0,1]的大小範圍。它將顏色通道這一維從第三維變換到了第一維。

最後的Normalize變換是對tensor這種資料格式進行的,它的操作是用給定的均值和標準差分別對每個通道的資料進行正則化。具體來說,給定均值(M1,...,Mn),給定標準差(S1,..,Sn),其中n是通道數(一般是3),對每個通道進行如下操作:

output[channel] = (input[channel] - mean[channel]) / std[channel]

最後需要強調一點的是,這幾個變換的先後順序有一定的講究,因為不同的方法所處理的物件不一樣,前兩種變換是對PILImage進行的,而Normalize則是對tensor進行的,所以處理PILImage的變換方法(大多數方法)都需要放在ToTensor方法之前,而處理tensor的方法(比如Normalize方法)就要放在ToTensor方法之後。

附上pytorch官方參考:https://pytorch.org/docs/stable/torchvision/transforms.html?highlight=torchvision%20transforms

以上這篇pytorch中的transforms模組例項詳解就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援我們。