transforms.Compose()函數(shù)的使用及說明
transforms.Compose()函數(shù)的使用
torchvision.transforms是pytorch中的圖像預(yù)處理包。
一般用Compose把多個(gè)步驟整合到一起:
比如說:
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圖像庫PIL(Python Image Library)是python的第三方圖像處理庫,但是由于其強(qiáng)大的功能與眾多的使用人數(shù),幾乎已經(jīng)被認(rèn)為是python官方圖像處理庫了。
實(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).
具體地說,對(duì)每個(gè)通道而言,Normalize執(zhí)行以下操作:image=(image-mean)/std其中mean和std分別通過(0.5,0.5,0.5)和(0.5,0.5,0.5)進(jìn)行指定。
原來的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è)圖形庫,它服務(wù)于PyTorch深度學(xué)習(xí)框架的,主要用來構(gòu)建計(jì)算機(jī)視覺模型。torchvision.transforms主要是用于常見的一些圖形變換。
以下是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的模型和公用函數(shù)中使用惰性翻譯對(duì)象
這篇文章主要介紹了在Django的模型和公用函數(shù)中使用惰性翻譯對(duì)象,Django是豐富多彩的Python框架中人氣最高的一個(gè),需要的朋友可以參考下2015-07-07
詳解python腳本自動(dòng)生成需要文件實(shí)例代碼
這篇文章主要介紹了詳解python腳本自動(dòng)生成需要文件實(shí)例代碼的相關(guān)資料,需要的朋友可以參考下2017-02-02
python mqtt 客戶端的實(shí)現(xiàn)代碼實(shí)例
這篇文章主要介紹了python mqtt 客戶端代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-09-09
python3中bytes數(shù)據(jù)類型的具體使用
bytes類型是python3引入的,本文就來介紹一下python3中bytes數(shù)據(jù)類型的具體使用,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2024-12-12
Python機(jī)器學(xué)習(xí)之scikit-learn庫中KNN算法的封裝與使用方法
這篇文章主要介紹了Python機(jī)器學(xué)習(xí)之scikit-learn庫中KNN算法的封裝與使用方法,結(jié)合實(shí)例形式分析了scikit-learn庫中KNN算法的相關(guān)調(diào)用與使用技巧,需要的朋友可以參考下2018-12-12
Python內(nèi)置函數(shù)的用法實(shí)例教程
這篇文章主要介紹了Python內(nèi)置函數(shù)的用法,包括求絕對(duì)值的abs()函數(shù)及數(shù)值類型轉(zhuǎn)換函數(shù)等,需要的朋友可以參考下2014-09-09
vue防止用戶連續(xù)點(diǎn)擊造成多次提交的三種解決方法
本文主要介紹了vue防止用戶連續(xù)點(diǎn)擊造成多次提交的三種解決方法,文中通過示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2024-03-03

