Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
@@ -5,28 +5,48 @@ from torchvision import transforms, models
|
|
5 |
import pickle
|
6 |
from resnest.torch import resnest50
|
7 |
|
8 |
-
# Carregar nomes das classes
|
9 |
with open('class_names.pkl', 'rb') as f:
|
10 |
class_names_en = pickle.load(f)
|
11 |
|
12 |
-
#
|
|
|
|
|
|
|
13 |
class_names_pt = {
|
14 |
'apple': 'maçã',
|
|
|
|
|
15 |
'banana': 'banana',
|
|
|
16 |
'cherry': 'cereja',
|
17 |
-
'
|
|
|
18 |
'grape': 'uva',
|
|
|
19 |
'kiwi': 'kiwi',
|
|
|
20 |
'mango': 'manga',
|
|
|
21 |
'orange': 'laranja',
|
|
|
22 |
'pear': 'pera',
|
23 |
-
'
|
|
|
|
|
24 |
}
|
25 |
|
26 |
-
# Criar lista de nomes em português
|
27 |
-
class_names = [
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
28 |
|
29 |
-
#
|
30 |
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
|
31 |
|
32 |
model = resnest50(pretrained=None)
|
@@ -68,13 +88,13 @@ def predict_image(img):
|
|
68 |
top3_probs, top3_indices = torch.topk(probabilities, 3)
|
69 |
|
70 |
results = {
|
71 |
-
class_names[i]: p
|
72 |
for p, i in zip(top3_probs, top3_indices)
|
73 |
}
|
74 |
|
75 |
# Obter a melhor previsão
|
76 |
best_class = class_names[top3_indices[0]]
|
77 |
-
best_conf = top3_probs[0]
|
78 |
|
79 |
# Salvar resultados
|
80 |
with open('/tmp/prediction_results.txt', 'a') as f:
|
|
|
5 |
import pickle
|
6 |
from resnest.torch import resnest50
|
7 |
|
8 |
+
# Carregar nomes das classes originais
|
9 |
with open('class_names.pkl', 'rb') as f:
|
10 |
class_names_en = pickle.load(f)
|
11 |
|
12 |
+
# Imprimir as classes originais para debug
|
13 |
+
print("Classes originais encontradas:", class_names_en)
|
14 |
+
|
15 |
+
# Dicionário de tradução mais completo (incluindo variações)
|
16 |
class_names_pt = {
|
17 |
'apple': 'maçã',
|
18 |
+
'Apple': 'maçã',
|
19 |
+
'Apple 10': 'maçã', # adicionando variações
|
20 |
'banana': 'banana',
|
21 |
+
'Banana': 'banana',
|
22 |
'cherry': 'cereja',
|
23 |
+
'Cherry': 'cereja',
|
24 |
+
'chico': 'sapoti',
|
25 |
'grape': 'uva',
|
26 |
+
'Grape': 'uva',
|
27 |
'kiwi': 'kiwi',
|
28 |
+
'Kiwi': 'kiwi',
|
29 |
'mango': 'manga',
|
30 |
+
'Mango': 'manga',
|
31 |
'orange': 'laranja',
|
32 |
+
'Orange': 'laranja',
|
33 |
'pear': 'pera',
|
34 |
+
'Pear': 'pera',
|
35 |
+
'tomato': 'tomate',
|
36 |
+
'Tomato': 'tomate'
|
37 |
}
|
38 |
|
39 |
+
# Criar lista de nomes em português, usando o nome original se não houver tradução
|
40 |
+
class_names = []
|
41 |
+
for en in class_names_en:
|
42 |
+
# Remover números e espaços extras para normalizar
|
43 |
+
base_name = ''.join([i for i in en if not i.isdigit()]).strip()
|
44 |
+
translated = class_names_pt.get(base_name, class_names_pt.get(en, en))
|
45 |
+
class_names.append(translated)
|
46 |
+
|
47 |
+
print("Classes traduzidas:", class_names)
|
48 |
|
49 |
+
# Restante do código permanece igual...
|
50 |
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
|
51 |
|
52 |
model = resnest50(pretrained=None)
|
|
|
88 |
top3_probs, top3_indices = torch.topk(probabilities, 3)
|
89 |
|
90 |
results = {
|
91 |
+
class_names[i]: float(p)
|
92 |
for p, i in zip(top3_probs, top3_indices)
|
93 |
}
|
94 |
|
95 |
# Obter a melhor previsão
|
96 |
best_class = class_names[top3_indices[0]]
|
97 |
+
best_conf = float(top3_probs[0]) * 100
|
98 |
|
99 |
# Salvar resultados
|
100 |
with open('/tmp/prediction_results.txt', 'a') as f:
|