校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁 > 知識庫 > PyTorch數據讀取的實現示例

PyTorch數據讀取的實現示例

熱門標簽:原裝電話機器人 千陽自動外呼系統 西藏智能外呼系統五星服務 清遠360地圖標注方法 工廠智能電話機器人 平頂山外呼系統免費 江蘇客服外呼系統廠家 在哪里辦理400電話號碼 400電話申請服務商選什么

前言

PyTorch作為一款深度學習框架,已經幫助我們實現了很多很多的功能了,包括數據的讀取和轉換了,那么這一章節就介紹一下PyTorch內置的數據讀取模塊吧

模塊介紹

  • pandas 用于方便操作含有字符串的表文件,如csv
  • zipfile python內置的文件解壓包
  • cv2 用于圖片處理的模塊,讀入的圖片模塊為BGR,N H W C
  • torchvision.transforms 用于圖片的操作庫,比如隨機裁剪、縮放、模糊等等,可用于數據的增廣,但也不僅限于內置的圖片操作,也可以自行進行圖片數據的操作,這章也會講解
  • torch.utils.data.Dataset torch內置的對象類型
  • torch.utils.data.DataLoader 和Dataset配合使用可以實現數據的加速讀取和隨機讀取等等功能
import zipfile # 解壓
import pandas as pd # 操作數據
import os # 操作文件或文件夾
import cv2 # 圖像操作庫
import matplotlib.pyplot as plt # 圖像展示庫
from torch.utils.data import Dataset # PyTorch內置對象
from torchvision import transforms # 圖像增廣轉換庫 PyTorch內置
import torch 

初步讀取數據

數據下載到此處
我們先初步編寫一個腳本來實現圖片的展示

# 解壓文件到指定目錄
def unzip_file(root_path, filename):
  full_path = os.path.join(root_path, filename)
  file = zipfile.ZipFile(full_path)
  file.extractall(root_path)
unzip_file(root_path, zip_filename)

# 讀入csv文件
face_landmarks = pd.read_csv(os.path.join(extract_path, csv_filename))

# pandas讀出的數據如想要操作索引 使用iloc
image_name = face_landmarks.iloc[:,0]
landmarks = face_landmarks.iloc[:,1:]

# 展示
def show_face(extract_path, image_file, face_landmark):
  plt.imshow(plt.imread(os.path.join(extract_path, image_file)), cmap='gray')
  point_x = face_landmark.to_numpy()[0::2]
  point_y = face_landmark.to_numpy()[1::2]
  plt.scatter(point_x, point_y, c='r', s=6)
  
show_face(extract_path, image_name.iloc[1], landmarks.iloc[1])

使用內置庫來實現

實現MyDataset

使用內置庫是我們的代碼更加的規范,并且可讀性也大大增加
繼承Dataset,需要我們實現的有兩個地方:

  • 實現__len__返回數據的長度,實例化調用len()時返回
  • __getitem__給定數據的索引返回對應索引的數據如:a[0]
  • transform 數據的額外操作時調用
class FaceDataset(Dataset):
  def __init__(self, extract_path, csv_filename, transform=None):
    super(FaceDataset, self).__init__()
    self.extract_path = extract_path
    self.csv_filename = csv_filename
    self.transform = transform
    self.face_landmarks = pd.read_csv(os.path.join(extract_path, csv_filename))
  def __len__(self):
    return len(self.face_landmarks)
  def __getitem__(self, idx):
    image_name = self.face_landmarks.iloc[idx,0]
    landmarks = self.face_landmarks.iloc[idx,1:].astype('float32')
    point_x = landmarks.to_numpy()[0::2]
    point_y = landmarks.to_numpy()[1::2]
    image = plt.imread(os.path.join(self.extract_path, image_name))
    sample = {'image':image, 'point_x':point_x, 'point_y':point_y}
    if self.transform is not None:
      sample = self.transform(sample)
    return sample

測試功能是否正常

face_dataset = FaceDataset(extract_path, csv_filename)
sample = face_dataset[0]
plt.imshow(sample['image'], cmap='gray')
plt.scatter(sample['point_x'], sample['point_y'], c='r', s=2)
plt.title('face')

實現自己的數據處理模塊

內置的在torchvision.transforms模塊下,由于我們的數據結構不能滿足內置模塊的要求,我們就必須自己實現
圖片的縮放,由于縮放后人臉的標注位置也應該發生對應的變化,所以要自己實現對應的變化

