import numpy as np from tensorflow.keras.models import load_model from tensorflow.keras.preprocessing.image import load_img, img_to_array import autokeras as ak import pickle #Загружаем модель loaded_model = load_model('best_model.h5', custom_objects=ak.CUSTOM_OBJECTS) # Загружаем label_encoder with open('label_encoder.pkl', 'rb') as le_file: label_encoder = pickle.load(le_file) def translator(Defect): translation_dict = { "Crazing": "Трещины", "Inclusion": "Вкрапления", "Patches": "Пятна", "Pitted": "Рябь", "Rolled": "Замятие", "Scratches": "Царапины" } return translation_dict.get(Defect) def predict(loaded_img): # Изменение размера изображения img = cv2.resize(loaded_img, (200, 200)) # Добавление измерения пакета img_array = np.expand_dims(img, axis=0) # Предсказание класса prediction = loaded_model.predict(img_array) predicted_class = np.argmax(prediction) decoded_class = label_encoder.inverse_transform([predicted_class])[0] prediction=translator(decoded_class) return prediction interface = gr.Interface( fn=predict, inputs=gr.Image(), outputs=gr.Textbox(label="Предсказанный класс"), title="Нейронная сеть для классификации брака на металлопрокате" ) interface.launch()