|  | import gradio as gr | 
					
						
						|  | import torch | 
					
						
						|  | from PIL import Image | 
					
						
						|  | import io | 
					
						
						|  | from ultralytics import YOLO | 
					
						
						|  |  | 
					
						
						|  |  | 
					
						
						|  | MODEL_PATH = 'model/char.pt' | 
					
						
						|  | try: | 
					
						
						|  | model = YOLO(MODEL_PATH) | 
					
						
						|  | print(f"Model loaded successfully from: {MODEL_PATH}") | 
					
						
						|  | except Exception as e: | 
					
						
						|  | print(f"Error loading model: {e}") | 
					
						
						|  | model = None | 
					
						
						|  |  | 
					
						
						|  |  | 
					
						
						|  | def predict(image): | 
					
						
						|  | if model is None or image is None: | 
					
						
						|  | return None | 
					
						
						|  |  | 
					
						
						|  | try: | 
					
						
						|  | img = Image.fromarray(image).convert('RGB') | 
					
						
						|  | results = model(img) | 
					
						
						|  |  | 
					
						
						|  | predictions = [] | 
					
						
						|  | for result in results: | 
					
						
						|  | for box in result.boxes: | 
					
						
						|  | x1, y1, x2, y2 = map(int, box.xyxy[0]) | 
					
						
						|  | label = model.model.names[int(box.cls)] | 
					
						
						|  | confidence = float(box.conf[0]) | 
					
						
						|  | predictions.append({'label': label, 'confidence': confidence, 'bbox': (x1, y1, x2, y2)}) | 
					
						
						|  |  | 
					
						
						|  |  | 
					
						
						|  | draw = ImageDraw.Draw(img) | 
					
						
						|  | for pred in predictions: | 
					
						
						|  | x1, y1, x2, y2 = pred['bbox'] | 
					
						
						|  | label = f"{pred['label']} ({pred['confidence']:.2f})" | 
					
						
						|  | draw.rectangle([x1, y1, x2, y2], outline="green", width=2) | 
					
						
						|  | draw.text((x1, y1 - 10), label, fill="red") | 
					
						
						|  |  | 
					
						
						|  | return img | 
					
						
						|  |  | 
					
						
						|  | except Exception as e: | 
					
						
						|  | return f"Error during prediction: {e}" | 
					
						
						|  |  | 
					
						
						|  |  | 
					
						
						|  | iface = gr.Interface( | 
					
						
						|  | fn=predict, | 
					
						
						|  | inputs=gr.Image(label="Upload an Image"), | 
					
						
						|  | outputs=gr.Image(label="Image with Predictions"), | 
					
						
						|  | title="YOLO Object Detection", | 
					
						
						|  | description="Upload an image to see object detection predictions using a YOLO model.", | 
					
						
						|  | ) | 
					
						
						|  |  | 
					
						
						|  | iface.launch() |