数据加载和处理教程
了解如何从非平凡的数据集加载和预处理/扩充数据。
导入包:
from __future__ import print_function ,division
import os
import torch
import pandas as pd
from skimage import io, transform
import numpy as np
import matplotlib.pyplot as plt
from torch.utils.data import Dataset,DataLoader
from torchvision import transforms ,utils
import warnings
快速读取CSV文件,并在(N,2)数组中获取注释
CSV: 逗号分隔值(Comma-Separated Values,CSV,有时也称为字符分隔值,因为分隔字符也可以不是逗号),其文件以纯文本形式存储表格数据(数字和文本)
warnings.filterwarnings("ignore")
plt.ion()
landmarks_frame = pd.read_csv('faces/face_landmarks.csv')
n = 65
img_name = landmarks_frame.iloc[n,0]
# 访问n+1行第二数起所有数
landmarks = landmarks_frame.iloc[n ,1:].as_matrix()
landmarks = landmarks.astype('float').reshape(-1,2)
print('Image name:{}'.format(img_name) )
print('Landmarks shape{}'.format(landmarks.shape))
print('First 4 Landmarks:{}'.format(landmarks[:4]))
OUT:
Image name:person-7.jpg
Landmarks shape(68, 2)
First 4 Landmarks:[[32. 65.]
[33. 76.]
[34. 86.]
[34. 97.]]
一个简单的辅助函数来显示图像及其标记,并用它来显示样本。
def show_landmarks(image,landmarks):
# 展示图像以及标记
plt.imshow(image)
plt.scatter(landmarks[:,0],landmarks[:,1],c='r',markers='.')
plt.pause(0.001)
plt.figure()
plt.show_landmarks(io.imread(os.path.join('faces/')),landmarks)
plt.show()
OUT: