Spaces:
Runtime error
Runtime error
| import torch | |
| import torch.nn as nn | |
| from torchvision.models import resnet34 | |
| from torchvision.transforms import transforms | |
| from PIL import Image | |
| class FireDetectionModel(nn.Module): | |
| def __init__(self, num_classes=2): | |
| super(FireDetectionModel, self).__init__() | |
| self.model = resnet34(pretrained=False) | |
| self.model.fc = nn.Linear(512, num_classes) | |
| def forward(self, x): | |
| return self.model(x) | |
| def predict(self, image): | |
| """Predict fire detection from input image""" | |
| # Preprocessing transform | |
| transform = transforms.Compose([ | |
| transforms.Resize((224, 224)), | |
| transforms.ToTensor(), | |
| transforms.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225]) | |
| ]) | |
| # Convert to tensor and add batch dimension | |
| if isinstance(image, Image.Image): | |
| image_tensor = transform(image).unsqueeze(0) | |
| else: | |
| image_tensor = image | |
| # Inference | |
| self.eval() | |
| with torch.no_grad(): | |
| outputs = self.forward(image_tensor) | |
| probabilities = torch.softmax(outputs, dim=1) | |
| predicted_class = torch.argmax(probabilities, dim=1) | |
| confidence = torch.max(probabilities, dim=1)[0] | |
| class_names = ['Non-Fire', 'Fire'] | |
| return { | |
| 'prediction': class_names[predicted_class.item()], | |
| 'confidence': confidence.item(), | |
| 'probabilities': { | |
| 'Non-Fire': probabilities[0][0].item(), | |
| 'Fire': probabilities[0][1].item() | |
| } | |
| } |