国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

pytorch中圖像的數據格式實例

2020-02-15 21:15:53
字體:
來源:轉載
供稿:網友

計算機視覺方面朋友都需要跟圖像打交道,在pytorch中圖像與我們平時在matlab中見到的圖像數據格式有所不同。matlab中我們通常使用函數imread()來輕松地讀入一張圖像,我們在變量空間中可看到數據的存儲方式是H x W x C的順序(其中H、W、C分別表示圖像的高、寬和通道數,通道數一般為RGB三通道),另外,其中的每一個數據都是[0,255]的整數。

在使用pytorch的時候,我們通常要使用pytorch中torchvision包下面的datasets模塊和transforms模塊。而通常情況下在我們使用了這兩個模塊之后,所處理的圖像數據格式已經不是我們所熟知的格式了。

下面按照代碼來進行講解:

#導入需要的包和模塊import torchfrom torchvision import datasets, transformsimport os #transforms指明了需要對原始圖像做何種變換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_dir = 'original_data'image_dataset = datasets.ImageFolder(data_dir, data_transforms)dataloader = torch.utils.data.DataLoader(image_dataset, batch_size=4, shuffle=True, num_workers=4)

代碼中首先使用datasets模塊讀取圖像數據,輸出的圖像類型為PILImage,并且圖像中的每一個數據大小范圍已經不再是[0,255],而是[0,1]。datasets模塊下有好幾個讀取圖像的類,比如CIFAR10、MNIST等能夠直接獲取標準數據庫;而我們代碼中所使用的類是ImageFolder,它能夠讀取本地存放的圖像。其中需要指定圖像所在文件路徑和需要對數據進行的變換。

從上面的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]
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 屏东市| 大荔县| 邛崃市| 武隆县| 丰城市| 东平县| 南阳市| 北碚区| 富宁县| 东乌珠穆沁旗| 广宁县| 霍城县| 大石桥市| 永嘉县| 沅陵县| 商城县| 吉安县| 曲阳县| 临猗县| 闽清县| 松阳县| 牡丹江市| 新郑市| 东至县| 鲁山县| 肥东县| 老河口市| 梁平县| 象州县| 五原县| 清远市| 红河县| 萍乡市| 江西省| 玛多县| 桐庐县| 神木县| 文登市| 宾川县| 洛扎县| 永康市|