#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)
Пожалуйста, убедитесь, что вы добавляете полный путь к файлам модели и правильные расширения файлов модели перед их загрузкой .