Обработка изображений - Назначение одной метки горячего кодирования массиву изображений для обучения - PullRequest
0 голосов
/ 13 октября 2018

Я слежу за этим руководством по CNTK, примененным к моим собственным данным.

У меня есть набор данных, состоящий из 2 изображений на одно наблюдение, и у меня есть метки поездов, хранящиеся в формате CSV, какthis:

id,appliance
1000,8
1001,1
1002,8
1003,1

Метка одинакова для обоих из двух изображений, которые я получаю за наблюдение.Если я возьму только одно из двух изображений и сохраню их в массиве, я получу массив формы (988, 128, 118), а метки csv, преобразованные в массив, будут иметь форму (988, 2), чтоможно сопоставить каждую метку с изображением.

Вопрос в том, что теперь, когда я решил взять все изображения, которые у меня есть (по 2 на наблюдение вместо одного), теперь у меня есть массив изображений (1976, 128, 118) но мой массив меток все еще (988, 2), назначение меток не будет работать из-за длины меток.Как мне решить эту проблему ??

Чтобы назначить метку, я использую эту функцию, которая назначает метку для каждого 15104 пикселя:

# Save the data files into a format compatible with CNTK text reader
def savetxt(filename, data, hasLabels=True, labels=0):
    dir = os.path.dirname(filename)

    if not os.path.exists(dir):
        os.makedirs(dir)

    print("Saving", filename )
    with open(filename, 'w') as f:
        print("opened....")
        labels_ohe = list(map(' '.join, np.eye(11, dtype=np.uint).astype(str))) #for one hot encoding
        index = 0
        for row in data:            
            row_str = row.astype(str)
            if hasLabels:                               
                label_str = labels_ohe[int(labels[index])]               

            feature_str = ' '.join(row_str)

            if hasLabels:
                f.write('|labels {} |features {}\n'.format(label_str, feature_str))
            else:
                f.write('|features {}\n'.format(feature_str))

            index = index + 1 

Любая помощьвысоко ценитсяЗаранее спасибо.

1 Ответ

0 голосов
/ 14 октября 2018

Файл карты в cntk определен как:

file_path_to_image, class_label
D:/image1.jpg, 1
D:/image2.jpg, 2
D:/image3.jpg, 1
D:/image4,jpg, 0

Вы можете создать файл карты для всего набора данных, сколько бы у вас ни было наблюдений.

В качестве альтернативы, если ваш исходный массив изображенийи массив меток уже соответствует первой оси (ось пакета).Тогда укладка их на себя сохранит соответствие по первой оси.

...