def fit(cls, n_epoch=50, batch_size=96, image_size=(64, 64)): """ Learn face images from databases. use images at reception_robot.person.face_imgs Returns: """ (X, Y), (X_test, Y_test) = Person.train_test_images_ids( image_size=image_size) print(X.shape, Y.shape, X_test.shape, Y_test.shape) person_ids = np.sort(list(set(Y))).tolist() print("person_ids: {}".format(person_ids)) person_num = len(person_ids) print("label_num: {}".format(person_num)) X, Y = shuffle(X, Y) Y = cls.to_categorical(Y, person_ids) Y_test = cls.to_categorical(Y_test, person_ids) face_recognizer_search_query = { 'n_epoch': n_epoch, 'batch_size': batch_size, 'image_size': image_size, 'person_ids': person_ids, } # face recognizer face_recognizer = cls.objects(**face_recognizer_search_query).first() if face_recognizer is None: face_recognizer = cls(**face_recognizer_search_query, person_num=person_num) network = face_recognizer.generate_network() # Train using classifier run_id = 'face_cnn' model = tflearn.DNN(network, tensorboard_verbose=3, tensorboard_dir='tensorboard_log', checkpoint_path='checkpoints/{}'.format(run_id)) model.fit(X, Y, n_epoch=n_epoch, shuffle=True, validation_set=(X_test, Y_test), show_metric=True, batch_size=batch_size, run_id=run_id) import os try: os.makedirs('models') except Exception as e: print(e) model.save(face_recognizer.generate_filename()) face_recognizer.save()