條碼工具

如何使用深度學習理解二維條碼識別

發佈 2023年8月29日
分享:

快速回應 (QR) 代码已成為我们數字生活中的重要组成部分,促進了無縫的数据分享和信息檢索。識別圖像中的QR碼是一個深度學習的有價值應用,深度學習是人工智能的一個子集。本文將引導您通過在 .NET/C# 中使用深度學習來構建QR碼識別系統的過程。

深入理解使用深度學習進行 QR 碼識別

深度學習是機器學習的一個分支,涉及訓練神經網絡從數據中學習複雜模式。在 QR 碼識別的背景下,可以訓練深度學習模型來識別和解碼不同大小、方向和條件的圖片中的 QR 碼。卷積神經網絡 (卷積神經網路 (CNNs)) 是進行基於圖像的任務(如 QR 碼識別)的熱門選擇,因為它們能夠捕捉錯綜複雜的視覺特徵。

在本文中,我們將使用 ML.NET 模型生成器 用於訓練我們的模型。

ML.NET Model Builder

模型生成器 是由 Microsoft 提供的強大工具,作為...的一部分 ML.NET 在 .NET/C# 中建立機器學習模型的框架。它簡化並加速了創建自定義機器學習模型的過程,無需深入了解機器學習算法或豐富的編碼專業知識。Model Builder 旨在使其用戶友好且易於使用,是希望在其應用程序中利用機器學習功能的開發人員的絕佳工具。Model Builder 支持 AutoML,它可以自動探索不同的機器學習算法和設置,幫助您找到最適合您的場景的算法。

訓練 QR 碼識別模型

使用 Model Builder 訓練 QR 碼識別模型包括一系列步驟,這些步驟將指導您創建和訓練模型的過程。在此分步指南中,我們將逐步向您介紹如何在 .NET/C# 中使用 Model Builder 訓練 QR 碼模型的每個階段。

步驟 1:設置您的環境

在我們進行實作之前,請確保您具備以下先決條件:

  • Visual Studio:下載並安裝 Visual Studio多功能的集成開發環境 (集成開發環境) 適用於 .NET 開發。
  • Model Builder:您可以點擊下載 ML.NET Model Builder 這裡.

第 2 步:數據準備

我們需要 QR Code 圖像來訓練我們的模型。您可以從 KaggleRoboflow. 我已經從 Roboflow 下載了 QR 碼圖像作為此示例。

第三步:打開模型構建器

打開 Visual Studio 專案。

右鍵點擊專案 > 添加 > 機器學習模型...

如何利用深度學習理解 QR 碼識別:圖 1

以下窗口將出現。

如何理解使用深度學習的 QR 碼識別:圖 2

請輸入模型名稱並點擊新增按鈕。以下視窗將會出現:

如何利用深度學習理解 QR Code 辨識:圖 3

向下滾動,並在電腦視覺下找到“物體檢測”。

如何利用深度學習理解 QR 碼識別:圖 4

步驟 4:選擇訓練環境

選擇對象偵測,因為我們需要從給定的數據集中偵測 QR 碼。根據您的偏好選擇本地或 Azure。此示例中我們選擇本地。

點擊本地後,將出現以下窗口:

如何理解使用深度學習進行QR碼識別:圖5

選擇本地 CPU 或 GPU,或根據您的選擇選擇 Azure。對此,您應該擁有一個有效的 Azure 訂閱。選擇測試環境後,點擊下一步按鈕。隨後的窗口將出現。

如何使用深度學習理解 QR 碼識別:圖6

步驟5:選擇資料

選擇資料是訓練過程中最重要的部分。如前所述,我將從...取得資料 Robo Flow. 打開 RoboFlow,搜尋 QR Code。資料可能有白色的 QR Code 或有許多本地特徵。我正在使用 QR 檢測電腦視覺技術 資料集 在這個教學中。通過選擇格式下載數據。我選擇了COCO格式來下載這些數據。因為這個格式將進一步用於數據預處理和圖像識別。

如何使用深度學習理解QR碼識別:圖7

現在你已經有了數據,我們回到Visual Studio。選擇上面下載的Coco文件的輸入路徑。你也可以選擇Vott,但那樣的話,你需要為你的數據創建一個Vott文件。將出現以下窗口。

如何使用深度學習理解 QR Code 識別: 圖 8