class Rescale(object):
  def __init__(self, out_size):
    assert isinstance(out_size,tuple) or isinstance(out_size,int), 'out size isinstance int or tuple'
    self.out_size = out_size
  def __call__(self, sample):
    image, point_x, point_y = sample['image'], sample['point_x'], sample['point_y']
    new_h, new_w = self.out_size if isinstance(self.out_size,tuple) else (self.out_size, self.out_size)
    new_image = cv2.resize(image,(new_w, new_h))
    h, w = image.shape[0:2]
    new_y = new_h / h * point_y
    new_x = new_w / w * point_x
    return {'image':new_image, 'point_x':new_x, 'point_y':new_y}

將數據轉換為torch認識的數據格式因此,就必須轉換為tensor
注意: cv2matplotlib讀出的圖片默認的shape為N H W C,而torch默認接受的是N C H W因此使用tanspose轉換維度,torch轉換多維度使用permute

class ToTensor(object):
  def __call__(self, sample):
    image, point_x, point_y = sample['image'], sample['point_x'], sample['point_y']
    new_image = image.transpose((2,0,1))
    return {'image':torch.from_numpy(new_image), 'point_x':torch.from_numpy(point_x), 'point_y':torch.from_numpy(point_y)}

測試

transform = transforms.Compose([Rescale((1024, 512)), ToTensor()])
face_dataset = FaceDataset(extract_path, csv_filename, transform=transform)
sample = face_dataset[0]
plt.imshow(sample['image'].permute((1,2,0)), cmap='gray')
plt.scatter(sample['point_x'], sample['point_y'], c='r', s=2)
plt.title('face')

使用Torch內置的loader加速讀取數據

data_loader = DataLoader(face_dataset, batch_size=4, shuffle=True, num_workers=0)
for i in data_loader:
  print(i['image'].shape)
  break
torch.Size([4, 3, 1024, 512])

注意: windows環境盡量不使用num_workers會發生報錯

總結

這節使用內置的數據讀取模塊,幫助我們規范代碼,也幫助我們簡化代碼,加速讀取數據也可以加速訓練,數據的增廣可以大大的增加我們的訓練精度,所以本節也是訓練中比較重要環節

到此這篇關于PyTorch數據讀取的實現示例的文章就介紹到這了,更多相關PyTorch數據讀取內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • 關于PyTorch源碼解讀之torchvision.models
  • pytorch實現ResNet結構的實例代碼
  • PyTorch實現ResNet50、ResNet101和ResNet152示例
  • 關于ResNeXt網絡的pytorch實現
  • pytorch教程resnet.py的實現文件源碼分析

標簽:錦州 安慶 日照 天水 西安 白城 隨州 股票

