How to Understand QR Code Recognition with Deep Learning
快速响应(QR)码已成为我们数字生活的重要组成部分,方便了无缝的数据共享和信息检索。 识别图像中的QR码是深度学习的一个有价值的应用,深度学习是人工智能的一个子集。 在本文中,我们将在.NET/C#中指导您构建深度学习二维码识别系统的过程。
理解基于深度学习的QR码识别
深度学习是机器学习的一个分支,涉及训练神经网络从数据中学习复杂模式。 在QR码识别的背景下,可以训练深度学习模型来识别和解码不同大小、不同方向和不同条件下的图像中的QR码。 卷积神经网络(CNNs)是图像类任务(如QR码识别)的流行选择,因为它们能够捕捉复杂的视觉特征。
在本文中,我们将使用ML.NET Model Builder来训练我们的模型。
ML.NET Model Builder
Model Builder是微软提供的一个强大工具,是ML.NET框架的一部分,用于在.NET/C#中构建机器学习模型。 它简化和加速了创建自定义机器学习模型的过程,而无需深入了解机器学习算法或广泛的编码专业知识。Model Builder设计为用户友好和易访问,非常适合希望在其应用程序中利用机器学习能力的开发者。 Model Builder支持AutoML,它会自动探索不同的机器学习算法和设置,以帮助您找到最适合您场景的算法。
训练QR码识别模型
使用Model Builder训练QR码识别模型涉及一系列步骤,这些步骤将引导您完成创建和训练模型的过程。 在本分步骤指南中,我们将逐步引导如何在.NET/C#中使用Model Builder训练QR码模型的每个阶段。
步骤1:设置您的环境
在开始实施之前,确保您具备以下前提条件:
- Visual Studio:下载并安装Visual Studio,一个用于.NET开发的多功能集成开发环境(IDE)。
- Model Builder:您可以通过单击此处下载ML.NET Model Builder。
步骤2:数据准备
我们需要QR码图像来训练我们的模型。 您可以从Kaggle或Roboflow获取QR码图像。 在本示例中,我已从Roboflow下载了QR码图像。
步骤3:打开Model Builder
打开Visual Studio项目。
右键单击项目>添加>机器学习模型...

将出现以下窗口。

给模型命名并单击添加按钮。 以下窗口将出现:

向下滚动,在计算机视觉下找到"对象检测"。

步骤4:选择训练环境
选择对象检测,因为我们必须从给定的数据集中检测QR码。 根据您的偏好选择本地或Azure。 在本示例中,我们选择本地。
单击本地后,将出现以下窗口:

根据您的选择选择本地CPU或GPU。您也可以选择Azure。 为此,您应拥有一个有效的Azure订阅。 选择您的测试环境后,单击下一步按钮。 将出现以下窗口。

步骤5:选择数据
选择数据是训练过程的最重要部分。 如前所述,我将在RoboFlow中获取数据。 打开RoboFlow,搜索QR码。 数据可能有白色QR码或有很多本地特征。 我正在使用QR检测计算机视觉数据集进行本教程。 选择格式后下载数据。 我选择了COCO格式下载此数据,因为此格式将进一步用于数据预处理和图像识别。

既然您有了数据,让我们回到Visual Studio。 选择上面下载的COCO文件的输入路径。 您也可以选择Vott,但为此,您需要为您的数据创建一个Vott文件。 将出现以下窗口。

现在,单击下一步骤按钮并转到训练选项卡。

步骤6:训练QR码检测模型
现在,单击开始训练模型以开始训练。 Model Builder将自动转换为二进制图像并相应地使用首选神经网络。 我们不需要指定任何东西。 Model Builder最棒的地方在于,即使是深度学习背景较少的开发人员也可以训练、测试和使用模型。

Model Builder将在指定的数据集上训练模型并显示训练进度。 上面的训练将根据系统的情况花费时间。 该模型将逐一处理所有 QR 码并学习其特征。 您可以通过将任何测试QR码图像传递给模型来测试您的模型,一旦训练完成。
步骤7:评估模型
经过训练后,Model Builder将评估模型在验证数据上的性能。
您将看到评估指标,例如准确性、精确度、召回率和F1得分。 这些指标评估模型的表现如何。
步骤8:使用
现在我们的模型已经训练完毕,QR码检测器已经准备就绪,我们需要使用该模型来检测代码,然后解码检测到的QR码。 此模型只检测给定输入中是否包含任意快速响应代码。 这并不会解码QR码。 对于QR码解码,我们需要一个第三方库。 Iron Barcode是读取QR码图像的最佳库。 在进一步进行之前,让我们先稍微了解一下Iron Barcode。
Iron Barcode - QR码解码库
IronBarcode是一个专门用于处理QR码的.NET库,这是一种广泛用于编码信息如URL、文本、联系人信息等的2D条形码。 该库通过提供直观的工具来生成具有自定义功能(如大小、颜色和错误修正)的QR码,简化了QR码的创建过程。
此外,IronBarcode可以从嵌入在图像中的QR码中提取信息,使其成为将QR码生成和解码功能无缝集成到.NET应用程序的重要资源。
在本教程中,如果我们的模型检测到QR码,我们将使用它来解码QR码。
安装Iron Barcode NuGet Package
在NuGet包管理器控制台中编写以下命令以下载IronBarcode NuGet包。
Install-Package BarCode
上述命令将安装Iron Barcode包,并将其引用添加到我们的项目中。

解码QR码
编写以下代码以读取单个检测到的QR码。
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())以下是输出:

结论
总而言之,Model Builder和IronBarcode库对于想要处理QR码的.NET开发人员来说是一个有价值的组合。 Model Builder使创建和训练用于QR码识别的模型的棘手工作变得非常简单。 而当您加上IronBarcode库时,事情变得更加简单 - 它可以轻松从图片中读取QR码。 这种合作不仅使库存和营销任务变得更好,而且也使您的应用程序更加有趣。 当Model Builder和IronBarcode结合在一起时,就像是将超级智能技术融入到您的.NET应用程序中,为QR码相关的事情开辟了各种酷的可能性。 IronBarcode商业许可证的价格非常低,并提供试用许可证。







