如何用深度學習理解QR碼識別
快速反應 (QR) 碼已成為我們數位生活的重要組成部分,促進了無縫的資料分享和資訊檢索。 在影像中識別QR碼是深度學習的一個有價值的應用,深度學習是人工智慧的一個子集。 在這篇文章中,我們將引導您如何在.NET/C#中使用深度學習來建立一個QR碼識別系統。
了解使用深度學習的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:選擇資料
選擇資料是訓練過程中最重要的一部分。 如前所述,我將從Robo Flow獲取資料。 打開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碼,我們需要第三方庫。 IronBarcode是讀取QR碼影像的最佳庫。 在進一步進行之前,讓我們了解一下IronBarcode。
IronBarcode - QR碼解碼庫
IronBarcode是一個專為處理QR碼而優化的.NET庫,QR碼是一種廣泛用於編碼資訊的2D條碼,如URL、文字、聯繫資訊等。 該庫通過提供直觀的工具來生成具有可自訂功能(如大小、顏色和錯誤修正)的QR碼,使開發者能夠更輕鬆地建立QR碼。
此外,IronBarcode能夠從內嵌於影像中的QR碼中提取資訊,使其成為在.NET應用程式中無縫整合QR碼生成和解碼能力的不可或缺的資源。
在本教程中,如果從我們的模型中檢測到QR碼,我們將使用它來解碼QR碼。
安裝IronBarcode NuGet套件
在NuGet套件管理器控制台中輸入以下命令,以下載IronBarcode NuGet套件。
Install-Package BarCode
上述命令將安裝IronBarcode套件,並將參考新增到我們的專案中。

解碼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商業授權可以以非常低的成本獲得,並附有免費試用授權。


