激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

腳本之家,腳本語言編程技術(shù)及教程分享平臺!
分類導(dǎo)航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務(wù)器之家 - 腳本之家 - Python - Pytorch 實現(xiàn)數(shù)據(jù)集自定義讀取

Pytorch 實現(xiàn)數(shù)據(jù)集自定義讀取

2020-04-14 10:26_寒潭雁影 Python

今天小編就為大家分享一篇Pytorch 實現(xiàn)數(shù)據(jù)集自定義讀取,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

以讀取VOC2012語義分割數(shù)據(jù)集為例,具體見代碼注釋:

VocDataset.py

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
from PIL import Image
import torch
import torch.utils.data as data
import numpy as np
import os
import torchvision
import torchvision.transforms as transforms
import time
 
#VOC數(shù)據(jù)集分類對應(yīng)顏色標(biāo)簽
VOC_COLORMAP = [[0, 0, 0], [128, 0, 0], [0, 128, 0], [128, 128, 0],
        [0, 0, 128], [128, 0, 128], [0, 128, 128], [128, 128, 128],
        [64, 0, 0], [192, 0, 0], [64, 128, 0], [192, 128, 0],
        [64, 0, 128], [192, 0, 128], [64, 128, 128], [192, 128, 128],
        [0, 64, 0], [128, 64, 0], [0, 192, 0], [128, 192, 0],
        [0, 64, 128]]
 
#顏色標(biāo)簽空間轉(zhuǎn)到序號標(biāo)簽空間,就他媽這里浪費巨量的時間,這里還他媽的有問題
def voc_label_indices(colormap, colormap2label):
  """Assign label indices for Pascal VOC2012 Dataset."""
  idx = ((colormap[:, :, 2] * 256 + colormap[ :, :,1]) * 256+ colormap[:, :,0])
  #out = np.empty(idx.shape, dtype = np.int64)
  out = colormap2label[idx]
  out=out.astype(np.int64)#數(shù)據(jù)類型轉(zhuǎn)換
  end = time.time()
  return out
 
class MyDataset(data.Dataset):#創(chuàng)建自定義的數(shù)據(jù)讀取類
  def __init__(self, root, is_train, crop_size=(320,480)):
    self.rgb_mean =(0.485, 0.456, 0.406)
    self.rgb_std = (0.229, 0.224, 0.225)
    self.root=root
    self.crop_size=crop_size
    images = []#創(chuàng)建空列表存文件名稱
    txt_fname = '%s/ImageSets/Segmentation/%s' % (root, 'train.txt' if is_train else 'val.txt')
    with open(txt_fname, 'r') as f:
      self.images = f.read().split()
    #數(shù)據(jù)名稱整理
    self.files = []
    for name in self.images:
      img_file = os.path.join(self.root, "JPEGImages/%s.jpg" % name)
      label_file = os.path.join(self.root, "SegmentationClass/%s.png" % name)
      self.files.append({
        "img": img_file,
        "label": label_file,
        "name": name
      })
    self.colormap2label = np.zeros(256**3)
    #整個循環(huán)的意思就是將顏色標(biāo)簽映射為單通道的數(shù)組索引
    for i, cm in enumerate(VOC_COLORMAP):
      self.colormap2label[(cm[2] * 256 + cm[1]) * 256 + cm[0]] = i
  #按照索引讀取每個元素的具體內(nèi)容
  def __getitem__(self, index):
    
    datafiles = self.files[index]
    name = datafiles["name"]
    image = Image.open(datafiles["img"])
    label = Image.open(datafiles["label"]).convert('RGB')#打開的是PNG格式的圖片要轉(zhuǎn)到rgb的格式下,不然結(jié)果會比較要命
    #以圖像中心為中心截取固定大小圖像,小于固定大小的圖像則自動填0
    imgCenterCrop = transforms.Compose([
       transforms.CenterCrop(self.crop_size),
       transforms.ToTensor(),
       transforms.Normalize(self.rgb_mean, self.rgb_std),#圖像數(shù)據(jù)正則化
     ])
    labelCenterCrop = transforms.CenterCrop(self.crop_size)
    cropImage=imgCenterCrop(image)
    croplabel=labelCenterCrop(label)
    croplabel=torch.from_numpy(np.array(croplabel)).long()#把標(biāo)簽數(shù)據(jù)類型轉(zhuǎn)為torch
    
    #將顏色標(biāo)簽圖轉(zhuǎn)為序號標(biāo)簽圖
    mylabel=voc_label_indices(croplabel, self.colormap2label)
    
    return cropImage,mylabel
  #返回圖像數(shù)據(jù)長度
  def __len__(self):
    return len(self.files)

