Я строю CNN для распознавания листьев.
Я использую этот набор данных: набор данных leafnsap
Столько, сколько у меня нет проблем с загрузкой изображений и преобразованием их в массив np и построением модели с помощью Keras.
У меня есть некоторые трудности при построении матрицы значений.
Эта матрица должна иметь следующий размер: [количество изображений] [количество меток]
И каждая позиция [i] [j] равна 1, если изображение в позиции i имеет ту же метку, что и матрица меток в позиции j.
0 иначе
Вот как выглядит файл txt (csv):
данные
Вот код:
#imports
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import cv2
import tensorflow as tf
from tensorflow import keras
#loading and visualization of the data
path_to_txt = "D:\DevData\lato_project\leafsnap-dataset\leafsnap-dataset-
images_improved.txt"
df = pd.read_csv(path_to_txt ,sep='\t')
arr = np.array(df)
print(arr.shape)
печать: (30866, 4)
images = []
labels = []
for row in arr:
if "lab" in row[0]:
pass #nothing
else:
if row[2] in labels:
pass #nothing
else:
labels.append(row[2])
print(len(labels))
печать: 181 (это количество разных видов)
#values is supposed to be a [7524][181] binary matrix for the training of the cnn
for row in arr:
if "lab" in row[0]:
pass
else:
img = cv2.imread("leafsnap-dataset/" + row[0])
img = cv2.resize(img,(260,200))
images.append(img)
values = np.zeros([len(imges), len(labels)])
На данный момент я не могу найти, как выполнить эту простую операцию. Спасибо за помощь.