Autor: Raimon Blanes Saumell
Tutor: Nicolás Sáenz Lechón
Fecha de lectura: 28 octubre de 2020
Este proyecto es un diseño de una aplicación que es capaz de identificar objetos con un tiempo de respuesta inmediato o prácticamente inmediato, a la vez que pretende ser una ventana que permita al lector conocer una parte de las últimas tecnologías desarrolladas en el campo de las redes neuronales convolucionales, más concretamente aquellas enfocadas en identificación mediante imágenes con tiempos de procesado bajo.
Actualmente la investigación en este tipo de redes está en alza tanto en el sector público como el privado. Cada vez son más las carreras tecnológicas que agregan este campo de conocimiento a su lista. Esto se debe principalmente a la gran eficiencia y versatilidad que el aprendizaje profundo puede brindar.
A día de hoy son varias las tecnologías que permiten alcanzar el objetivo de este proyecto, sin embargo, se ha optado por la opción que aportaba más libertad al proyecto. Tensorflow, escrito en Python y de código abierto, aporta una gran gama de posibilidades ya que dispone de muchas librerías con las que se puede complementar. Además, el autor posee mucho interés en desarrollar sus conocimientos en este entorno de trabajo.
A la hora de trabajar en el proyecto se han utilizado varias herramientas de desarrollo como Anaconda o Google Colaboratory, que han aportado gran utilidad y han reducido la carga de trabajo, sobre todo esta última ya que se usó esta plataforma como vía para entrenar la red neuronal. Proceso que requiere de un hardware de rendimiento aceptable y de mucho tiempo de computación (días).
El aprendizaje profundo busca patrones para identificar los objetos que se desea mediante imágenes que se introducen como entrenamiento, pero en ocasiones no se obtiene el resultado esperado. En estos casos es necesario volver a realizar el entrenamiento con una base de datos con un mayor número de muestras. En este proyecto aparte de contar con una gran base de datos de imágenes se ha utilizado la técnica de aprendizaje por transferencia, que reduce significativamente el tiempo de entrenamiento.
Para acercarse a las tecnologías más potentes del panorama se ha decidido usar el sistema de detección de objetos Yolov4, que fue publicado mientras se planteaban las líneas de desarrollo de este proyecto. Sin duda este sistema ha brindado una gran eficiencia al proyecto y ha aportado unos resultados muy satisfactorios.
Para hacer más accesible esta tecnología se ha desarrollado una interfaz gráfica con la que un usuario sin grandes conocimientos técnicos puede utilizar este sistema de detección. Siendo más funcional que estética, esta aplicación se ha desarrollado con la librería tkinter ya integrada por defecto en el lenguaje Python.
Todo lo anteriormente mencionado ha ayudado al desarrollo de una aplicación que permite la identificación de un determinado número de objetos (en concreto 10) sobre imágenes y videos. Además, los bajos tiempos de procesado han permitido que esta detección se pueda aplicar sobre el flujo de imágenes continuo que proporciona una cámara web y obtener unos resultados inmediatos y precisos.