現在,點擊"Next Step"按鈕,然後移至"Train"標籤。

如何使用深度學習理解 QR 碼識別:圖 9

步驟 6: 訓練 QR Code 偵測模型

現在,點擊開始訓練模型以開始訓練。模型建構器會自動轉換成二進位圖像並相應使用首選的神經網路。我們不需要指定任何內容。模型建構器的最佳之處在於,即使是深度學習背景不足的開發者也可以訓練、測試和應用模型。

使用深度學習理解 QR 碼識別:圖 10

模型生成器將在指定的數據集上訓練模型並顯示訓練進度。上述訓練所需時間取決於系統。模型將逐一處理所有QR碼並學習其特徵。訓練完成後,您可以通過傳遞任何測試QR碼圖像來測試您的模型。

步驟 7:評估模型

訓練後,Model Builder 將會在驗證數據上評估模型的性能。

您將會看到評估指標,如準確率、精確度、召回率和 F1-score。這些指標評估模型的表現。

步驟 8:使用

現在我們的模型已經訓練完畢,並且 QR 碼偵測器已經準備好,我們需要使用該模型來偵測並解碼偵測到的 QR 碼。這個模型僅會偵測給定輸入中是否包含快速響應碼(QR Code),並不會解碼 QR 碼。要解碼 QR 碼,我們需要第三方庫。Iron Barcode 是讀取 QR 碼影像的最佳庫。在繼續之前,讓我們先探索一下 Iron Barcode。

Iron Barcode - QR碼解碼庫

IronBarcode 是一個專門設計用於處理QR碼的.NET庫。QR碼是一種廣泛用於編碼資訊的二維條碼,如URL、文字、聯繫資訊等。此庫透過提供直觀的工具來簡化QR碼的創建,讓開發人員可以生成具有可定制的特性(如大小、顏色和誤差校正)的QR碼。

此外,IronBarcode能夠從嵌入於圖像中的QR碼中提取信息,使其成為無縫整合QR碼生成和解碼功能到.NET應用中的不可或缺的資源。

在本教程中,我們將使用它來解碼從我們的模型中檢測到的QR碼。

安裝 IronBarcode NuGet 套件

在 NuGet 套件管理器控制台中輸入以下命令以下載 IronBarcode NuGet 套件.

Install-Package BarCode

上述命令將安裝 IronBarcode 套件並將其添加為我們專案的參考。

如何通過深度學習理解 QR Code 識別:圖 11

解碼 QR 碼

寫下以下代碼來讀取單個檢測到的 QR 碼。

using IronBarCode;

string qrCodeImagePath = "myQrCode.png";
var data = BarcodeReader.QuicklyReadOneBarcode(qrCodeImagePath);
Console.WriteLine(data.Value.ToString());
using IronBarCode;

string qrCodeImagePath = "myQrCode.png";
var data = BarcodeReader.QuicklyReadOneBarcode(qrCodeImagePath);
Console.WriteLine(data.Value.ToString());
Imports IronBarCode

Private qrCodeImagePath As String = "myQrCode.png"
Private data = BarcodeReader.QuicklyReadOneBarcode(qrCodeImagePath)
Console.WriteLine(data.Value.ToString())
VB   C#

以下是輸出結果:

使用深度學習理解 QR 碼識別:圖 12

結論

總之,Model Builder 和 IronBarcode 庫是想要使用 QR 碼的 .NET 開發人員的寶貴組合。Model Builder 使得創建和訓練 QR 碼識別模型這樣複雜的工作變得非常容易。而當您加入 IronBarcode 庫時,事情變得更加簡單——它有助於無須麻煩地從圖片中讀取 QR 碼。這種合作不僅使庫存和市場營銷任務變得更好,還使您的應用程式更有趣。當 Model Builder 和 IronBarcode 合作時,就像將超級智能技術融入您的 .NET 應用程式中,為 QR 碼應用開闢了各種很酷的可能性。 IronBarcode 商業許可證以非常低的成本提供,並具有 免費試用授權.

< 上一頁
第4版 QR 碼最多 50 字符(初學者指南)
下一個 >
如何為Google表單製作QR碼

準備開始了嗎? 版本: 2024.10 剛剛發布

免費 NuGet 下載 總下載次數: 1,203,227 查看許可證 >