Spaces:
Sleeping
Sleeping
| import tensorflow as tf | |
| import numpy as np | |
| import gradio as gr | |
| # Define the class names in the same order as during training | |
| class_names = ["Defective tire", "Good condition tire", "Not a tire"] | |
| def preprocess_image(image): | |
| """ | |
| Preprocess the uploaded image for prediction. | |
| Args: | |
| image (PIL.Image): Uploaded image from Gradio. | |
| Returns: | |
| np.ndarray: Preprocessed image tensor. | |
| """ | |
| try: | |
| # Convert PIL image to array | |
| img = image.resize((224, 224)) # Resize to match training dimensions | |
| img_array = tf.keras.preprocessing.image.img_to_array(img) # Convert to NumPy array | |
| # If your training used normalization, uncomment the next line | |
| # img_array = img_array / 255.0 | |
| # Add batch dimension (1, 224, 224, 3) | |
| img_array = np.expand_dims(img_array, axis=0) | |
| return img_array | |
| except Exception as e: | |
| raise ValueError(f"Error preprocessing the image: {e}") | |
| def predict_image(image): | |
| """ | |
| Predict the class of the uploaded image using the trained model. | |
| Args: | |
| image (PIL.Image): Uploaded image from Gradio. | |
| Returns: | |
| str: Predicted class and confidence score. | |
| """ | |
| try: | |
| # Preprocess the image | |
| img_array = preprocess_image(image) | |
| # Make predictions | |
| predictions = model.predict(img_array) | |
| # Extract predicted class and confidence | |
| predicted_class = class_names[np.argmax(predictions[0])] | |
| confidence = np.max(predictions[0]) | |
| return f"Predicted Class: {predicted_class}, Confidence: {confidence:.2f}" | |
| except Exception as e: | |
| return f"Error during prediction: {e}" | |
| # Load the trained model | |
| model_path = "Class_ENB0.keras" # Replace with your model's file name | |
| model = tf.keras.models.load_model(model_path) | |
| # Define the Gradio interface | |
| interface = gr.Interface( | |
| fn=predict_image, | |
| inputs=gr.Image(type="pil", label="Upload an Image"), # Accept image uploads | |
| outputs=gr.Textbox(label="Prediction"), # Display prediction results | |
| title="Tire Condition Classifier", | |
| description="Upload an image of a tire to classify its condition." | |
| ) | |
| # Launch the Gradio app | |
| if __name__ == "__main__": | |
| interface.launch() | |
| import os | |
| os.environ["CUDA_VISIBLE_DEVICES"] = "-1" # Disable GPU usage | |