En este documento se detallará una breve descripción del modelo implementado (se extiende en los comentarios del código) y una descripción de los requerimientos y pasos para ejecutar el proyecto.
El modelo implementado está basado en dos modelos construidos y entrenados con transfer learning a partir de YOLOv3 (Modelo estado del arte en Object Detection and Recognition).
Es un modelo derivado de YOLOv3 con transfer learning encargado de detectar fechas y firmas a partir del input de una imagen.
Finalmente termina recortando la fecha detectada para ser procesada por el YOLOv3-DOCR.
Es un modelo derivado de YOLOv3 con transfer learning encargado de detectar y clasificar los números dentro de las fechas recortadas detectadas por el modelo YOLOv3-SDF.
A partir de estos números se aplican una serie de algoritmos para separarlos efectivamente por dia, mes y año.
El entrenamiento fue realizado en un entorno de Google Colab y se etiquetaron las imágenes de entrenamiento utilizando la herramienta labelimg obtenida de github. Más detalle se puede observar en la carpeta /training_data.
Se eligieron los pesos de las épocas con mejor performance.
Una muestra de las detecciones hechas por nuestros modelos se puede encontrar en la carpeta /sample_detections.
El código está completamente comentado. app.py
en la raíz del proyecto ejecuta el código. Y YoloImplementation.py
en la carpeta /yolo_impl
ejecuta la implementación y algoritmos utilizados en todo el modelo.
- Librería time (viene con python)
- Librería os (viene con python)
- Librería opencv
pip install opencv-python==4.5.2
- Librería numpy
pip install numpy
- Librería pandas
pip install pandas
- Clonar repositorio de git
git clone https://github.com/LuisRivera1699/KichAI-EntelDataton.git
- Descargar la carpeta yolov3_models. Descomprimir en la raíz. (En esta carpeta están los pesos y los modelos entrenados. Y github no nos permite subir más de 100mb). Link de descarga: (https://drive.google.com/drive/folders/1iSDbVLtyADoSm0WWYhiTQ1ppUC9c9te6?usp=sharing)
- Dirigirse a la raíz del proyecto y ejecutar:
app.py
opython app.py
- Esperar a que el modelo procese las imágenes. Demora aproximadamente 80 segundos.
- Cuando el modelo haya acabado, revisar la carpeta /output. Dentro de ella se encontrará un .csv y un .xlsx con el nombre 'model_output' contenido las salidas del modelo.
Se agradece y dan créditos por la ayuda que nos brindaron a las siguientes guías y repositorios open source:
- YOLOv3 Custom Object Detection with Transfer Learning. Guía de Transfer Learning con YOLOv3.
- LabelImg. Herramienta de etiquetado en formato YOLOv3.
- Darknet Architecture. Arquitectura de red sobre la cual corre YOLOv3.
- YOLOv3 Weights. Pesos pre-entrenados de YOLOv3.