Файл SavedModel не существует

#python #tensorflow #keras #google-colaboratory

Вопрос:

Я пытаюсь выполнить этот код в Google colab для проекта по обнаружению маски для лица, но у меня проблема с сохраненной моделью. Используемый код и ошибка приведены ниже. Обучение было закончено, но я не могу понять, почему сохраненная модель не была найдена ( моя подруга использовала тот же код, и она не нашла никаких проблем с моделью), может кто-нибудь помочь мне? я что-нибудь упускаю??

 import tensorflow
checkpoint_path = "training_1/cp.ckpt"
checkpoint_dir = os.path.dirname(checkpoint_path)

batch_size=32

# Create a callback that saves the model's weights
cp_callback = tensorflow.keras.callbacks.ModelCheckpoint(filepath=checkpoint_path,
                                                 save_weights_only=True,
                                                 verbose=1,
                                                 save_freq=10*batch_size)
import keras

epochs = 50
save_freq=10*batch_size
model.compile(loss = 'categorical_crossentropy',
              optimizer = 'Adam',
              metrics = ['accuracy'])

fitted_model = model.fit(
    train_X,
    train_y,
    epochs = epochs,
    validation_split=0.30,
    callbacks=[cp_callback],
    verbose=1)



import tensorflow as tf
import numpy as np
import cv2
import face_recognition
from google.colab.patches import cv2_imshow

model=tf.keras.models.load_model('mask_detection.model')


text_dict={0:'Mask ON',1:'No Mask'}
rect_color_dict={0:(0,255,0),1:(0,0,255)}
image=cv2.imread("/content/drive/MyDrive/148.jpg")
img = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

faces =face_recognition.face_locations(image,model='hog')

type = isinstance(faces, tuple)

if type == False:
        for face in faces:
            face_location = np.array(face)

            x = face_location[3]
            y = face_location[0]
            w = face_location[1] - face_location[3]
            h = face_location[2] - face_location[0]
            im = image[y:y   w, x:x   w]
            

            grayscale_image = cv2.cvtColor(im, cv2.COLOR_BGR2GRAY)
            resized_image = cv2.resize(grayscale_image, (200, 200))
            imags = []
            imags.append(resized_image)
            imags = np.array(imags) / 255.0
            imags = np.reshape(imags, (imags.shape[0], 200, 200, 1))
            predictions = model.predict(imags)
            predictions = np.argmax(predictions)
            label = predictions
            cv2.rectangle(image, (x, y), (x   w, y   h), rect_color_dict[label], 2)
            cv2.rectangle(image, (x, y - 40), (x   w, y), rect_color_dict[label], -1)
            cv2.putText(image, text_dict[label], (x, y - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.8, (0, 0, 0), 2)
else:
        print('no faces detected')
cv2_imshow(image)
 

ошибка:

  ---------------------------------------------------------------------------
OSError                                   Traceback (most recent call last)
<ipython-input-21-17164d330c43> in <module>()
      6 from google.colab.patches import cv2_imshow
      7 
----> 8 model=tf.keras.models.load_model('mask_detection.model')
      9 
     10 

2 frames
/usr/local/lib/python3.7/dist-packages/tensorflow/python/saved_model/loader_impl.py in parse_saved_model(export_dir)
    119         "SavedModel file does not exist at: %s%s{%s|%s}" %
    120         (export_dir, os.path.sep, constants.SAVED_MODEL_FILENAME_PBTXT,
--> 121          constants.SAVED_MODEL_FILENAME_PB))
    122 
    123 

OSError: SavedModel file does not exist at: mask_detection.model/{saved_model.pbtxt|saved_model.pb}
 

Комментарии:

1. Похоже, вы сохраняете модель с именем "training_1/cp.ckpt" и пытаетесь загрузить модель с именем 'mask_detection.model' ; лучше дважды проверьте это.

2. Кроме того, будьте осторожны при сохранении и загрузке моделей между Colab сеансами, так как данные модели могут не сохраниться.

3. Правильно, проблема заключалась в названии модели. Спасибо за вашу помощь

Ответ №1:

На благо общества

Похоже, вы сохраняете модель с именем «training_1/cp.ckpt» и пытаетесь загрузить модель с именем «mask_detection.model»; лучше дважды проверьте это. (перефразировано из n1colas.m)

Пожалуйста, убедитесь, что вы добавляете полный путь к файлам модели и правильные расширения файлов модели перед их загрузкой .