File size: 2,226 Bytes
59c748e
 
49ebad1
f1495be
49ebad1
 
 
f1495be
59c748e
 
 
 
f1495be
59c748e
 
 
 
14c15c7
59c748e
 
 
f1495be
59c748e
94c7394
49ebad1
c4e1faf
6750185
49ebad1
59442d5
c4e1faf
49ebad1
 
 
 
 
6750185
b388354
 
6750185
b388354
 
49ebad1
 
 
 
 
 
 
 
c4e1faf
49ebad1
b388354
 
49ebad1
 
 
 
b388354
49ebad1
 
 
 
 
 
 
c4e1faf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
# from PIL import Image
# from io import BytesIO
# from transformers import AutoImageProcessor, AutoModelForImageClassification

# # Load model
# processor = AutoImageProcessor.from_pretrained("taroii/pothole-detection-model")
# model = AutoModelForImageClassification.from_pretrained("taroii/pothole-detection-model")

# # Function to predict if an image contains a pothole
# def predict_pothole(image_url):
#     image = Image.open(BytesIO(image_url))
#     inputs = processor(images=image, return_tensors="pt")

#     # Perform inference
#     outputs = model(**inputs)
#     logits = outputs.logits
#     probabilities = logits.softmax(dim=1)
    
#     # Get predicted class (0: No pothole, 1: Pothole)
#     predicted_class = probabilities.argmax().item()
#     confidence = probabilities[0, predicted_class].item()

#     return predicted_class


import tensorflow as tf
from PIL import Image, ImageOps
import numpy as np
import requests
from io import BytesIO

def load_image_model(image):
    # Disable scientific notation for clarity
    np.set_printoptions(suppress=True)

    # Load the model from the URL
    model_url = "https://huggingface.co/spaces/Soham0708/pothole_detect/resolve/main/keras_model.h5"
    model_path = tf.keras.utils.get_file("keras_model.h5", model_url)

    # Load the model
    model = tf.keras.models.load_model(model_path)

    # Load the labels
    class_names = open("labels.txt", "r").readlines()

    # Create the array of the right shape to feed into the keras model
    data = np.ndarray(shape=(1, 224, 224, 3), dtype=np.float32)

    # Replace this with the path to your image
    image = Image.open(image).convert("RGB")

    # Resize and preprocess the image
    image = ImageOps.fit(image, (224, 224), Image.ANTIALIAS)
    image_array = np.asarray(image)
    normalized_image_array = (image_array.astype(np.float32) / 127.5) - 1
    data[0] = normalized_image_array

    # Make prediction
    prediction = model.predict(data)
    index = np.argmax(prediction)
    class_name = class_names[index]
    confidence_score = prediction[0][index]

    # Print prediction and confidence score
    print("Class:", class_name[2:], end="")
    print("Confidence Score:", confidence_score)