Train.py

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
import matplotlib.pyplot as plt
import torch.utils.data as data
import torchvision.transforms as transforms
import numpy as np
 
from PIL import Image
from VocDataset import MyDataset
 
#VOC數(shù)據(jù)集分類對應(yīng)顏色標(biāo)簽
VOC_COLORMAP = [[0, 0, 0], [128, 0, 0], [0, 128, 0], [128, 128, 0],
        [0, 0, 128], [128, 0, 128], [0, 128, 128], [128, 128, 128],
        [64, 0, 0], [192, 0, 0], [64, 128, 0], [192, 128, 0],
        [64, 0, 128], [192, 0, 128], [64, 128, 128], [192, 128, 128],
        [0, 64, 0], [128, 64, 0], [0, 192, 0], [128, 192, 0],
        [0, 64, 128]]
 
root='../data/VOCdevkit/VOC2012'
train_data=MyDataset(root,True)
trainloader = data.DataLoader(train_data, 4)
 
#從數(shù)據(jù)集中拿出一個批次的數(shù)據(jù)
for i, data in enumerate(trainloader):
  getimgs, labels= data
  img = transforms.ToPILImage()(getimgs[0])
 
  labels = labels.numpy()#tensor轉(zhuǎn)numpy
  labels=labels[0]#獲得批次標(biāo)簽集中的一張標(biāo)簽圖像
  labels = labels.transpose((1,0))#數(shù)組維度切換,將第1維換到第0維,第0維換到第1維
 
  ##將單通道索引標(biāo)簽圖片映射回顏色標(biāo)簽圖片
  newIm= Image.new('RGB', (480, 320))#創(chuàng)建一張與標(biāo)簽大小相同的圖片,用以顯示標(biāo)簽所對應(yīng)的顏色
  for i in range(0, 480):
    for j in range(0, 320):
      sele=labels[i][j]#取得坐標(biāo)點對應(yīng)像素的值
      newIm.putpixel((i, j), (int(VOC_COLORMAP[sele][0]), int(VOC_COLORMAP[sele][1]), int(VOC_COLORMAP[sele][2])))
 
  #顯示圖像和標(biāo)簽
  plt.figure("image")
  ax1 = plt.subplot(1,2,1)
  ax2 = plt.subplot(1,2,2)
  plt.sca(ax1)
  plt.imshow(img)
  plt.sca(ax2)
  plt.imshow(newIm)
  plt.show()

以上這篇Pytorch 實現(xiàn)數(shù)據(jù)集自定義讀取就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持服務(wù)器之家。

原文鏈接:https://blog.csdn.net/weixinhum/article/details/86232734

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25
主站蜘蛛池模板: 久久免费视频在线 | 精品在线免费播放 | 国产精品免费观在线 | 国产精品久久久久久久久久久久久久久 | 国产91亚洲精品一区二区三区 | 亚洲爱爱网站 | 最新福利在线 | 99re66热这里只有精品8 | 久久精品美乳 | 国产亚洲福利 | 欧美videofree性欧美另类 | 在线观看国产免费视频 | 91视频完整版 | 91精品国产一区二区三区四区在线 | 国产男女爽爽爽爽爽免费视频 | 色婷婷久久久亚洲一区二区三区 | 中文字幕观看 | h视频在线观看免费 | 色播视频网站 | 国产成人强伦免费视频网站 | 国产精品片一区二区三区 | 免费毛片免费看 | 中国av一级片 | 斗破苍穹在线观看免费完整观看 | 黄色免费在线网站 | 国产精品免费大片 | 欧美中文在线 | 久久综合给合久久狠狠狠97色69 | 日本一级黄色大片 | 久久sp| 久久国产精品无码网站 | 欧洲成人一区二区 | 国产亚洲自拍一区 | 调教小男生抽打尿孔嗯啊视频 | 免费a级网站 | 万圣街在线观看免费完整版 | 日操操夜操操 | 国产乱淫av一区二区三区 | 亚洲爱爱网站 | 97久色 | 亚洲午夜在线视频 |