正如我在研究中所读的,我的研究没有必要用相同大小的输入来提供卷积神经网络,因为我们可以将所谓的空间金字塔池应用为一层,以便在获得之前具有相同大小的图像我们的全连接层,我们需要相同大小的输入。我很清楚 但是我完全迷失了如何在有用的数据框或数组中获取输入(在我的情况下为一堆大小不同的图像)...
我知道,如何将一张图片加载到Python。我将这段代码用于获取一张图片的数组:
from PIL import Image
import numpy as np
# Open image and make sure it is RGB - not palette
im = Image.open('C:/Users/tobis/OneDrive/Desktop/Masterarbeit/data/2017-IWT4S-HDR_LP-dataset/crop_h1/I00001.png').convert('RGB')
# Make into Numpy array
na = np.array(im)
# Check shape
print(na.shape)
但是将下一张图片加载到该数组中对我来说已经是一个问题。出现几个问题: 1.数组是处理这些不同大小图像的有用工具吗?还是我需要熊猫数据框或类似的东西? 2.有没有一种方法可以自动将这些图像加载到我的数据框/数组中?
此刻我很困惑,因为我无法想象如何解决此问题,因为我不了解我们如何处理不同大小的图像的加载以及Python如何使用这些图像。希望我的问题或多或少都清楚。
谢谢!
答案 0 :(得分:1)
# example of progressively loading images from file
from keras.preprocessing.image import ImageDataGenerator
# create generator
datagen = ImageDataGenerator()
# prepare an iterators for each dataset
train_it = datagen.flow_from_directory('data/train/', class_mode='binary')
val_it = datagen.flow_from_directory('data/validation/', class_mode='binary')
test_it = datagen.flow_from_directory('data/test/', class_mode='binary')
# confirm the iterator works
batchX, batchy = train_it.next()
print('Batch shape=%s, min=%.3f, max=%.3f' % (batchX.shape, batchX.min(), batchX.max()))
pytorch有DataLoader class。示例:
# normalize data inputs
transform = transforms.Compose([
transforms.ToTensor(), # Transform to tensor
transforms.Normalize((0.5,), (0.5,)) # Min-max scaling to [-1, 1]
])
# load train/test sets
trainset = torchvision.datasets.FashionMNIST(root=data_dir, train=True, download=True, transform=transform)
testset = torchvision.datasets.FashionMNIST(root=data_dir, train=False, download=True, transform=transform)
# define classes
classes = ['T-shirt/top', 'Trouser', 'Pullover', 'Dress', 'Coat', 'Sandal',
'Shirt', 'Sneaker', 'Bag', 'Ankle boot']
# initialize train/test generators
trainloader = torch.utils.data.DataLoader(trainset, batch_size=32, shuffle=True)
testloader = torch.utils.data.DataLoader(testset, batch_size=5, shuffle=False)