Мой учебный проект заключается в разработке нейронной сети для распознавания текста на номерных знаках. Поэтому я нашел набор данных ReId на https://medusa.fit.vutbr.cz/traffic/research-topics/general-traffic-analysis/holistic-recognition-of-low-quality-license-plates-by-cnn-using-track-annotated-data-iwt4s-avss-2017/. Этот набор данных содержит набор изображений номерных знаков, а также текст номерных знаков и использовался Spanhel et al. для аналогичного подхода, который я имею в виду.
Пример номера там:
В проекте I хочу распознать только текст номерного знака, то есть только «9B5 2145», а не аббревиатуру страны «CZ» и текст рекламы.
Я загрузил набор данных и csv-файл меток в свою локальную память. Итак, у меня есть следующая структура папок: один материнский каталог для всего моего проекта. Этот материнский каталог включает в себя мой каталог данных, в котором я хранил набор данных ReId. Этот набор данных включает в себя несколько подкаталогов, 4 каталога с обучающими данными и 4 с тестовыми данными, все эти подкаталоги содержат несколько изображений номерных знаков. Набор данных ReId также содержит CSV-файл trainVal, который структурирован следующим образом (фрагмент фактического листа):
track_id равно подкаталогу набора данных ReID. image_path равно пути к изображению, в этом случае имя изображения равно 1_1. lp - это номерной знак, то есть фактический номерной знак. train - фиктивная переменная, равная единице, если изображение используется в учебных целях, и 0 для целей проверки.
Относительно этого набора данных я получил три основных вопроса:
Как правильно читать на этих изображениях? Я пытался использовать что-то вроде этого
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()))
Но, очевидно, Python не нашел изображения, принадлежащие к каким-либо классам (примечание: я использовал правильные пути). Это ясно для меня, потому что я еще не назначил класс своим данным. Итак, мой первый вопрос: должен ли я это сделать? Я так не думаю.
Как мне тогда правильно прочитать эти изображения? Я думаю, мне нужно получить numpy массивы для правильной работы с этими данными.
Как мне объединить мои изображения и метки? По моему мнению, я думаю, что мне нужно объединить два набора данных, не так ли?
Большое спасибо!