model.fit(
train_data[0], train_data[1],
batch_size=BATCH_SIZE,
validation_data=val_data,
epochs=EPOCHS,
verbose=1,
callbacks=[checkpoint_callback, lr_callback]
)
compile_and_train_model(YOLO, (train_image_dataset, train_label_dataset), (test_image_dataset, test_label_dataset)) # ⑫
초기 설정으로 BATCH_SIZE는 64로 설정되었고(①), 총 훈련 에포크 수는 120으로 지정되었습니다(②). 또한 훈련 중에 가장 좋은 성능의 모델을 저장하기 위해 yolo.h5라는 파일 이름을 사용하게 됩니다(③).
학습률 스케줄링을 위한 lr_schedule 함수를 통해 에포크에 따라 학습률을 조절합니다(④). 처음 75 에포크 동안은 학습률이 0.001에서 시작하여 0.01까지 선형적으로 증가하며(⑤), 다음 30 에포크(75~105 에포크) 동안은 학습률을 0.001로 유지합니다(⑥). 마지막 30 에포크에서는 학습률을 0.0001로 낮춥니다(⑦). 이러한 스케줄링은 모델이 초기에는 큰 학습률로 빠르게 학습하고, 점차 학습률을 줄여서 수렴을 도와주는 방식입니다.