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...

Aparecerá la siguiente ventana.

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

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

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:

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.

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.

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.

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

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.

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.

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())El siguiente es el resultado:

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.







