matiasbonfanti commited on
Commit
fa297e7
1 Parent(s): 8ead2ef

Primer commit

Browse files
Files changed (5) hide show
  1. app.py +94 -0
  2. best-detect.pt +3 -0
  3. requirements.txt +6 -0
  4. seg-640.pt +3 -0
  5. sin_nota.jpg +0 -0
app.py ADDED
@@ -0,0 +1,94 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+ import gradio as gr
3
+ import cv2
4
+ from matplotlib import pyplot as plt
5
+ import numpy as np
6
+ from typing import List
7
+ from ultralytics import YOLO
8
+ import cv2
9
+ import numpy as np
10
+ import os
11
+ import shutil
12
+
13
+
14
+ def recortar_notas(imagen_path: str) -> int:
15
+ if os.path.exists('deteccion'):
16
+ shutil.rmtree('deteccion')
17
+ if os.path.exists('diarios'):
18
+ shutil.rmtree('diarios')
19
+ if os.path.exists('recorte'):
20
+ shutil.rmtree('recorte')
21
+
22
+ model = YOLO("seg-640.pt")
23
+ results = model.predict(source=imagen_path, save=True, save_txt=True, project="diarios", classes=0, conf=0.5)
24
+
25
+ # cargar imagen tif
26
+ image = cv2.imread(imagen_path)
27
+
28
+ # crear una carpeta para guardar los recortes
29
+ filename = os.path.splitext(os.path.basename(results[0].path))[0]
30
+ foldername = os.path.splitext(filename)[0]
31
+ if not os.path.exists(f"recorte/{foldername}"):
32
+ os.makedirs(f"recorte/{foldername}")
33
+
34
+ datos = results[0].masks.xy
35
+
36
+ num_notas = 0
37
+
38
+ for i, coords in enumerate(datos):
39
+ # coordenadas de segmentación
40
+ coordenadas = np.array(coords)
41
+
42
+ # crear una máscara vacía
43
+ mask = np.zeros((image.shape[0], image.shape[1]), dtype=np.uint8)
44
+
45
+ # dibujar un polígono en la máscara
46
+ cv2.fillPoly(mask, [coordenadas.astype(np.int32)], 255)
47
+
48
+ # aplicar la máscara a la imagen
49
+ masked = cv2.bitwise_and(image, image, mask=mask)
50
+
51
+ # recortar la imagen utilizando la caja delimitadora de la máscara
52
+ x, y, w, h = cv2.boundingRect(mask)
53
+ recorte = masked[y:y+h, x:x+w]
54
+
55
+ # guardar el recorte como una imagen
56
+ recorte_path = os.path.join(f"recorte/{foldername}", f"nota {i}.jpg")
57
+ cv2.imwrite(recorte_path, recorte)
58
+
59
+ num_notas += 1
60
+
61
+ noticias(foldername)
62
+ segmentacion = f"diarios/predict/{filename}.png"
63
+ recorte1 = f"recorte/{foldername}/nota 0.jpg"
64
+ prediccion = f"deteccion/{foldername}/predict/nota 0.jpg"
65
+
66
+ try:
67
+ recorte2 = f"recorte/{foldername}/nota 1.jpg"
68
+ prediccion2 = f"deteccion/{foldername}/predict/nota 1.jpg"
69
+ if not os.path.exists(recorte2):
70
+ raise Exception(f"El archivo {recorte2} no existe.")
71
+ except:
72
+ recorte2 = "sin_nota.jpg"
73
+ prediccion2 = "sin_nota.jpg"
74
+
75
+ return cv2.imread(segmentacion), num_notas, recorte1, recorte2,prediccion, prediccion2
76
+
77
+ def noticias(carpeta):
78
+ nombre = carpeta
79
+ model = YOLO("best-detect.pt")
80
+ results = model.predict(source=f"recorte/{nombre}", save=True, save_txt=True,project=f"deteccion/{nombre}", conf=0.75) # save plotted images
81
+ return print(f"Imagen {nombre} procesada correctamente")
82
+
83
+ gr.Interface(
84
+ fn = recortar_notas,
85
+ inputs = [ gr.components.Image(type="filepath", label="Input") ],
86
+ outputs = [ gr.components.Image(type="filepath", label="Segmentacion"), gr.Label(label="Numero de Notas"),
87
+ gr.components.Image(type="filepath", label="Recorte Nota"),gr.components.Image(type="filepath", label="Recorte Nota"),
88
+ gr.components.Image(type="filepath", label="Deteccion"),gr.components.Image(type="filepath", label="Deteccion"), ],
89
+
90
+ title="IA por la Identidad",
91
+ description="Datathon Fundacion Sadosky",
92
+ examples=[ ['clarin.jpg']],
93
+ allow_flagging="never"
94
+ ).launch(debug=True, enable_queue=True)
best-detect.pt ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:f2feb142d660f1147ebe3bae95a449830e98fae0db05489c2d4fd2913002e199
3
+ size 6225400
requirements.txt ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
 
1
+ gradio
2
+ typing==3.7.4.3
3
+ ultralytics==8.0.70
4
+ opencv-python==4.6.0.66
5
+ numpy==1.23.5
6
+
seg-640.pt ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:da27e0b0275104f65e48cb3d4174afbb7b67b8bf72cfc0624f92ba4d3fbf3bb6
3
+ size 92283287
sin_nota.jpg ADDED