transforms.Compose()函數(shù)的使用及說(shuō)明
transforms.Compose()函數(shù)的使用
torchvision.transforms是pytorch中的圖像預(yù)處理包。
一般用Compose把多個(gè)步驟整合到一起:
比如說(shuō):
transforms.Compose([ transforms.CenterCrop(10), transforms.ToTensor(), ])
這樣就把兩個(gè)步驟整合到了一起。
介紹transforms中的函數(shù)
Resize | 把給定的圖片resize到given size |
Normalize | 用均值和標(biāo)準(zhǔn)差歸一化張量圖像 |
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ū)域進(jìn)行裁剪 |
RandomCrop | 在一個(gè)隨機(jī)的位置進(jìn)行裁剪 |
FiceCrop | 把圖像裁剪為四個(gè)角和一個(gè)中心 |
RandomResizedCrop | 將PIL圖像裁剪成任意大小和縱橫比 |
ToPILImage | convert a tensor to PIL image |
RandomHorizontalFlip | 以0.5的概率水平翻轉(zhuǎn)給定的PIL圖像 |
RandomVerticalFlip | 以0.5的概率豎直翻轉(zhuǎn)給定的PIL圖像 |
Grayscale | 將圖像轉(zhuǎn)換為灰度圖像 |
RandomGrayscale | 將圖像以一定的概率轉(zhuǎn)換為灰度圖像 |
ColorJitter | 隨機(jī)改變圖像的亮度對(duì)比度和飽和度 |
備注:Python圖像庫(kù)PIL(Python Image Library)是python的第三方圖像處理庫(kù),但是由于其強(qiáng)大的功能與眾多的使用人數(shù),幾乎已經(jīng)被認(rèn)為是python官方圖像處理庫(kù)了。
實(shí)例
經(jīng)??吹?/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).
具體地說(shuō),對(duì)每個(gè)通道而言,Normalize執(zhí)行以下操作:image=(image-mean)/std其中mean和std分別通過(guò)(0.5,0.5,0.5)和(0.5,0.5,0.5)進(jìn)行指定。
原來(lái)的0-1最小值0則變成(0-0.5)/0.5=-1,而最大值1則變成(1-0.5)/0.5=1.
transforms.Compose()類詳解:串聯(lián)多個(gè)transform操作
torchvision
是pytorch的一個(gè)圖形庫(kù),它服務(wù)于PyTorch深度學(xué)習(xí)框架的,主要用來(lái)構(gòu)建計(jì)算機(jī)視覺(jué)模型。torchvision.transforms
主要是用于常見(jiàn)的一些圖形變換。
以下是torchvision
的構(gòu)成:
torchvision.datasets
: 一些加載數(shù)據(jù)的函數(shù)及常用的數(shù)據(jù)集接口;torchvision.models
: 包含常用的模型結(jié)構(gòu)(含預(yù)訓(xùn)練模型),例如AlexNet、VGG、ResNet等;torchvision.transforms
: 常用的圖片變換,例如裁剪、旋轉(zhuǎn)等;torchvision.utils
: 其他的一些有用的方法。
本文的主題是其中的torchvision.transforms.Compose()
類。
這個(gè)類的主要作用是串聯(lián)多個(gè)圖片變換的操作。
這個(gè)類的構(gòu)造很簡(jiǎn)單:
class torchvision.transforms.Compose(transforms): # Composes several transforms together. # Parameters: transforms (list of Transform objects) – list of transforms to compose. Example # 可以看出Compose里面的參數(shù)實(shí)際上就是個(gè)列表,而這個(gè)列表里面的元素就是你想要執(zhí)行的transform操作。 >>> transforms.Compose([ >>> transforms.CenterCrop(10), >>> transforms.ToTensor(),])
事實(shí)上,Compose()
類會(huì)將transforms列表里面的transform操作進(jìn)行遍歷。
實(shí)現(xiàn)的代碼很簡(jiǎn)單:
## 這里對(duì)源碼進(jìn)行了部分截取。 def __call__(self, img): for t in self.transforms: img = t(img) return img
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
自定義Django Form中choicefield下拉菜單選取數(shù)據(jù)庫(kù)內(nèi)容實(shí)例
這篇文章主要介紹了自定義Django Form中choicefield下拉菜單選取數(shù)據(jù)庫(kù)內(nèi)容實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-03-03numpy實(shí)現(xiàn)合并多維矩陣、list的擴(kuò)展方法
今天小編就為大家分享一篇numpy實(shí)現(xiàn)合并多維矩陣、list的擴(kuò)展方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-05-05Pygame實(shí)戰(zhàn)練習(xí)之炸彈人學(xué)院游戲
炸彈人學(xué)院想必是很多人童年時(shí)期的經(jīng)典游戲,我們依舊能記得抱個(gè)老人機(jī)娛樂(lè)的場(chǎng)景,下面這篇文章主要給大家介紹了關(guān)于如何利用python寫一個(gè)簡(jiǎn)單的炸彈人學(xué)院小游戲的相關(guān)資料,需要的朋友可以參考下2021-09-09Python創(chuàng)建普通菜單示例【基于win32ui模塊】
這篇文章主要介紹了Python創(chuàng)建普通菜單,結(jié)合實(shí)例形式分析了Python基于win32ui模塊創(chuàng)建普通菜單及添加菜單項(xiàng)的相關(guān)操作技巧,并附帶說(shuō)明了win32ui模塊的安裝命令,需要的朋友可以參考下2018-05-05python爬蟲(chóng)開(kāi)發(fā)之PyQuery模塊詳細(xì)使用方法與實(shí)例全解
這篇文章主要介紹了python爬蟲(chóng)開(kāi)發(fā)之PyQuery模塊詳細(xì)使用方法與實(shí)例全解,需要的朋友可以參考下2020-03-03Python網(wǎng)絡(luò)編程基于多線程實(shí)現(xiàn)多用戶全雙工聊天功能示例
這篇文章主要介紹了Python網(wǎng)絡(luò)編程基于多線程實(shí)現(xiàn)多用戶全雙工聊天功能,結(jié)合實(shí)例形式分析了Python網(wǎng)絡(luò)編程中使用多線程進(jìn)行多用戶異步通信的原理與相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2018-04-04