在實際環境中測試
在生產環境中測試無浮水印。
在任何需要的地方都能運作。
快速回應 (QR) 代码已成為我们數字生活中的重要组成部分,促進了無縫的数据分享和信息檢索。識別圖像中的QR碼是一個深度學習的有價值應用,深度學習是人工智能的一個子集。本文將引導您通過在 .NET/C# 中使用深度學習來構建QR碼識別系統的過程。
深度學習是機器學習的一個分支,涉及訓練神經網絡從數據中學習複雜模式。在 QR 碼識別的背景下,可以訓練深度學習模型來識別和解碼不同大小、方向和條件的圖片中的 QR 碼。卷積神經網絡 (卷積神經網路 (CNNs)) 是進行基於圖像的任務(如 QR 碼識別)的熱門選擇,因為它們能夠捕捉錯綜複雜的視覺特徵。
在本文中,我們將使用 ML.NET 模型生成器 用於訓練我們的模型。
模型生成器 是由 Microsoft 提供的強大工具,作為...的一部分 ML.NET 在 .NET/C# 中建立機器學習模型的框架。它簡化並加速了創建自定義機器學習模型的過程,無需深入了解機器學習算法或豐富的編碼專業知識。Model Builder 旨在使其用戶友好且易於使用,是希望在其應用程序中利用機器學習功能的開發人員的絕佳工具。Model Builder 支持 AutoML,它可以自動探索不同的機器學習算法和設置,幫助您找到最適合您的場景的算法。
使用 Model Builder 訓練 QR 碼識別模型包括一系列步驟,這些步驟將指導您創建和訓練模型的過程。在此分步指南中,我們將逐步向您介紹如何在 .NET/C# 中使用 Model Builder 訓練 QR 碼模型的每個階段。
在我們進行實作之前,請確保您具備以下先決條件:
我們需要 QR Code 圖像來訓練我們的模型。您可以從 Kaggle 或 Roboflow. 我已經從 Roboflow 下載了 QR 碼圖像作為此示例。
打開 Visual Studio 專案。
右鍵點擊專案 > 添加 > 機器學習模型...
以下窗口將出現。
請輸入模型名稱並點擊新增按鈕。以下視窗將會出現:
向下滾動,並在電腦視覺下找到“物體檢測”。
選擇對象偵測,因為我們需要從給定的數據集中偵測 QR 碼。根據您的偏好選擇本地或 Azure。此示例中我們選擇本地。
點擊本地後,將出現以下窗口:
選擇本地 CPU 或 GPU,或根據您的選擇選擇 Azure。對此,您應該擁有一個有效的 Azure 訂閱。選擇測試環境後,點擊下一步按鈕。隨後的窗口將出現。
選擇資料是訓練過程中最重要的部分。如前所述,我將從...取得資料 Robo Flow. 打開 RoboFlow,搜尋 QR Code。資料可能有白色的 QR Code 或有許多本地特徵。我正在使用 QR 檢測電腦視覺技術 資料集 在這個教學中。通過選擇格式下載數據。我選擇了COCO格式來下載這些數據。因為這個格式將進一步用於數據預處理和圖像識別。
現在你已經有了數據,我們回到Visual Studio。選擇上面下載的Coco文件的輸入路徑。你也可以選擇Vott,但那樣的話,你需要為你的數據創建一個Vott文件。將出現以下窗口。
現在,點擊"Next Step"按鈕,然後移至"Train"標籤。
現在,點擊開始訓練模型以開始訓練。模型建構器會自動轉換成二進位圖像並相應使用首選的神經網路。我們不需要指定任何內容。模型建構器的最佳之處在於,即使是深度學習背景不足的開發者也可以訓練、測試和應用模型。
模型生成器將在指定的數據集上訓練模型並顯示訓練進度。上述訓練所需時間取決於系統。模型將逐一處理所有QR碼並學習其特徵。訓練完成後,您可以通過傳遞任何測試QR碼圖像來測試您的模型。
訓練後,Model Builder 將會在驗證數據上評估模型的性能。
您將會看到評估指標,如準確率、精確度、召回率和 F1-score。這些指標評估模型的表現。
現在我們的模型已經訓練完畢,並且 QR 碼偵測器已經準備好,我們需要使用該模型來偵測並解碼偵測到的 QR 碼。這個模型僅會偵測給定輸入中是否包含快速響應碼(QR Code),並不會解碼 QR 碼。要解碼 QR 碼,我們需要第三方庫。Iron Barcode 是讀取 QR 碼影像的最佳庫。在繼續之前,讓我們先探索一下 Iron Barcode。
IronBarcode 是一個專門設計用於處理QR碼的.NET庫。QR碼是一種廣泛用於編碼資訊的二維條碼,如URL、文字、聯繫資訊等。此庫透過提供直觀的工具來簡化QR碼的創建,讓開發人員可以生成具有可定制的特性(如大小、顏色和誤差校正)的QR碼。
此外,IronBarcode能夠從嵌入於圖像中的QR碼中提取信息,使其成為無縫整合QR碼生成和解碼功能到.NET應用中的不可或缺的資源。
在本教程中,我們將使用它來解碼從我們的模型中檢測到的QR碼。
在 NuGet 套件管理器控制台中輸入以下命令以下載 IronBarcode NuGet 套件.
Install-Package BarCode
上述命令將安裝 IronBarcode 套件並將其添加為我們專案的參考。
寫下以下代碼來讀取單個檢測到的 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())
以下是輸出結果:
總之,Model Builder 和 IronBarcode 庫是想要使用 QR 碼的 .NET 開發人員的寶貴組合。Model Builder 使得創建和訓練 QR 碼識別模型這樣複雜的工作變得非常容易。而當您加入 IronBarcode 庫時,事情變得更加簡單——它有助於無須麻煩地從圖片中讀取 QR 碼。這種合作不僅使庫存和市場營銷任務變得更好,還使您的應用程式更有趣。當 Model Builder 和 IronBarcode 合作時,就像將超級智能技術融入您的 .NET 應用程式中,為 QR 碼應用開闢了各種很酷的可能性。 IronBarcode 商業許可證以非常低的成本提供,並具有 免費試用授權.