巨人網絡通訊聲明:本文標題《PyTorch數據讀取的實現示例》,本文關鍵詞  PyTorch,數據,讀,取的,實現,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《PyTorch數據讀取的實現示例》相關的同類信息!
  • 本頁收集關于PyTorch數據讀取的實現示例的相關信息資訊供網民參考!
  • 推薦文章
    校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃
    91麻豆精品一区二区三区| 欧美日韩精品三区| 欧美日韩亚洲不卡| 久久午夜国产精品| 亚洲3atv精品一区二区三区| 成人午夜碰碰视频| 欧美成人精精品一区二区频| 亚洲成人中文在线| 91色九色蝌蚪| 中文在线资源观看网站视频免费不卡| 夜夜嗨av一区二区三区中文字幕| 国产成人精品aa毛片| 91精品国产色综合久久| 亚洲女同一区二区| 国产成a人亚洲精品| 欧美精品一区二区三区一线天视频 | 4438x亚洲最大成人网| 亚洲精品写真福利| 99视频有精品| 中文子幕无线码一区tr| 高清在线不卡av| 久久久久久久久久电影| 黑人精品欧美一区二区蜜桃| 日韩精品综合一本久道在线视频| 婷婷夜色潮精品综合在线| 欧美三级资源在线| 亚洲成人在线观看视频| 欧美日韩国产综合一区二区三区 | 欧美不卡一区二区三区| 日韩成人精品在线观看| 欧美乱妇15p| 日本免费在线视频不卡一不卡二| 91精品国产综合久久小美女| 午夜久久久影院| 日韩一级免费观看| 久久超级碰视频| 欧美精品一区二区在线播放 | 免费观看91视频大全| 欧美成人三级在线| 精品中文字幕一区二区 | 欧美一级日韩免费不卡| 蜜臀久久99精品久久久久久9| 日韩欧美成人一区| 国产综合色精品一区二区三区| 久久伊人中文字幕| 99这里只有精品| 性感美女久久精品| 日韩免费看的电影| 国产成人福利片| 一区二区三区欧美亚洲| 欧美日韩国产电影| 韩国毛片一区二区三区| 中文字幕不卡的av| 欧美亚洲综合久久| 久久国产精品99精品国产| 国产欧美日韩一区二区三区在线观看| 成人免费看的视频| 亚洲成人免费在线| 欧美不卡视频一区| 成人av集中营| 天天色天天操综合| 国产精品久久久久影视| 91福利区一区二区三区| 精品无人区卡一卡二卡三乱码免费卡| 国产人伦精品一区二区| 欧美日韩一本到| 国产一区视频在线看| 亚洲免费在线观看视频| 日韩欧美一二三四区| 99久久精品一区二区| 免费观看成人av| 伊人夜夜躁av伊人久久| 久久综合99re88久久爱| 91黄色免费看| 国产剧情av麻豆香蕉精品| 一区二区三区精密机械公司| 久久亚洲私人国产精品va媚药| 色综合久久久久久久久| 国产一区不卡视频| 亚洲gay无套男同| 中文字幕不卡的av| 亚洲精品在线网站| 欧美精品粉嫩高潮一区二区| 99久久国产综合精品色伊| 国产呦萝稀缺另类资源| 亚洲小说欧美激情另类| 最新国产の精品合集bt伙计| 日韩亚洲欧美一区| 欧美在线影院一区二区| 成人午夜视频在线观看| 久久丁香综合五月国产三级网站| 亚洲一区二区三区四区中文字幕| 中文字幕国产精品一区二区| 日韩免费看的电影| 91精品国产综合久久久久久久 | 亚洲国产日韩a在线播放| 国产精品少妇自拍| 久久综合精品国产一区二区三区| 欧美色男人天堂| 91麻豆成人久久精品二区三区| 国产精华液一区二区三区| 久久精品国产一区二区| 午夜精品在线看| 一区二区三区影院| 国产精品毛片高清在线完整版| 26uuu亚洲综合色| 欧美xxxxxxxx| 欧美一级片在线看| 欧美一级片免费看| 91麻豆精品91久久久久同性| 欧美日韩一区二区在线观看 | 欧美草草影院在线视频| 日韩久久久精品| 欧美不卡一区二区| 2021国产精品久久精品| 国产午夜久久久久| 久久精品欧美一区二区三区不卡 | 日韩欧美中文字幕制服| 56国语精品自产拍在线观看| 欧美日韩高清在线| 69堂亚洲精品首页| 91麻豆精品91久久久久久清纯 | 精品一区二区三区在线播放| 韩国av一区二区三区| 国产成人午夜视频| 国产91清纯白嫩初高中在线观看| 成人做爰69片免费看网站| 波多野结衣一区二区三区| 99热精品国产| 日本韩国欧美一区| 欧美日韩国产精品自在自线| 91精品国产日韩91久久久久久| 91精品国产黑色紧身裤美女| 日韩精品一区二区三区在线播放| 欧美v国产在线一区二区三区| 国产亚洲视频系列| 亚洲欧美一区二区三区国产精品| 一区二区三区在线观看国产| 全部av―极品视觉盛宴亚洲| 麻豆极品一区二区三区| 国产乱妇无码大片在线观看| 不卡视频一二三| 欧美日韩一区二区三区四区| 欧美一区二区三区小说| 亚洲国产高清不卡| 亚洲一区二区三区国产| 久久成人av少妇免费| 99久久婷婷国产综合精品| 欧美日韩高清一区二区不卡| 精品国产乱码久久久久久久久| 国产精品毛片久久久久久久| 亚洲成人1区2区| 高清免费成人av| 欧美一二三四在线| 一区在线播放视频| 免费在线看成人av| www.久久精品| 精品嫩草影院久久| 亚洲欧美国产77777| 国产在线播精品第三| 欧美在线三级电影| 国产精品无码永久免费888| 日日摸夜夜添夜夜添亚洲女人| 国产精品一二三四| 在线综合视频播放| 一区二区三区毛片| 丰满岳乱妇一区二区三区| 制服丝袜在线91| 一区二区三区中文字幕在线观看| 国产成人啪午夜精品网站男同| 欧美色图12p| 亚洲视频狠狠干| 国产成人精品影视| 欧美大片免费久久精品三p| 亚洲自拍偷拍图区| 99久久精品免费观看| 国产日产亚洲精品系列| 美国三级日本三级久久99| 欧美三区在线视频| 亚洲激情六月丁香| 99久久精品国产毛片| 国产欧美中文在线| 久久99久久久久久久久久久| 欧美精品在线观看播放| 一区二区三区在线免费| 92精品国产成人观看免费| 欧美国产综合色视频| 国产一区二区三区在线观看免费视频 | 中文字幕一区二区三区四区不卡 | 精品入口麻豆88视频| 亚洲6080在线| 欧美日韩mp4| 亚洲国产美女搞黄色| 在线观看免费一区| 亚洲视频香蕉人妖| 91蜜桃在线免费视频| 国产肉丝袜一区二区| 亚洲欧洲制服丝袜| 国产偷国产偷精品高清尤物 | 国产jizzjizz一区二区|