Spaces:
Runtime error
Runtime error
| import gradio as gr | |
| import cv2 | |
| import numpy as np | |
| import matplotlib.pyplot as plt | |
| import imutils | |
| import easyocr | |
| from PIL import Image | |
| from transformers import AutoImageProcessor, AutoModelForImageClassification | |
| # Load the model and image processor | |
| processor = AutoImageProcessor.from_pretrained("beingamit99/car_damage_detection") | |
| model = AutoModelForImageClassification.from_pretrained("beingamit99/car_damage_detection") | |
| # Define the function that takes an image as input and returns a text output | |
| def classify_image(input_image): | |
| # Load and process the image | |
| image = np.array(input_image) | |
| inputs = processor(images=image, return_tensors="pt") | |
| # Make predictions | |
| outputs = model(**inputs) | |
| logits = outputs.logits.detach().cpu().numpy() | |
| predicted_class_id = np.argmax(logits) | |
| predicted_proba = np.max(logits) | |
| label_map = model.config.id2label | |
| predicted_class_name = label_map[predicted_class_id] | |
| # OCR | |
| gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) | |
| bfilter = cv2.bilateralFilter(gray, 11, 17, 17) | |
| edged = cv2.Canny(bfilter, 30, 200) | |
| keypoints = cv2.findContours(edged.copy(), cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE) | |
| contours = imutils.grab_contours(keypoints) | |
| contours = sorted(contours, key=cv2.contourArea, reverse=True)[:10] | |
| location = None | |
| for contour in contours: | |
| approx = cv2.approxPolyDP(contour, 10, True) | |
| if len(approx) == 4: | |
| location = approx | |
| break | |
| mask = np.zeros(gray.shape, np.uint8) | |
| new_image = cv2.drawContours(mask, [location], 0, 255, -1) | |
| new_image = cv2.bitwise_and(image, image, mask=mask) | |
| (x, y) = np.where(mask == 255) | |
| (x1, y1) = (np.min(x), np.min(y)) | |
| (x2, y2) = (np.max(x), np.max(y)) | |
| cropped_image = gray[x1:x2+3, y1:y2+3] | |
| reader = easyocr.Reader(['en']) | |
| result = reader.readtext(cropped_image) | |
| text = result[0][1] | |
| # Return the results | |
| return f"Predicted class: {predicted_class_name} (probability: {predicted_proba:.4f}", text | |
| # Create Gradio interface | |
| input_image = gr.components.Image() | |
| output_text = gr.components.Text() | |
| output_text2 = gr.components.Text() | |
| gr.Interface(fn=classify_image, inputs=input_image, outputs=[output_text, output_text2], title="AutoVision").launch(debug = 1) |