Сохранение состояния и загрузки модели YOLOv3

#python #tensorflow #detection #imageai #yolov5

#python #тензорный поток #обнаружение #imageai #yolov5

Вопрос:

Я пытаюсь обучить модель YOLOv3, следуя документации ImageAI, с моим пользовательским набором данных.Но обучение занимает слишком много времени, и времени Google Colab для этого недостаточно. Теперь, как я могу сохранить состояние модели и загрузить его после завершения эпохи 50/60? Поскольку я новичок, я не получаю контрольную точку модели тензорного потока t

Вот пример кода:

 from imageai.Detection.Custom import DetectionModelTrainer 

trainer = DetectionModelTrainer() 
trainer.setModelTypeAsYOLOv3() trainer.setDataDirectory(data_directory="/content/drive/My Drive/Dataset") 
trainer.setTrainConfig(object_names_array=["obj1","obj2"], batch_size=4, num_experiments=421) 
trainer.trainModel()
  

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

1. Вы должны поместить образец своего кода и указать, какую версию tensorflow вы используете

2. из imageai. Обнаружение. Пользовательский импорт DetectionModelTrainer trainer = DetectionModelTrainer() trainer.setModelTypeAsYOLOv3() trainer.setDataDirectory(data_directory=»/content/ диск / Мой диск / Набор данных») trainer.setTrainConfig(object_names_array=[«obj1″,»obj2»], batch_size= 4, num_experiments= 421) trainer.trainModel()

3. !pip3 устанавливает tensorflow == 1.13.1

Ответ №1:

Вы должны использовать ModelChekpoint в качестве обратного вызова вашего метода. Но вы используете пользовательский класс, который уже обрабатывает это.

Если вы посмотрите на код на github, вы увидите, что они используют некоторые пользовательские обратные вызовы

Они сохраняют модель после каждой эпохи только лучшей (не последней). Модель должна быть сохранена в папке <data_directory>/models/detection_model- :

 self.__model_directory = os.path.join(data_directory, "models")
self.__train_weights_name = os.path.join(self.__model_directory, "detection_model-")
  

Если вы хотите сохранить последнюю итерацию, вам нужно перезаписать метод для пользовательских обратных вызовов и изменить save_best_only на False .