如何标记CNN的训练数据?

时间:2019-11-12 18:33:04

标签: python numpy tensorflow conv-neural-network

我正在尝试设计一个神经网络,该神经网络基于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}

如何标记图像?

1 个答案:

答案 0 :(得分:0)

根据我的理解

您的图像应根据类别名称进行分类,如下所示(因为您提到了Folders[0]Folders[1]等。),

enter image description here

在这种情况下,您可以使用以下代码标记图像。

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))

请让我知道如何进行。谢谢!