我正在尝试设计一个神经网络,该神经网络基于5种不同的胶卷来预测照片图像。我总共有5000张图片。 4000培训和1000测试。我已经将图像存储到两个子文件夹中,用于训练和测试数据。
training_dir = r'C:\...\Training Set'
test_dir = r'C:\...\Test Set'
我可以使用skimage io.ImageCollection收集训练图像。
folders = []
for image_path in os.scandir(training_dir):
img = io.ImageCollection(os.path.join(training_dir, image_path, '*.jpg'))
folders.append(img)
然后我根据班级收集训练图像,并应用一个循环将图像数据保存到列表中。
ektachrome = folders[0]
HP5 = folders[1]
LomoP = folders[2]
Trix = folders[3]
velvia = folders[4]
images = []
for i in range(0, 800):
ekta = ektachrome[i]
images.append(ekta)
hp5 = HP5[i]
images.append(hp5)
lomo = LomoP[i]
images.append(lomo)
trix = Trix[i]
images.append(trix)
Velvia = velvia[i]
images.append(Velvia)
将训练图像列表放入数组np.asarray(images).shape
中时,得到的形状为(4000,)。我在标注数据时遇到麻烦。这是我的标签。
label = {'Ektachrome':1, 'HP5':2, 'Lomochrome Purple':3, 'Tri-X':4, 'Velvia 50':5}
如何标记图像?
答案 0 :(得分:0)
根据我的理解
您的图像应根据类别名称进行分类,如下所示(因为您提到了Folders[0]
,Folders[1]
等。),
在这种情况下,您可以使用以下代码标记图像。
Ektachrome_dir = train_dir / 'Ektachrome'
HP5_dir = train_dir / 'HP5'
Lomochrome_Purple_dir = train_dir / 'Lomochrome Purple'
Tri_X_dir = train_dir / 'Tri-X'
Velvia_50_dir = train_dir / 'Velvia 50'
# Get the list of all the images
Ektachrome_Images = Ektachrome_dir.glob('*.jpeg')
HP5_Images = HP5_dir.glob('*.jpeg')
Lomochrome_Purple_Images = Lomochrome_Purple_dir.glob('*.jpeg')
Tri_X_Images = Tri_X_dir.glob('*.jpeg')
Velvia_50_Images = Velvia_50_dir.glob('*.jpeg')
# An empty list. We will insert the data into this list in (img_path, label) format
train_data = []
for img in Ektachrome_Images:
train_data.append((img,1))
for img in HP5_Images:
train_data.append((img, 2))
for img in Lomochrome_Purple_Images:
train_data.append((img, 3))
for img in Tri_X_Images:
train_data.append((img, 4))
for img in Velvia_50_Images:
train_data.append((img, 5))
请让我知道如何进行。谢谢!