transforms.Compose()函數(shù)的使用及說明
transforms.Compose()函數(shù)的使用
torchvision.transforms是pytorch中的圖像預處理包。
一般用Compose把多個步驟整合到一起:
比如說:
transforms.Compose([ transforms.CenterCrop(10), transforms.ToTensor(), ])
這樣就把兩個步驟整合到了一起。
介紹transforms中的函數(shù)
Resize | 把給定的圖片resize到given size |
Normalize | 用均值和標準差歸一化張量圖像 |
ToTensor | convert 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圖像裁剪成任意大小和縱橫比 |
ToPILImage | convert 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
總結
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
自定義Django Form中choicefield下拉菜單選取數(shù)據(jù)庫內容實例
這篇文章主要介紹了自定義Django Form中choicefield下拉菜單選取數(shù)據(jù)庫內容實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-03-03Python創(chuàng)建普通菜單示例【基于win32ui模塊】
這篇文章主要介紹了Python創(chuàng)建普通菜單,結合實例形式分析了Python基于win32ui模塊創(chuàng)建普通菜單及添加菜單項的相關操作技巧,并附帶說明了win32ui模塊的安裝命令,需要的朋友可以參考下2018-05-05python爬蟲開發(fā)之PyQuery模塊詳細使用方法與實例全解
這篇文章主要介紹了python爬蟲開發(fā)之PyQuery模塊詳細使用方法與實例全解,需要的朋友可以參考下2020-03-03Python網絡編程基于多線程實現(xiàn)多用戶全雙工聊天功能示例
這篇文章主要介紹了Python網絡編程基于多線程實現(xiàn)多用戶全雙工聊天功能,結合實例形式分析了Python網絡編程中使用多線程進行多用戶異步通信的原理與相關實現(xiàn)技巧,需要的朋友可以參考下2018-04-04