Localizador de códigos de barras mediante inteligencia artificial
Fecha
2022Resumen
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. 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.