Aprendizado de máquina com código QR: um tutorial para desenvolvedores
Códigos de Resposta Rápida (QR) tornaram-se uma parte integrante da sociedade moderna, revolucionando a maneira como a informação é compartilhada e acessada. Esses códigos de barras bidimensionais consistem em uma matriz de quadrados pretos e brancos que podem ser escaneados usando a câmera de um smartphone para recuperar rapidamente informações armazenadas, como URLs, dados de contato, URLs de sites, detalhes de produtos, entre outros. No entanto, à medida que a tecnologia evolui, também evoluem as capacidades dos códigos QR. Machine Learning (ML) emergiu como uma ferramenta poderosa para aprimorar os processos de geração, reconhecimento e decodificação de códigos QR, levando a experiências de usuário melhoradas e maior funcionalidade.
O mundo da troca de informações e dados foi transformado pelo uso generalizado de códigos QR e códigos de barra. Esses códigos bidimensionais fornecem acesso rápido ao conteúdo digital e servem a vários propósitos em diferentes indústrias. No entanto, distinguir entre códigos QR e códigos de barras pode ser desafiador, especialmente ao lidar com uma ampla gama de códigos. Usando o poder do Aprendizado de Máquina (ML) e o framework .NET/C#, os desenvolvedores podem criar um sistema inteligente que classifica com precisão códigos QR e códigos de barras, simplificando o processamento de dados e melhorando as experiências dos usuários. Integrar as capacidades de decodificação do IronBarcode melhora ainda mais a solução, permitindo a extração precisa de conteúdo dos códigos reconhecidos.
Neste artigo, treinaremos o modelo que classificará a entrada dada como Código de Barras ou Código QR, e depois disso, decodificaremos o código de entrada usando o IronBarcode.
Usando o Model Builder do ML.NET para Classificação de Códigos QR
Model Builder, uma ferramenta integrada no Visual Studio, simplifica o processo de construção de modelos de Aprendizado de Máquina ao fornecer uma interface intuitiva. Usaremos o Model Builder para criar um modelo de classificação que distingue entre códigos QR e códigos de barras. Uma vez concluída a classificação, integraremos o IronBarcode para decodificar os códigos reconhecidos.
Passo 1: Coleta de Dados
O primeiro passo para treinar qualquer modelo é a coleta de dados. Precisamos de dados para treinar o Modelo. Baixei dados de Kaggle. Você pode baixá-los de qualquer fonte, conforme sua preferência. Após baixar o conjunto de dados, crie um diretório principal e coloque ambos os conjuntos de dados dentro desse diretório. Os dados estão organizados em dois subdiretórios:
- Códigos de Barras
- Códigos QR

O próximo passo é abrir o Visual Studio e criar um novo Modelo de Aprendizado de Máquina.
Passo 2: Criar Projeto no Visual Studio e Adicionar um novo Modelo de Aprendizado de Máquina
Crie seu Projeto no Visual Studio. O projeto pode ser de qualquer tipo, como ASP.NET Web API, ASP.NET MVC, WEB Forms ou uma aplicação de console. Neste exemplo, estou usando uma aplicação de console. Clique com o botão direito no Projeto no Solution Explorer. Selecione Adicionar > Modelo de Aprendizado de Máquina conforme mostrado abaixo.

Dê nome ao seu modelo de aprendizado de máquina e clique no botão Adicionar.

Passo 3: Selecionar Cenário
Uma nova janela aparecerá após adicionar o arquivo de modelo de aprendizado de máquina. Role para baixo e selecione Classificação de Imagem. Classificação de Imagem é uma das técnicas de visão computacional que usaremos neste tutorial. Estamos selecionando Classificação de Imagem em vez de Reconhecimento de Imagem, pois apenas precisamos diferenciar entre Código de Resposta Rápida (Código QR) e Código de Barras, não precisamos reconhecê-los a partir de uma imagem dada.

Passo 4: Selecionar Ambiente
O próximo passo após selecionar um cenário é escolher o ambiente. Podemos escolher ou nosso sistema local para treinar o modelo ou o Azure Cloud. Devemos ter uma assinatura ativa do Azure para usar o Azure como nosso ambiente.
Passo 5: Selecionar Dados
Neste passo, precisamos passar os dados que coletamos antes no passo #1. Já organizamos os dados em subcategorias no passo #1 conforme necessário pelo Model Builder.
Forneça o caminho do diretório principal do seu conjunto de dados na opção Selecionar Pasta. Podemos pré-visualizar nossos dados como mostrado abaixo.

Também podemos visualizar a pasta de Códigos QR clicando na guia de códigos QR na pré-visualização de dados.

Após selecionar os dados, clique no botão Avançar, isto o levará para a tela de treinamento.
Passo 6: Treinar o Modelo
Clique em Iniciar Treinamento do Modelo, e ele começará a treinar como mostrado abaixo. Certifique-se de que o Visual Studio não esteja aberto no Modo de Administrador, caso contrário, ocorrerá um erro.

Ele começará o treinamento e levará tempo. A duração do treinamento variará dependendo das capacidades do sistema. O Model Builder usa AutoML. Ele usará automaticamente técnicas adequadas de aprendizado de máquina, nível de correção de erros, reconhecer padrões, redução de ruído, ajuste de contraste, processo de aprendizado e outras configurações conforme necessário.
Etapa 7: Avaliação do Modelo
Após o treinamento, avalie o desempenho do modelo passando os dados de teste para garantir a classificação precisa.
Etapa 8: Consumir Modelo
Assim que o modelo estiver treinado e avaliado, podemos exportá-lo e consumi-lo. No nosso caso de uso, temos que classificar o Código QR do Código de Barras e, em seguida, ler seus dados codificados. Precisamos de uma biblioteca de terceiros para decodificar dados, uma vez que o modelo de aprendizado de máquina não pode decodificar o código QR ou código de barras, ele apenas irá classificá-lo.
IronBarcode é uma biblioteca ideal para decodificar tanto Código QR quanto Código de Barras. Podemos decodificar ambos os tipos de códigos usando uma única biblioteca de forma simples. Vamos ter uma breve introdução sobre IronBarcode antes de prosseguir.


