Upload 3 files
Browse files
README.md
CHANGED
|
@@ -1,8 +1,6 @@
|
|
| 1 |
-
|
| 2 |
-
|
| 3 |
-
1. ---
|
| 4 |
title: Corrosion Classifier
|
| 5 |
-
emoji:
|
| 6 |
colorFrom: indigo
|
| 7 |
colorTo: blue
|
| 8 |
sdk: gradio
|
|
@@ -13,10 +11,10 @@ pinned: false
|
|
| 13 |
|
| 14 |
# Corrosion Classifier Space
|
| 15 |
|
| 16 |
-
Questo Space usa un modello ResNet50
|
| 17 |
-
Carica un’immagine e ottieni label + confidence
|
| 18 |
|
| 19 |
-
Classi
|
| 20 |
- crevice_corrosion
|
| 21 |
- erosion_corrosion
|
| 22 |
- galvanic_corrosion
|
|
@@ -26,3 +24,7 @@ Classi supportate:
|
|
| 26 |
- stress_corrosion
|
| 27 |
- under_insulation_corrosion
|
| 28 |
- uniform_corrosion
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
---
|
|
|
|
|
|
|
| 2 |
title: Corrosion Classifier
|
| 3 |
+
emoji: 🧪
|
| 4 |
colorFrom: indigo
|
| 5 |
colorTo: blue
|
| 6 |
sdk: gradio
|
|
|
|
| 11 |
|
| 12 |
# Corrosion Classifier Space
|
| 13 |
|
| 14 |
+
Questo Space usa un modello ResNet50 per classificare immagini di corrosione.
|
| 15 |
+
Carica un’immagine e ottieni **label** + **confidence**.
|
| 16 |
|
| 17 |
+
**Classi**:
|
| 18 |
- crevice_corrosion
|
| 19 |
- erosion_corrosion
|
| 20 |
- galvanic_corrosion
|
|
|
|
| 24 |
- stress_corrosion
|
| 25 |
- under_insulation_corrosion
|
| 26 |
- uniform_corrosion
|
| 27 |
+
|
| 28 |
+
## Avvio
|
| 29 |
+
- Assicurati che il file del modello `resnet50-corrosion-classifier-v1.pth` sia nella root dello Space.
|
| 30 |
+
- Requisiti: vedi `requirements.txt`.
|
app.py
CHANGED
|
@@ -4,13 +4,9 @@ import torch
|
|
| 4 |
import torchvision.transforms as T
|
| 5 |
import torchvision.models as models
|
| 6 |
|
| 7 |
-
# Carica il modello
|
| 8 |
-
# Assumi che il file .pth sia nella root dello Space
|
| 9 |
MODEL_PATH = "resnet50-corrosion-classifier-v1.pth"
|
| 10 |
|
| 11 |
-
|
| 12 |
-
|
| 13 |
-
IDX2LABEL = {
|
| 14 |
0: "crevice_corrosion",
|
| 15 |
1: "erosion_corrosion",
|
| 16 |
2: "galvanic_corrosion",
|
|
@@ -50,7 +46,7 @@ def predict(image: Image.Image):
|
|
| 50 |
logits = model(x)
|
| 51 |
probs = torch.softmax(logits, dim=1).cpu().numpy()[0]
|
| 52 |
idx = int(probs.argmax())
|
| 53 |
-
label = IDX2LABEL.get(idx,
|
| 54 |
confidence = float(probs[idx])
|
| 55 |
return {"label": label, "confidence": confidence}
|
| 56 |
|
|
@@ -62,7 +58,6 @@ demo = gr.Interface(
|
|
| 62 |
description="Restituisce label e confidence per l'immagine"
|
| 63 |
)
|
| 64 |
|
| 65 |
-
# Abilita API chiamabile
|
| 66 |
demo.api_mode = "enabled"
|
| 67 |
|
| 68 |
if __name__ == "__main__":
|
|
|
|
| 4 |
import torchvision.transforms as T
|
| 5 |
import torchvision.models as models
|
| 6 |
|
|
|
|
|
|
|
| 7 |
MODEL_PATH = "resnet50-corrosion-classifier-v1.pth"
|
| 8 |
|
| 9 |
+
IDX2LABEL = {
|
|
|
|
|
|
|
| 10 |
0: "crevice_corrosion",
|
| 11 |
1: "erosion_corrosion",
|
| 12 |
2: "galvanic_corrosion",
|
|
|
|
| 46 |
logits = model(x)
|
| 47 |
probs = torch.softmax(logits, dim=1).cpu().numpy()[0]
|
| 48 |
idx = int(probs.argmax())
|
| 49 |
+
label = IDX2LABEL.get(idx, f"class_{idx}")
|
| 50 |
confidence = float(probs[idx])
|
| 51 |
return {"label": label, "confidence": confidence}
|
| 52 |
|
|
|
|
| 58 |
description="Restituisce label e confidence per l'immagine"
|
| 59 |
)
|
| 60 |
|
|
|
|
| 61 |
demo.api_mode = "enabled"
|
| 62 |
|
| 63 |
if __name__ == "__main__":
|