attilaultzindur commited on
Commit
8c3c7d8
·
1 Parent(s): d8c83d4

initial model push

Browse files
Files changed (6) hide show
  1. .gitattributes +0 -34
  2. README.md +5 -0
  3. config.json +18 -0
  4. handler.py +35 -0
  5. model.safetensors +3 -0
  6. requirements.txt +4 -0
.gitattributes CHANGED
@@ -1,35 +1 @@
1
- *.7z filter=lfs diff=lfs merge=lfs -text
2
- *.arrow filter=lfs diff=lfs merge=lfs -text
3
- *.bin filter=lfs diff=lfs merge=lfs -text
4
- *.bz2 filter=lfs diff=lfs merge=lfs -text
5
- *.ckpt filter=lfs diff=lfs merge=lfs -text
6
- *.ftz filter=lfs diff=lfs merge=lfs -text
7
- *.gz filter=lfs diff=lfs merge=lfs -text
8
- *.h5 filter=lfs diff=lfs merge=lfs -text
9
- *.joblib filter=lfs diff=lfs merge=lfs -text
10
- *.lfs.* filter=lfs diff=lfs merge=lfs -text
11
- *.mlmodel filter=lfs diff=lfs merge=lfs -text
12
- *.model filter=lfs diff=lfs merge=lfs -text
13
- *.msgpack filter=lfs diff=lfs merge=lfs -text
14
- *.npy filter=lfs diff=lfs merge=lfs -text
15
- *.npz filter=lfs diff=lfs merge=lfs -text
16
- *.onnx filter=lfs diff=lfs merge=lfs -text
17
- *.ot filter=lfs diff=lfs merge=lfs -text
18
- *.parquet filter=lfs diff=lfs merge=lfs -text
19
- *.pb filter=lfs diff=lfs merge=lfs -text
20
- *.pickle filter=lfs diff=lfs merge=lfs -text
21
- *.pkl filter=lfs diff=lfs merge=lfs -text
22
- *.pt filter=lfs diff=lfs merge=lfs -text
23
- *.pth filter=lfs diff=lfs merge=lfs -text
24
- *.rar filter=lfs diff=lfs merge=lfs -text
25
  *.safetensors filter=lfs diff=lfs merge=lfs -text
26
- saved_model/**/* filter=lfs diff=lfs merge=lfs -text
27
- *.tar.* filter=lfs diff=lfs merge=lfs -text
28
- *.tar filter=lfs diff=lfs merge=lfs -text
29
- *.tflite filter=lfs diff=lfs merge=lfs -text
30
- *.tgz filter=lfs diff=lfs merge=lfs -text
31
- *.wasm filter=lfs diff=lfs merge=lfs -text
32
- *.xz filter=lfs diff=lfs merge=lfs -text
33
- *.zip filter=lfs diff=lfs merge=lfs -text
34
- *.zst filter=lfs diff=lfs merge=lfs -text
35
- *tfevents* filter=lfs diff=lfs merge=lfs -text
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  *.safetensors filter=lfs diff=lfs merge=lfs -text
 
 
 
 
 
 
 
 
 
 
README.md ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
 
1
+ # Garbage Classifier · EfficientNet‑V2‑S (torchvision)
2
+
3
+ Finetuned model for 10‑class garbage image classification.
4
+
5
+ > **Owner:** `attilaultzindur`   •   **Pushed:** 2025-05-05
config.json ADDED
@@ -0,0 +1,18 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "architecture": "torchvision_efficientnet_v2_s",
3
+ "input_size": 224,
4
+ "num_labels": 10,
5
+ "label_names": [
6
+ "battery",
7
+ "biological",
8
+ "cardboard",
9
+ "clothes",
10
+ "glass",
11
+ "metal",
12
+ "paper",
13
+ "plastic",
14
+ "shoes",
15
+ "trash"
16
+ ],
17
+ "library": "torchvision"
18
+ }
handler.py ADDED
@@ -0,0 +1,35 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from typing import Dict, Any
2
+ import io, base64, torch, torchvision
3
+ from PIL import Image
4
+ from torchvision import transforms as T
5
+
6
+ class EndpointHandler:
7
+ def __init__(self, path='.'): # path = repo root in container
8
+ self.labels = ['battery', 'biological', 'cardboard', 'clothes', 'glass', 'metal', 'paper', 'plastic', 'shoes', 'trash']
9
+ self.model = torchvision.models.efficientnet_v2_s(weights=None)
10
+ nf = self.model.classifier[1].in_features
11
+ self.model.classifier = torch.nn.Sequential(
12
+ torch.nn.Linear(nf, 256),
13
+ torch.nn.ReLU(inplace=True),
14
+ torch.nn.Dropout(0.5),
15
+ torch.nn.Linear(256, len(self.labels))
16
+ )
17
+ self.model.load_state_dict(torch.load(f"{path}/model.safetensors", map_location="cpu"))
18
+ self.model.eval()
19
+ self.trans = T.Compose([
20
+ T.Resize((224, 224)),
21
+ T.ToTensor(),
22
+ T.Normalize(mean=[0.485,0.456,0.406], std=[0.229,0.224,0.225])
23
+ ])
24
+
25
+ def __call__(self, data: Dict[str, Any]):
26
+ img_bytes = data['inputs']
27
+ if isinstance(img_bytes, str): # base64
28
+ img_bytes = base64.b64decode(img_bytes)
29
+ img = Image.open(io.BytesIO(img_bytes)).convert('RGB')
30
+ x = self.trans(img).unsqueeze(0)
31
+ with torch.no_grad():
32
+ probs = self.model(x).softmax(1)[0]
33
+ topk = probs.topk(5)
34
+ return [{'label': self.labels[i], 'score': float(topk.values[j])}
35
+ for j, i in enumerate(topk.indices)]
model.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:f0d1ba4d1966d0cf2eb8143e5c3b64f50d3e2c5484c67036dfcf52936cbb319c
3
+ size 82726304
requirements.txt ADDED
@@ -0,0 +1,4 @@
 
 
 
 
 
1
+ torch
2
+ torchvision
3
+ pillow
4
+ safetensors