Я создал нейронную сеть для распознавания автомобильных номеров:
def create_model(input_shape = (224, 224, 3)):
input_img = Input(shape=input_shape)
model = efnB0_model (input_img)
model = GlobalAveragePooling2D(name='avg_pool')(model)
model = Dropout(0.2)(model)
backbone = model
branches = []
for i in range(7):
branches.append(backbone)
branches[i] = Dense(360, name="branch_"+str(i)+"_Dense_360")(branches[i])
branches[i] = BatchNormalization()(branches[i])
branches[i] = Activation("relu") (branches[i])
branches[i] = Dropout(0.2)(branches[i])
branches[i] = Dense(35, activation = "softmax", name="branch_"+str(i)+"_output")(branches[i])
output = Concatenate(axis=1)(branches)
output = Reshape((7, 35))(output)
model = Model(input_img, output)
return model
model = create_model()
Я скомпилировал модель, обучил и проверил ее:
opt = keras.optimizers.Adam(learning_rate=0.0001)
model.compile(loss='categorical_crossentropy', optimizer=opt, metrics=["accuracy"])
hist = model.fit(
x=training_generator, epochs=10, verbose=1, callbacks=None,
validation_data=validation_generator, steps_per_epoch=num_train_samples // 16,
validation_steps=num_val_samples // 16,
max_queue_size=10, workers=6, use_multiprocessing=True)
Теперь я хотел бы измерить время обработки для одно изображение / номерной знак. Каков был бы ваш подход и как я мог бы это сделать?
Спасибо!