У меня есть следующий скрипт, мне нужно его переписать, чтобы он на вход принимал путь к изображению, остальное оставить без изменений

import tensorflow as tf
from tensorflow.keras.optimizers import Adamax
from tensorflow.keras.preprocessing.image import ImageDataGenerator
import numpy as np
import pandas as pd
import os
from tensorflow.keras.models import load_model


"""
**Python**: Версия 3.10
"""


# Функция для настройки GPU, если он доступен
def setup_gpu():

    gpus = tf.config.list_physical_devices('GPU')
    if gpus:
        try:
            for gpu in gpus:
                tf.config.experimental.set_memory_growth(gpu, True)
            logical_gpus = tf.config.list_logical_devices('GPU')
            print(len(gpus), "Physical GPUs,", len(logical_gpus), "Logical GPUs")
        except RuntimeError as e:
            print(e)


def load_data_frame(sdir):

    flist = os.listdir(sdir)
    # Создает списки путей к файлам и меток
    filepaths = [os.path.join(sdir, f).replace('\\', '/') for f in flist]
    labels = ["UNK"] * len(flist)  # Заполняем все метки как "UNK"
    return pd.DataFrame({'image': filepaths, 'dx': labels})


# Функция для компиляции моделей
def compile_model(model_path, learning_rate=0.001):

    model = load_model(model_path)
    # Компилируем модель с оптимизатором Adamax и функцией потерь 'categorical_crossentropy'
    model.compile(optimizer=Adamax(learning_rate=learning_rate),
                  loss='categorical_crossentropy',
                  metrics=['accuracy'])
    return model


# Функция получения меток из DataFrame для списка изображений
def get_labels(df, images):

    return [df[df['image'] == x]['dx'].iloc[0] if not df[df['image'] == x]['dx'].empty else 'UNK'
            for x in images]


# Функция для формирования массива предсказаний на основе сумм вероятностей каждой модели
def ensemble_predictions(predictions_list, labels):

    pr_sum = []
    for preds in zip(*predictions_list):
        # Суммируем вероятности всех моделей и определяем класс с максимальной суммой
        sum_preds = sum(preds)
        pr_sum.append(np.argmax(sum_preds))
    return [labels[i] for i in pr_sum]


def main():

    tf.get_logger().setLevel('ERROR')
    setup_gpu()

    # Параметры изображения
    img_size = (224, 224)
    labels = ['AK', 'BCC', 'BKL', 'DF', 'MEL', 'NV', 'SCC', 'VASC']

    # Загружаем данные
    df = pd.read_csv('./25k_df.csv')
    predict_dir = './predict'
    df_predict = load_data_frame(predict_dir)

    # Создаем генератор изображений
    tvgen = ImageDataGenerator(preprocessing_function=lambda x: x)
    predict_gen = tvgen.flow_from_dataframe(df_predict,
                                            directory=None,
                                            x_col="image",
                                            y_col="dx",
                                            target_size=img_size,
                                            class_mode='categorical',
                                            color_mode='rgb',
                                            shuffle=False,
                                            batch_size=50)

    # Загружаем и компилируем модели
    print('\nЗагрузка и компиляция моделей')
    model_paths = ["./Models/model-88.70.h5", "./Models/model-88.80.h5", "./Models/model-89.20.h5"]
    models = [compile_model(path) for path in model_paths]

    # Получаем предсказания от каждой модели
    print('\nПрогнозирование')
    predictions = [model.predict(predict_gen) for model in models]

    # Обрабатываем результаты
    df_predict['image'] = df_predict['image'].apply(os.path.basename)
    images = df_predict['image'].to_list()
    individual_results = [[labels[np.argmax(x)] for x in preds] for preds in predictions]
    DXs = get_labels(df, images)
    ensemble_results = ensemble_predictions(predictions, labels)

    # Создаем DataFrame с результатами предсказаний каждой модели, ансамбля и правильными метками
    predict_table = pd.DataFrame({'Изображение': images,
                                  'Model 1': individual_results[0],
                                  'Model 2': individual_results[1],
                                  'Model 3': individual_results[2],
                                  'Ансамбль': ensemble_results,
                                  'Правильная метка': DXs})

    print("\n", predict_table)


if __name__ == "__main__":
    main()