 
![13.png](https://cdn-uploads.huggingface.co/production/uploads/65bb837dbfb878f46c77de4c/5ajYrCCJwmrTyOE1W_Pwg.png)

# **Road-Subsigns-Classification**  

> **Road-Subsigns-Classification** is an image classification vision-language encoder model fine-tuned from **google/siglip2-base-patch16-224** for a single-label classification task. It is designed to classify images of road subsigns using the **SiglipForImageClassification** architecture.

```py
Classification Report:
                              precision    recall  f1-score   support

                          M1     0.9907    0.9815    0.9860       324
                     M11c1-E     1.0000    0.9787    0.9892        47
                          M2     0.9950    0.9853    0.9901       204
                  M3a-droite     0.9699    0.9680    0.9690       500
                  M3a-gauche     0.9431    0.9375    0.9403       336
                  M3b-gauche     1.0000    1.0000    1.0000        14
                         M4a     0.9914    0.9664    0.9787       119
                         M4b     0.8929    1.0000    0.9434        25
                         M4c     0.8947    1.0000    0.9444        17
                        M4d1     0.9887    1.0000    0.9943       175
                        M4d2     0.9844    0.9844    0.9844        64
                         M4f     0.9826    1.0000    0.9912       452
                         M4g     0.9940    1.0000    0.9970       329
                         M4h     0.0000    0.0000    0.0000         1
                         M4u     0.8571    0.9231    0.8889        13
                         M4v     1.0000    1.0000    1.0000       100
                        M4z1     1.0000    1.0000    1.0000        45
                        M4z2     0.0000    0.0000    0.0000         1
                     M5-STOP     1.0000    0.9872    0.9935       234
                         M6a     0.9940    0.9920    0.9930       500
                         M6h     1.0000    0.9943    0.9972       353
                         M6i     0.9885    1.0000    0.9942        86
                         M6j     0.9855    1.0000    0.9927        68
                         M8a     0.9619    0.9528    0.9573       106
                         M8b     0.7407    0.9091    0.8163        22
                         M8c     0.8485    0.9825    0.9106        57
                         M8d     0.9739    0.9739    0.9739       115
                         M8e     0.9754    0.9835    0.9794       121
                         M8f     0.9972    0.9756    0.9863       369
     M9Z-INTERDIT-HORS-CASES     0.9787    0.9919    0.9852       370
                M9Z-SAUF-BUS     0.9650    0.9452    0.9550       146
       M9Z-SAUF-BUS-SCOLAIRE     0.9688    0.9394    0.9538        66
                         M9c     0.9843    1.0000    0.9921       500
                         M9d     0.9945    0.9759    0.9851       373
                         M9v     0.9952    1.0000    0.9976       418
                         M9z     0.7760    0.7132    0.7433       136
          M9z-DES-DEUX-COTES     0.9741    0.9496    0.9617       119
                   M9z-ECOLE     1.0000    0.9474    0.9730        38
           M9z-PARKING-PRIVE     1.0000    1.0000    1.0000         9
        M9z-PASSAGE-SURELEVE     0.9808    0.9808    0.9808       104
        M9z-PROPRIETE-PRIVEE     0.9091    0.8333    0.8696        12
                  M9z-RAPPEL     0.9933    0.9978    0.9955       447
           M9z-SAUF-CHANTIER     1.0000    0.7273    0.8421        11
     M9z-SAUF-CONVOIS-EXCEPT     0.0000    0.0000    0.0000         2
          M9z-SAUF-CYCLISTES     0.9626    0.9836    0.9730       183
           M9z-SAUF-DESSERTE     0.9307    0.9792    0.9543        96
         M9z-SAUF-LIVRAISONS     0.8478    0.9286    0.8864        42
             M9z-SAUF-POLICE     1.0000    0.8667    0.9286        15
          M9z-SAUF-RIVERAINS     0.9677    0.9615    0.9646       312
            M9z-SAUF-SERVICE     0.9160    0.9375    0.9266       128
              M9z-SAUF-TAXIS     0.7778    0.8235    0.8000        17
M9z-SAUF-VEHICULES-AGRICOLES     0.9712    0.9018    0.9352       112
M9z-SAUF-VEHICULES-AUTORISES     0.9253    0.9817    0.9527       164
                 M9z-SECOURS     1.0000    0.6667    0.8000         9
             M9z-SIGNAL-AUTO     0.9892    0.9892    0.9892        93
         M9z-SORTIE-POMPIERS     0.9062    0.9355    0.9206        31
        M9z-SORTIE-VEHICULES     1.0000    0.7857    0.8800        14
         M9z-SUR-LE-TROTTOIR     0.9444    0.9444    0.9444        18
                 M9z-VERGLAS     1.0000    0.6875    0.8148        16
                          zz     0.9486    0.9600    0.9543       500

                    accuracy                         0.9732      9298
                   macro avg     0.9093    0.8968    0.9009      9298
                weighted avg     0.9731    0.9732    0.9729      9298
```

The model categorizes road subsigns into 60 classes:  
- **Class 0:** "M1"  
- **Class 1:** "M11c1-E"  
- **Class 2:** "M2"  
- **Class 3:** "M3a-droite"  
- **Class 4:** "M3a-gauche"  
- **Class 5:** "M3b-gauche"  
- **Class 6:** "M4a"  
- **Class 7:** "M4b"  
- **Class 8:** "M4c"  
- **Class 9:** "M4d1"  
- **Class 10:** "M4d2"  
- **Class 11:** "M4f"  
- **Class 12:** "M4g"  
- **Class 13:** "M4h"  
- **Class 14:** "M4u"  
- **Class 15:** "M4v"  
- **Class 16:** "M4z1"  
- **Class 17:** "M4z2"  
- **Class 18:** "M5-STOP"  
- **Class 19:** "M6a"  
- **Class 20:** "M6h"  
- **Class 21:** "M6i"  
- **Class 22:** "M6j"  
- **Class 23:** "M8a"  
- **Class 24:** "M8b"  
- **Class 25:** "M8c"  
- **Class 26:** "M8d"  
- **Class 27:** "M8e"  
- **Class 28:** "M8f"  
- **Class 29:** "M9Z-INTERDIT-HORS-CASES"  
- **Class 30:** "M9Z-SAUF-BUS"  
- **Class 31:** "M9Z-SAUF-BUS-SCOLAIRE"  
- **Class 32:** "M9c"  
- **Class 33:** "M9d"  
- **Class 34:** "M9v"  
- **Class 35:** "M9z"  
- **Class 36:** "M9z-DES-DEUX-COTES"  
- **Class 37:** "M9z-ECOLE"  
- **Class 38:** "M9z-PARKING-PRIVE"  
- **Class 39:** "M9z-PASSAGE-SURELEVE"  
- **Class 40:** "M9z-PROPRIETE-PRIVEE"  
- **Class 41:** "M9z-RAPPEL"  
- **Class 42:** "M9z-SAUF-CHANTIER"  
- **Class 43:** "M9z-SAUF-CONVOIS-EXCEPT"  
- **Class 44:** "M9z-SAUF-CYCLISTES"  
- **Class 45:** "M9z-SAUF-DESSERTE"  
- **Class 46:** "M9z-SAUF-LIVRAISONS"  
- **Class 47:** "M9z-SAUF-POLICE"  
- **Class 48:** "M9z-SAUF-RIVERAINS"  
- **Class 49:** "M9z-SAUF-SERVICE"  
- **Class 50:** "M9z-SAUF-TAXIS"  
- **Class 51:** "M9z-SAUF-VEHICULES-AGRICOLES"  
- **Class 52:** "M9z-SAUF-VEHICULES-AUTORISES"  
- **Class 53:** "M9z-SECOURS"  
- **Class 54:** "M9z-SIGNAL-AUTO"  
- **Class 55:** "M9z-SORTIE-POMPIERS"  
- **Class 56:** "M9z-SORTIE-VEHICULES"  
- **Class 57:** "M9z-SUR-LE-TROTTOIR"  
- **Class 58:** "M9z-VERGLAS"  
- **Class 59:** "zz"  

# **Run with Transformers🤗**  

```python
!pip install -q transformers torch pillow gradio
```

```py
import gradio as gr
from transformers import AutoImageProcessor, SiglipForImageClassification
from PIL import Image
import torch

# Load model and processor
model_name = "prithivMLmods/Road-Subsigns-Classification"
model = SiglipForImageClassification.from_pretrained(model_name)
processor = AutoImageProcessor.from_pretrained(model_name)

labels = {
    "0": "M1", "1": "M11c1-E", "2": "M2", "3": "M3a-droite", "4": "M3a-gauche",
    "5": "M3b-gauche", "6": "M4a", "7": "M4b", "8": "M4c", "9": "M4d1",
    "10": "M4d2", "11": "M4f", "12": "M4g", "13": "M4h", "14": "M4u",
    "15": "M4v", "16": "M4z1", "17": "M4z2", "18": "M5-STOP", "19": "M6a",
    "20": "M6h", "21": "M6i", "22": "M6j", "23": "M8a", "24": "M8b",
    "25": "M8c", "26": "M8d", "27": "M8e", "28": "M8f", "29": "M9Z-INTERDIT-HORS-CASES",
    "30": "M9Z-SAUF-BUS", "31": "M9Z-SAUF-BUS-SCOLAIRE", "32": "M9c", "33": "M9d", "34": "M9v",
    "35": "M9z", "36": "M9z-DES-DEUX-COTES", "37": "M9z-ECOLE", "38": "M9z-PARKING-PRIVE",
    "39": "M9z-PASSAGE-SURELEVE", "40": "M9z-PROPRIETE-PRIVEE", "41": "M9z-RAPPEL",
    "42": "M9z-SAUF-CHANTIER", "43": "M9z-SAUF-CONVOIS-EXCEPT", "44": "M9z-SAUF-CYCLISTES",
    "45": "M9z-SAUF-DESSERTE", "46": "M9z-SAUF-LIVRAISONS", "47": "M9z-SAUF-POLICE",
    "48": "M9z-SAUF-RIVERAINS", "49": "M9z-SAUF-SERVICE", "50": "M9z-SAUF-TAXIS",
    "51": "M9z-SAUF-VEHICULES-AGRICOLES", "52": "M9z-SAUF-VEHICULES-AUTORISES", "53": "M9z-SECOURS",
    "54": "M9z-SIGNAL-AUTO", "55": "M9z-SORTIE-POMPIERS", "56": "M9z-SORTIE-VEHICULES",
    "57": "M9z-SUR-LE-TROTTOIR", "58": "M9z-VERGLAS", "59": "zz"
}

def classify_subsign(image):
    image = Image.fromarray(image).convert("RGB")
    inputs = processor(images=image, return_tensors="pt")
    
    with torch.no_grad():
        logits = model(**inputs).logits
        probs = torch.nn.functional.softmax(logits, dim=1).squeeze().tolist()
    
    return {labels[str(i)]: round(probs[i], 3) for i in range(len(probs))}

# Create Gradio interface
iface = gr.Interface(
    fn=classify_subsign,
    inputs=gr.Image(type="numpy"),
    outputs=gr.Label(label="Prediction Scores"),
    title="Road Subsigns Classification",
    description="Upload an image to predict the road subsign category."
)

if __name__ == "__main__":
    iface.launch()
```

---

# **Intended Use:**  

The **Road-Subsigns-Classification** model is designed to classify images of road subsigns into 60 categories. Potential use cases include:  

- **Traffic Management:** Assisting in automated monitoring and analysis of road signs.  
- **Autonomous Vehicles:** Helping vehicles understand road sign information.  
- **Smart Cities:** Enhancing traffic regulation systems.  
- **Driver Assistance Systems:** Providing visual cues for safer driving.  
- **Urban Planning:** Analyzing road sign data for infrastructure improvements.
m1 m11c1-e m2 m3a-droite m3a-gauche m3b-gauche m4a m4b m4c m4d1 m4d2 m4f m4g m4h m4u m4v m4z1 m4z2 m5-stop m6a m6h m6i m6j m8a m8b m8c m8d m8e m8f m9z-interdit-hors-cases m9z-sauf-bus m9z-sauf-bus-scolaire m9c m9d m9v m9z m9z-des-deux-cotes m9z-ecole m9z-parking-prive m9z-passage-sureleve m9z-propriete-privee m9z-rappel m9z-sauf-chantier m9z-sauf-convois-except m9z-sauf-cyclistes m9z-sauf-desserte m9z-sauf-livraisons m9z-sauf-police m9z-sauf-riverains m9z-sauf-service m9z-sauf-taxis m9z-sauf-vehicules-agricoles m9z-sauf-vehicules-autorises m9z-secours m9z-signal-auto m9z-sortie-pompiers m9z-sortie-vehicules m9z-sur-le-trottoir m9z-verglas zz