pothole_detect / model /pothole_model.py
Soham Chandratre
minor changes
59c748e
raw
history blame
2.18 kB
from ultralyticsplus import YOLO, render_result
from PIL import Image
from io import BytesIO
import numpy as np
def load_model(image):
# image_bytes = image.content
model = YOLO('keremberke/yolov8n-pothole-segmentation')
model.overrides['conf'] = 0.25
model.overrides['iou'] = 0.45
model.overrides['agnostic_nms'] = False
model.overrides['max_det'] = 1000
# Load image using PIL
image = Image.open(BytesIO(image))
image_array = np.array(image)
# pil_image = pil_image.convert("RGB") # Ensure image is in RGB format
# Convert PIL image to bytes
# with io.BytesIO() as output:
# pil_image.save(output, format='JPEG')
# image_bytes = output.getvalue()
results = model.predict(image_array)
for result in results:
boxes = result.boxes.xyxy
conf = result.boxes.conf
cls = result.boxes.cls
obj_info = []
for i, bbox in enumerate(boxes):
label = result.names[int(cls[i])]
obj_info.append({
"Object": i+1,
"Label": label,
"Confidence": conf[i],
"Bounding Box": bbox
})
render = render_result(model=model, image=image, result=results[0])
if label:
print(label)
render.show()
return label
# from PIL import Image
# from io import BytesIO
# # Load model directly
# from transformers import AutoImageProcessor, AutoModelForObjectDetection
# processor = AutoImageProcessor.from_pretrained("savioratharv/pothole_detection")
# model = AutoModelForObjectDetection.from_pretrained("savioratharv/pothole_detection")
# # 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