sensei-ml commited on
Commit
125371d
verified
1 Parent(s): 8d7af13

Update model/model.py

Browse files
Files changed (1) hide show
  1. model/model.py +21 -20
model/model.py CHANGED
@@ -1,35 +1,36 @@
1
- from transformers import AutoModel, AutoModelForImageClassification
2
- from PIL import Image
3
- import numpy as np
4
  import torch
5
- import torch.nn as nn
6
- import torchvision.transforms as transforms
 
7
 
8
  def predict(image_path):
9
  model = AutoModelForImageClassification.from_pretrained('sensei-ml/concrete_crack_images_classification')
10
  model.eval()
11
 
12
  with torch.no_grad():
13
- # Define the transformations for the input image
14
- transform = transforms.Compose([
15
- transforms.Resize((227, 227)),
16
- transforms.ToTensor(),
17
- transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225])
18
- ])
19
-
20
- # Preprocess the image
21
- image_tensor = torch.from_numpy(image_path).permute(2, 0, 1).float()
22
- input_tensor = transform(image_tensor).unsqueeze(0) # Add batch dimension
23
-
24
-
 
25
  outputs = model(input_tensor)
26
  logits = outputs.logits
27
  probabilities = torch.nn.functional.softmax(logits, dim=1)[0]
28
  _, predicted_label = torch.max(logits, 1)
29
- predicted_label = predicted_label.item()
30
- # Define the labels
 
31
  labels = ['Negative', 'Positive']
32
  probability_dict = {}
33
  for i, prob in enumerate(probabilities):
34
- probability_dict[labels[i]] = prob.item()
 
35
  return probability_dict
 
 
 
 
1
  import torch
2
+ from torchvision import transforms
3
+ import torchvision.transforms.functional as F
4
+ from transformers import AutoModelForImageClassification
5
 
6
  def predict(image_path):
7
  model = AutoModelForImageClassification.from_pretrained('sensei-ml/concrete_crack_images_classification')
8
  model.eval()
9
 
10
  with torch.no_grad():
11
+ # Convertir el array de NumPy a un tensor de PyTorch
12
+ image_tensor = torch.from_numpy(image_path).permute(2, 0, 1).float() # Cambiar dimensiones de (H, W, C) a (C, H, W)
13
+
14
+ # Redimensionar la imagen usando funciones de transformaci贸n que soporten tensores
15
+ image_tensor = F.resize(image_tensor, [227, 227])
16
+
17
+ # Normalizaci贸n
18
+ transform = transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225])
19
+
20
+ # Aplicar la normalizaci贸n
21
+ input_tensor = transform(image_tensor).unsqueeze(0) # A帽adir la dimensi贸n del batch
22
+
23
+ # Hacer predicciones
24
  outputs = model(input_tensor)
25
  logits = outputs.logits
26
  probabilities = torch.nn.functional.softmax(logits, dim=1)[0]
27
  _, predicted_label = torch.max(logits, 1)
28
+ predicted_label = predicted_label.item()
29
+
30
+ # Definir las etiquetas
31
  labels = ['Negative', 'Positive']
32
  probability_dict = {}
33
  for i, prob in enumerate(probabilities):
34
+ probability_dict[labels[i]] = prob.item()
35
+
36
  return probability_dict