Saltar al pie de página
HERRAMIENTAS DE CóDIGO DE BARRAS

Cómo Entender el Reconocimiento de Códigos QR con Aprendizaje Profundo

Los códigos de respuesta rápida (QR) se han convertido en una parte integral de nuestras vidas digitales, facilitando el intercambio de datos y la recuperación de información sin problemas. Reconocer códigos QR en imágenes es una aplicación valiosa del aprendizaje profundo, un subconjunto de la inteligencia artificial. En este artículo, te guiaremos a través del proceso de construir un sistema de reconocimiento de códigos QR utilizando aprendizaje profundo en .NET/C#.

Comprender el reconocimiento de códigos QR con aprendizaje profundo

El aprendizaje profundo, una rama del aprendizaje automático, implica entrenar redes neuronales para aprender patrones complejos a partir de datos. En el contexto del reconocimiento de códigos QR, los modelos de aprendizaje profundo pueden ser entrenados para identificar y decodificar códigos QR a partir de imágenes con diferentes tamaños, orientaciones y condiciones. Las Redes Neuronales Convolucionales (CNN) son una opción popular para tareas basadas en imágenes como el reconocimiento de códigos QR debido a su capacidad para capturar características visuales intrincadas.

En este artículo, usaremos ML.NET Model Builder para entrenar nuestro modelo.

Generador de modelos ML.NET

Model Builder es una herramienta poderosa proporcionada por Microsoft como parte del marco ML.NET para construir modelos de aprendizaje automático en .NET/C#. Simplifica y acelera el proceso de crear modelos de aprendizaje automático personalizados sin requerir un conocimiento profundo de los algoritmos de aprendizaje automático o una amplia experiencia en codificación. Model Builder está diseñado para ser fácil de usar y accesible, lo que lo convierte en una gran herramienta para los desarrolladores que quieren aprovechar las capacidades del aprendizaje automático en sus aplicaciones. Model Builder admite AutoML, que explora automáticamente diferentes algoritmos de aprendizaje automático y configuraciones para ayudarte a encontrar el que mejor se adapte a tu escenario.

Modelo de entrenamiento de reconocimiento de códigos QR

Entrenar un modelo de reconocimiento de códigos QR utilizando Model Builder implica una serie de pasos que te guían a través del proceso de creación y entrenamiento del modelo. En esta guía paso a paso, te llevaremos a través de cada etapa de entrenamiento de un modelo de códigos QR utilizando Model Builder en .NET/C#.

Paso 1: Configuración de su entorno

Antes de profundizar en la implementación, asegúrate de tener los siguientes requisitos previos:

  • Visual Studio: Descarga e instala Visual Studio, un entorno integrado de desarrollo (IDE) versátil para el desarrollo en .NET.
  • Model Builder: Puedes descargar el ML.NET Model Builder haciendo clic aquí.

Paso 2: Preparación de datos

Necesitamos Imágenes de Códigos QR para entrenar nuestro modelo. Puedes obtener Imágenes de Códigos QR de Kaggle o Roboflow. He descargado Imágenes de Códigos QR de Roboflow para este ejemplo.

Paso 3: Abra el generador de modelos

Abre el Proyecto de Visual Studio.

Haz clic derecho en el Proyecto > Añadir > Modelo de aprendizaje automático...

Cómo Entender el Reconocimiento de Códigos QR con Aprendizaje Profundo: Figura 1

Aparecerá la siguiente ventana.

Cómo Entender el Reconocimiento de Códigos QR con Aprendizaje Profundo: Figura 2

Asigna un nombre al modelo y haz clic en el botón Añadir. Aparecerá la siguiente ventana:

Cómo Entender el Reconocimiento de Códigos QR con Aprendizaje Profundo: Figura 3

Desplázate hacia abajo y encuentra "Detección de Objetos" bajo Visión por Computadora.

Cómo Entender el Reconocimiento de Códigos QR con Aprendizaje Profundo: Figura 4

Paso 4: Seleccionar el entorno de formación

Selecciona Detección de Objetos ya que tenemos que detectar códigos QR del conjunto de datos proporcionado. Selecciona Local o Azure según tu preferencia. Para este ejemplo, estamos seleccionando Local.

Después de hacer clic en Local, aparecerá la siguiente ventana:

Cómo Entender el Reconocimiento de Códigos QR con Aprendizaje Profundo: Figura 5

Selecciona un CPU o GPU Local según tu elección. También puedes seleccionar Azure. Para eso, deberías tener una Suscripción Activa de Azure. Después de seleccionar tu entorno de prueba, haz clic en el botón Siguiente. Aparecerá la siguiente ventana.

Cómo Entender el Reconocimiento de Códigos QR con Aprendizaje Profundo: Figura 6

Paso 5: Seleccionar datos

Seleccionar los Datos es la parte más importante del proceso de entrenamiento. Como se mencionó antes, obtendré los datos de Robo Flow. Abre RoboFlow, busca Códigos QR. Los datos pueden tener códigos QR blancos o tener muchas características locales. Estoy usando el Conjunto de Datos de Visión por Computadora de detección de QR para este tutorial. Descarga los datos seleccionando el formato. He elegido el Formato COCO para descargar estos datos, ya que este formato se utilizará más adelante para el preprocesamiento de datos y el reconocimiento de imágenes.

Cómo Entender el Reconocimiento de Códigos QR con Aprendizaje Profundo: Figura 7

Ahora que tienes los datos, volvamos a Visual Studio. Selecciona la Ruta de Entrada del archivo COCO descargado anteriormente. También puedes elegir Vott, pero para eso, necesitas crear un archivo Vott para tus datos. Aparecerá la siguiente ventana.

