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:
|