Spaces:
Sleeping
Sleeping
Update inference.py
Browse files- inference.py +25 -24
inference.py
CHANGED
@@ -16,23 +16,6 @@ model.to(device)
|
|
16 |
|
17 |
import json
|
18 |
|
19 |
-
boxes, words = OCR(image)
|
20 |
-
# Preprocessa l'immagine e il testo con il processore di LayoutLMv3
|
21 |
-
encoding = processor(image, words=words, boxes=boxes, return_tensors="pt", padding="max_length", truncation=True)
|
22 |
-
|
23 |
-
# Esegui l'inferenza con il modello fine-tuned
|
24 |
-
with torch.no_grad():
|
25 |
-
outputs = model(**encoding)
|
26 |
-
|
27 |
-
# Ottieni le etichette previste dal modello
|
28 |
-
logits = outputs.logits
|
29 |
-
predicted_ids = logits.argmax(-1).squeeze().tolist()
|
30 |
-
|
31 |
-
predictions = outputs.logits.argmax(-1).squeeze().tolist()
|
32 |
-
token_boxes = encoding.bbox.squeeze().tolist()
|
33 |
-
probabilities = torch.softmax(outputs.logits, dim=-1)
|
34 |
-
confidence_scores = probabilities.max(-1).values.squeeze().tolist()
|
35 |
-
|
36 |
# Mappa gli ID predetti nelle etichette di classificazione
|
37 |
labels = processor.tokenizer.convert_ids_to_tokens(predicted_ids)
|
38 |
|
@@ -53,12 +36,30 @@ def create_json_output(words, labels, boxes):
|
|
53 |
json_output = json.dumps(output, indent=4)
|
54 |
return json_output
|
55 |
|
56 |
-
|
57 |
-
json_result = create_json_output(words, labels, boxes)
|
58 |
-
|
59 |
-
for prediction, box, confidence in zip(true_predictions, true_boxes, true_confidence_scores):
|
60 |
-
draw.rectangle(box)
|
61 |
-
draw.text((box[0]+10, box[1]-10), text=prediction+ ", "+ str(confidence), font=font, fill="black", font_size="15")
|
62 |
|
63 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
64 |
|
|
|
16 |
|
17 |
import json
|
18 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
19 |
# Mappa gli ID predetti nelle etichette di classificazione
|
20 |
labels = processor.tokenizer.convert_ids_to_tokens(predicted_ids)
|
21 |
|
|
|
36 |
json_output = json.dumps(output, indent=4)
|
37 |
return json_output
|
38 |
|
39 |
+
def prediction()
|
|
|
|
|
|
|
|
|
|
|
40 |
|
41 |
+
boxes, words = OCR(image)
|
42 |
+
# Preprocessa l'immagine e il testo con il processore di LayoutLMv3
|
43 |
+
encoding = processor(image, words=words, boxes=boxes, return_tensors="pt", padding="max_length", truncation=True)
|
44 |
+
|
45 |
+
# Esegui l'inferenza con il modello fine-tuned
|
46 |
+
with torch.no_grad():
|
47 |
+
outputs = model(**encoding)
|
48 |
+
|
49 |
+
# Ottieni le etichette previste dal modello
|
50 |
+
logits = outputs.logits
|
51 |
+
predicted_ids = logits.argmax(-1).squeeze().tolist()
|
52 |
+
|
53 |
+
predictions = outputs.logits.argmax(-1).squeeze().tolist()
|
54 |
+
token_boxes = encoding.bbox.squeeze().tolist()
|
55 |
+
probabilities = torch.softmax(outputs.logits, dim=-1)
|
56 |
+
confidence_scores = probabilities.max(-1).values.squeeze().tolist()
|
57 |
+
# Crea il JSON usando i risultati ottenuti
|
58 |
+
json_result = create_json_output(words, labels, boxes)
|
59 |
+
|
60 |
+
for prediction, box, confidence in zip(true_predictions, true_boxes, true_confidence_scores):
|
61 |
+
draw.rectangle(box)
|
62 |
+
draw.text((box[0]+10, box[1]-10), text=prediction+ ", "+ str(confidence), font=font, fill="black", font_size="15")
|
63 |
+
|
64 |
+
return image, json_result
|
65 |
|