checkpoint_filepath='E:\model.yolo_v8_s_ft.h5'
# backbone = keras_cv.models.YOLOV8Backbone.from_preset("yolo_v8_m_backbone_coco")
backbone = keras.models.load_model(checkpoint_filepath)
yolo = keras_cv.models.YOLOV8Detector(
num_classes=len(class_mapping),
bounding_box_format="xyxy",
backbone=backbone,
fpn_depth=2,)
optimizer = tf.keras.optimizers.Adam(learning_rate=LEARNING_RATE,global_clipnorm=GLOBAL_CLIPNORM,)
yolopile(optimizer=optimizer, classification_loss="binary_crossentropy", box_loss="ciou")
Save_mode= keras.callbacks.ModelCheckpoint(filepath=checkpoint_filepath,monitor='val_loss',mode='auto',save_best_only=True,save_freq="epoch")
reduce_lr = keras.callbacks.ReduceLROnPlateau(monitor='val_loss', factor=0.5,patience=3, min_lr=0.0001)
Stop=keras.callbacks.EarlyStopping(monitor="val_loss",patience=7,mode="auto")
yolo.fit(
train_ds,
validation_data=val_ds,
epochs=EPOCH,
callbacks=[Save_mode, reduce_lr, Stop],
)
raise err:
ValueError: Unknown layer: 'YOLOV8Detector'.
try use tensorflow_hub (backbone = keras.models.load_model(checkpoint_filepath,custom_objects={'YOLOV8Detector':hub.YOLOV8Detector})) - raise err:
AttributeError: module 'tensorflow_hub' has no attribute 'YOLOV8Detector'
try save model as '.tf' - raise err:
ValueError: The filepath provided must end in
.keras
(Keras model format). Received: filepath=E:\model.yolo_v8_s_ft.tf
from keras.callbacks.ModelCheckpoint
checkpoint_filepath='E:\model.yolo_v8_s_ft.h5'
# backbone = keras_cv.models.YOLOV8Backbone.from_preset("yolo_v8_m_backbone_coco")
backbone = keras.models.load_model(checkpoint_filepath)
yolo = keras_cv.models.YOLOV8Detector(
num_classes=len(class_mapping),
bounding_box_format="xyxy",
backbone=backbone,
fpn_depth=2,)
optimizer = tf.keras.optimizers.Adam(learning_rate=LEARNING_RATE,global_clipnorm=GLOBAL_CLIPNORM,)
yolopile(optimizer=optimizer, classification_loss="binary_crossentropy", box_loss="ciou")
Save_mode= keras.callbacks.ModelCheckpoint(filepath=checkpoint_filepath,monitor='val_loss',mode='auto',save_best_only=True,save_freq="epoch")
reduce_lr = keras.callbacks.ReduceLROnPlateau(monitor='val_loss', factor=0.5,patience=3, min_lr=0.0001)
Stop=keras.callbacks.EarlyStopping(monitor="val_loss",patience=7,mode="auto")
yolo.fit(
train_ds,
validation_data=val_ds,
epochs=EPOCH,
callbacks=[Save_mode, reduce_lr, Stop],
)
raise err:
ValueError: Unknown layer: 'YOLOV8Detector'.
try use tensorflow_hub (backbone = keras.models.load_model(checkpoint_filepath,custom_objects={'YOLOV8Detector':hub.YOLOV8Detector})) - raise err:
AttributeError: module 'tensorflow_hub' has no attribute 'YOLOV8Detector'
try save model as '.tf' - raise err:
ValueError: The filepath provided must end in
.keras
(Keras model format). Received: filepath=E:\model.yolo_v8_s_ft.tf
from keras.callbacks.ModelCheckpoint
Share Improve this question asked Mar 28 at 8:17 PulfPulf 133 bronze badges1 Answer
Reset to default 0This error happens as Keras doesn't recognise the YOLOV8Detector class. The issue is that you're saving the entire detector model but load it as a backbone.
Try this load with custo object
# Save the entire detector
checkpoint_filepath = 'E:/model.yolo_v8_s_ft.keras'
yolo.save(checkpoint_filepath)
# Later, load with custom objects
from keras_cv.models.object_detection.yolo_v8 import YOLOV8Detector
loaded_model = keras.models.load_model(
checkpoint_filepath,
custom_objects={'YOLOV8Detector': YOLOV8Detector}
)