Я хочу обучить модель, чтобы можно было классифицировать 16 цифр на изображении, цифры - это константы. Поэтому я создаю свой набор данных, подобный этим изображениям (напечатайте случайное 16 число с другим шрифтом и размером на фоне набора данных SUN):
![enter image description here](https://i.stack.imgur.com/Orutv.jpg)
Мой набор данных о тренировке3000 изображений и 600 изображений для проверки.
Поэтому я хотел использовать MobileNetV1 в качестве экстрактора функций и подключиться к 16 выходным слоям softmax для каждой цифры.
Вот мой фрагмент кода для создания модели
base_model = MobileNet(input_shape=None,
alpha=0.25,
depth_multiplier=1,
include_top=False,
weights='imagenet,
input_tensor=None,
pooling=None)
x = base_model.output
x = layers.AvgPool2D()(x)
digits = []
for i in range(16):
temp = layers.Conv2D(10, 1, 1, padding='same', name=str(i) + '_digits')(x)
temp = layers.Dense(10, activation='softmax')(temp)
digits.append(temp)
model = Model(inputs=base_model.inputs, outputs=digits)
model.compile(optimizer=optimizers.RMSprop(), loss='categorical_crossentropy',
metrics=['accuracy'])
, поэтому мой размер изображения набора данных (650,65) и форма тензора поезда (3000,650,65,3) с нормализованными значениями от -1 до 1
и метками моего поездаэто 16 массивов одного горячего тензора с формой (16,3000,10)
моя модель успешно скомпилирована и обучение началось, но моя потеря и val_loss не улучшились в эпоху.
В основном я хотелсоздайте модель, подобную этой фотографии, потому что эта модель отлично работает над этой проблемой классификации цифр. ![enter image description here](https://i.stack.imgur.com/NP5jJ.png)
Верхом этой модели архитектуры является что-то вроде MobileNetV1, а входом являются блоки изменения и нормализации.