Cómo Entender el Reconocimiento de Códigos QR con Aprendizaje Profundo: Figura 8

Ahora, haz clic en el botón Siguiente Paso y avanza a la pestaña de Entrenamiento.

Cómo Entender el Reconocimiento de Códigos QR con Aprendizaje Profundo: Figura 9

Paso 6: Entrenar el modelo de detección de códigos QR

Ahora, haz clic en Comenzar Entrenamiento del Modelo para iniciar el entrenamiento. El Model Builder convertirá automáticamente en imágenes binarias y usará redes neuronales preferidas según corresponda. No necesitamos especificar nada. Lo mejor de Model Builder es que un desarrollador con conocimientos mínimos de aprendizaje profundo puede entrenar, probar y utilizar un modelo.

Cómo Entender el Reconocimiento de Códigos QR con Aprendizaje Profundo: Figura 10

Model Builder entrenará el modelo en el conjunto de datos especificado y mostrará el progreso del entrenamiento. El entrenamiento anterior tomará tiempo dependiendo del sistema. El modelo tomará todos los Códigos QR uno por uno y aprenderá sus características. Puedes probar tu modelo pasando cualquier imagen de prueba de código QR al modelo una vez que se complete el entrenamiento.

Paso 7: Evaluar el modelo

Después del entrenamiento, Model Builder evaluará el rendimiento del modelo en los datos de validación.

Verás métricas de evaluación como precisión (accuracy), precisión (precision), sensibilidad (recall) y F1-score. Estas métricas evalúan qué tan bien está funcionando el modelo.

Paso 8: Consumir

Ahora que nuestro modelo está entrenado y el Detector de Códigos QR está listo, necesitamos consumir ese modelo para detectar el código y luego decodificar el Código QR detectado. Este Modelo solo detectará si una entrada dada contiene algún código de respuesta rápida o no. Esto no decodificará el Código QR. Para la decodificación de Códigos QR, necesitamos una Biblioteca de terceros. Iron Barcode es la mejor biblioteca para leer la Imagen del Código QR. Exploremos un poco sobre Iron Barcode antes de continuar.

Iron Barcode - La biblioteca de decodificación de códigos QR

IronBarcode es una biblioteca .NET específicamente diseñada para trabajar con códigos QR, un tipo de código de barras 2D ampliamente utilizado para codificar información como URL, texto, detalles de contacto y más. Esta biblioteca simplifica la creación de códigos QR proporcionando a los desarrolladores herramientas intuitivas para generar códigos QR con características personalizables como tamaño, color y corrección de errores.

Además, IronBarcode permite la extracción de información de códigos QR incrustados dentro de imágenes, convirtiéndose en un recurso indispensable para integrar sin problemas capacidades de generación y decodificación de códigos QR en aplicaciones .NET.

En este tutorial, lo usaremos para decodificar el Código QR si el Código QR es detectado por nuestro modelo.

Instalar el paquete NuGet de Iron Barcode

Escribe el siguiente comando en la Consola del Administrador de Paquetes NuGet para descargar el paquete NuGet IronBarcode.

Install-Package BarCode

El comando anterior instalará el paquete Iron Barcode y añadirá una referencia a nuestro proyecto.

Cómo Entender el Reconocimiento de Códigos QR con Aprendizaje Profundo: Figura 11

Decodificar códigos QR

Escribe el siguiente código para leer el único Código QR detectado.

using IronBarCode;

string qrCodeImagePath = "myQrCode.png";

// Quickly reads a single QR Code from the provided image path
var data = BarcodeReader.QuicklyReadOneBarcode(qrCodeImagePath);

// Outputs the decoded value from the QR Code
Console.WriteLine(data.Value.ToString());
using IronBarCode;

string qrCodeImagePath = "myQrCode.png";

// Quickly reads a single QR Code from the provided image path
var data = BarcodeReader.QuicklyReadOneBarcode(qrCodeImagePath);

// Outputs the decoded value from the QR Code
Console.WriteLine(data.Value.ToString());
Imports IronBarCode

Private qrCodeImagePath As String = "myQrCode.png"

' Quickly reads a single QR Code from the provided image path
Private data = BarcodeReader.QuicklyReadOneBarcode(qrCodeImagePath)

' Outputs the decoded value from the QR Code
Console.WriteLine(data.Value.ToString())
$vbLabelText   $csharpLabel

El siguiente es el resultado:

Cómo Entender el Reconocimiento de Códigos QR con Aprendizaje Profundo: Figura 12

Conclusión

En conclusión, el Model Builder y la biblioteca IronBarcode son una combinación valiosa para los desarrolladores .NET que desean trabajar con códigos QR. Model Builder hace que el trabajo complicado de crear y entrenar modelos para el reconocimiento de códigos QR sea bastante fácil. Y cuando agregas la biblioteca IronBarcode, las cosas se vuelven aún más simples: ayuda a leer códigos QR de imágenes sin complicaciones. Este trabajo en equipo no solo mejora las tareas de inventario y marketing, sino que también hace que tus aplicaciones sean más divertidas de usar. Cuando Model Builder e IronBarcode se unen, es como mezclar tecnología súper inteligente en tus aplicaciones .NET, abriendo todo tipo de posibilidades geniales para cosas de códigos QR. IronBarcode licencia comercial está disponible a un costo muy bajo con una licencia de prueba gratuita.

Jordi Bardia
Ingeniero de Software
Jordi es más competente en Python, C# y C++. Cuando no está aprovechando sus habilidades en Iron Software, está programando juegos. Compartiendo responsabilidades para pruebas de productos, desarrollo de productos e investigación, Jordi agrega un valor inmenso a la mejora continua del producto. La experiencia variada lo mantiene ...
Leer más