Я некоторое время работал с VGG16 от Keras, и после точной настройки моего собственного набора данных из 4 классов тренировка, кажется, идет хорошо, точность наборов обучения и проверки повысилась, и в конце даже оценка с использованием model.evaluate()
дал хорошую точность данных испытаний. Я попробовал confusion_matrix
, и он также показал хорошие результаты классификации. Для подтверждения я попытался предсказать изображения из моего набора данных, используя следующее:
im = cv2.resize(frame,(image_size, image_size), interpolation = cv2.INTER_AREA)
#convert the image pixels to a numpy array
framer = img_to_array(im)
image = framer.reshape((1, framer.shape[0], framer.shape[1], framer.shape[2]))
# prepare the image for the VGG model
image = preprocess_input(image)
label = FLOW1_model.predict_classes(image, verbose=0)
Я загрузил кадры потока только для 1 класса (класс 0), но только около 30% изображений были классифицированы правильно, в другом классе (класс 1) это была 50% правильная классификация. Учитывая, что точность превысила 85%, когда я тренировался, а также запутанная матрица, показывающая очень хорошие результаты, я нахожу это очень ненормальным. Я просмотрел все возможные причины в Интернете, но не смог найти, что пошло не так ... Есть ли известная проблема, объясняющая эту разницу в результатах?
Редактировать:
Я в основном загружаю Keras vgg без top, добавляю свой собственный классификатор и компилирую модель следующим образом:
# Compile the model method 2
sgd = SGD(lr=0.00001, decay = 1e-6, momentum=0.9, nesterov=True)
model.compile(optimizer=sgd, loss='categorical_crossentropy', metrics=['accuracy'])