[en] The barcodes were invented to represent and store short pieces of alphanumeric information in tags to be later consumed by machines. With them, the optical barcode reader was born. The barcode decoding logic was designed to be as simple as possible. What made this technology revolutionary was the use of photonics to discern the width of the bands and the gaps between them. A key role was left to the user: The user was in charge of discovering the barcodes and aligning the reader with them. This task, trivial for a human, hides considerable complexity for a computer vision system. This TFG proposes making a mobile device to detect and tag all barcodes in the range of vision of its camera using the latest advancements in machine learning. A dataset of images containing barcodes was used as a starting point. These images need to be correctly tagged, so a semiautomatic tagging tool was built to fulfill this task. Once the dataset was tagged, it was used to train a number of machine learning models. The models intended, for instance sementation were built using R-CNN, while the ones intended for sematic segmentation were built using DeepLabV3+ instead. The DeepLabV3+ has two variations using two different backbones: ResNet and MobileNetV2. The R-CNN based model obtained an AP of 0.7554 with a mean inference time of 79.16ms. This inference time fails to reach our target time of 33ms or less. Conversely, the models based on DeepLabV3+ reached an AP of 0.8369 and 0.7856 with a mean inference time of 19.52 ms and 20.11 ms for the backbones of ResNet and MobileNetV2 respectively. These models were then used in an Android app to evaluate their behavior on a mobile phone. In the said mobile phone, the DeepLabV3+ archived a mean inference time of 127 ms for the ResNet variant and 89.83 ms for the MobileNetV2 variant. Even if these results do not reach our target time, we consider them quite promising. All models executed in Android were previously optimized with the TensorFlow Lite optimizer. This TFG has produced a semiautomatic tagging tool, multiple machine learning models for barcode detection, and an Android app with the same purpose.

[es] Los códigos de barras se diseñaron como una forma de representar información corta alfanumérica en etiquetas que luego eran leídas por dispositivos electrónicos, nacidos a la par que estos: los escáner laser. La tarea de decodificación en sí de los códigos se diseñó para que fuera trivial, mientras que el avance tecnológico estaba en la aplicación de la fotónica para recuperar los anchos de las barras y huecos entre ellas. No obstante, un rol muy importante en el proceso de lectura era dejado al usuario: la tarea de localización de los códigos de barras y alineación del lector con los mismos. Que a pesar de ser inmediato para un operario humano supone una tarea no despreciable para un sistema de visión por ordenador. Este TFG se propone como reto que un dispositivo móvil sea capaz de detectar y marcar todos los códigos de barras presentes en el campo de visión de su cámara aprovechando los avances en machine learning. Se ha partido de un banco de imágenes de códigos de barras. Estas imágenes han tenido que ser etiquetadas, para lo cual se ha desarrollado una herramienta etiquetadora semiautomática. Tras el proceso de etiquetado del banco de imágenes, se han entrenado con él una serie de modelos de machine learning. Estos modelos se basaron en la red de R-CNN para las tarea de segmentación de instancia y para realizar segmentación semántica en DeepLabV3+ con variantes que usaban alternativamente ResNet o MobileNetV2 como backbone de la red. El modelo basado R-CNN obtuvo un AP de 0.7554 y un tiempo de inferencia promedio de 79.16 ms, bastante por encima de nuestro tiempo objetivo de 33 ms. Por otro lado, los modelos basados DeepLabV3+ consiguieron un AP de 0.8369 y 0.7856 (con ResNet y MobileNetV2 respectivamente) y un satisfactorio tiempo de inferencia promedio de 20 ms para todas las variantes. Luego estos modelos han sido utilizados en una aplicación de Android con el fin de evaluar su comportamiento en un teléfono móvil. En dicho dispositivo, los modelos basados en DeepLabV3+ lograron un tiempo de inferencia promedio 127.0 ms y 89.83 ms para las variantes utilizando ResNet y MobileNetV2 respectivamente, lo cual si bien no logra llegar al tiempo objetivo (33ms), sí que son resultados prometedores dada la plataforma de ejecución. Estos resultados se obtuvieron tras aplicar sobre los modelos el optimizador de TensorFlow Lite. Los resultados de este TFG son en resumen: la herramienta etiquetadora semiautomática, varios modelos de machine learning para la detección de códigos de barras y una aplicación Android con el mismo fin.