Spaces:
Runtime error
Runtime error
| import gradio as gr | |
| import torch | |
| from torchvision import transforms | |
| from models.experimental import attempt_load | |
| from utils.general import non_max_suppression, plot_one_box | |
| import numpy as np | |
| # Load YOLOv7 model | |
| weights_path = "cattle.pt" | |
| config_path = "yolov7.yaml" | |
| # Initialize your YOLOv7 model here | |
| device = torch.device('cuda' if torch.cuda.is_available() else 'cpu') | |
| net = attempt_load(weights_path, map_location=device) | |
| # Define function to detect objects using YOLOv7 | |
| def detect_objects(image): | |
| global net | |
| # Perform any necessary preprocessing on the image | |
| transform = transforms.Compose([ | |
| transforms.Resize((416, 416)), # Resize image to expected input size | |
| transforms.ToTensor(), # Convert image to tensor | |
| ]) | |
| image_tensor = transform(image).unsqueeze(0) | |
| # Perform object detection | |
| with torch.no_grad(): | |
| # Forward pass through the network | |
| outs = net(image_tensor) | |
| # Apply non-maximum suppression | |
| pred = non_max_suppression(outs, conf_thres=0.4, iou_thres=0.5, classes=None, agnostic=False) | |
| # Process detection results and draw bounding boxes | |
| object_count = 0 | |
| for i, det in enumerate(pred): | |
| # Skip if no detections | |
| if len(det): | |
| # Increment object count | |
| object_count += len(det) | |
| # Loop over the detections | |
| for *xyxy, conf, cls in reversed(det): | |
| # Draw bounding box | |
| plot_one_box(xyxy, image, label=f'{conf:.2f}', color=(255, 0, 0), line_thickness=3) | |
| return image, object_count | |
| # Create Gradio interface | |
| inputs = gr.inputs.Image(label="Upload Image or Video") | |
| outputs = [gr.outputs.Image(label="Output Image with Objects Detected"), gr.outputs.Text(label="Object Count")] | |
| gr.Interface(detect_objects, inputs, outputs, title="YOLOv7 Object Detection").launch() | |