在實際環境中測試
在生產環境中測試無浮水印。
在任何需要的地方都能運作。
快速回應(QR)代碼已成為我們數位生活中不可或缺的一部分,有助於無縫的資料共享和資訊檢索。 在影像中識別 QR 代碼是深度學習(人工智慧的一個子集)的寶貴應用。 在本文中,我們將引導您通過使用深度學習在 .NET/C# 中建置 QR 碼識別系統的過程。
深度學習是機器學習的一個分支,涉及訓練神經網路從數據中學習複雜模式。 在 QR 碼識別的背景下,可以訓練深度學習模型來識別和解碼來自不同大小、方向和條件的圖像中的 QR 碼。 卷积神经网络(卷積神經網路 (CNNs))由於能夠捕捉細緻的視覺特徵,在基於圖像的任務中(如 QR 碼識別)是一個受歡迎的選擇。
在本文中,我們將使用ML.NET 模型生成器用於訓練我們的模型。
模型生成器是由 Microsoft 提供的強大工具,作為...的一部分ML.NET在 .NET/C# 中構建機器學習模型的框架。 它簡化並加速了創建自定義機器學習模型的過程,無需深入了解機器學習演算法或廣泛的編碼專業知識。Model Builder 設計為用戶友好且易於接觸,對於希望在其應用中利用機器學習功能的開發人員來說,是一個優秀的工具。 模型生成器支援自動機器學習(AutoML),其會自動探索不同的機器學習算法和設置,以幫助您找到最適合您情境的算法。
使用 Model Builder 訓練 QR 碼識別模型涉及一系列步驟,指導您完成模型的創建和訓練過程。 在這個逐步指南中,我們將帶您通過使用.NET/C#中的Model Builder訓練QR碼模型的每個階段。
在進行實施之前,請確保您具備以下先決條件:
我們需要 QR Code 圖像來訓練我們的模型。 您可以從獲取 QR Code 圖片Kaggle或Roboflow. 我已為此範例從Roboflow下載了QR碼圖片。
打開 Visual Studio 專案。
右鍵點擊專案 > 添加 > 機器學習模型...
將會出現以下視窗。
輸入模型名稱,然後點擊新增按鈕。 接下來的視窗將會出現:
向下滾動,並在電腦視覺下找到“物件偵測”。
選擇物件檢測,因為我們需要從給定的數據集中檢測 QR 碼。 根據您的偏好選擇本地或 Azure。 在此示例中,我們選擇 Local。
點擊本地後,將會出現以下窗口:
選擇您偏好的本地 CPU 或 GPU。您也可以選擇 Azure。 為此,您應該擁有有效的 Azure 訂閱。 選擇測試環境後,點擊「下一步」按鈕。 以下視窗將會出現。
選擇資料是訓練過程中最重要的部分。 如前所述,我將從中獲取數據Robo Flow. 打開 RoboFlow,搜尋 QR Code。 數據可能有白色 QR 碼或有許多本地特徵。 我正在使用 QR 檢測計算機視覺資料集本教程。 選擇格式下載數據。 我選擇了 COCO 格式來下載這個數據。 由於這種格式將進一步用於資料預處理和圖像識別。
現在你有了數據,讓我們回到 Visual Studio。 選擇上面下載的 Coco 文件的輸入路徑。 您也可以選擇使用Vott,但為了使用它,您需要為您的數據建立Vott文件。 以下視窗將會出現。
現在,點擊下一步按鈕並移至訓練標籤。
現在,點擊「開始訓練模型」以開始訓練。 模型建構器將自動轉換為二進制圖像並相應地使用首選的神經網路。 我們不需要指定任何事情。 Model Builder 最棒的地方在於即使是缺乏深度學習背景的開發者也能夠訓練、測試及使用模型。
模型建構工具將在指定的數據集上訓練模型並顯示訓練進度。 上述訓練將根據系統需要時間進行。 模型將逐一獲取所有的QR碼並學習其特徵。 訓練完成後,您可以通過將任何測試 QR 碼圖像傳遞給模型來測試您的模型。
訓練完成後,模型構建器將在驗證數據上評估模型的性能。
您將看到評估指標,如準確率、精確率、召回率和 F1 分數。 這些指標評估模型的表現如何。
現在我們的模型已經訓練完成且 QR Code 偵測器已經準備就緒,我們需要使用該模型來偵測代碼,然後解碼偵測到的 QR Code。 此模型僅檢測給定輸入中是否包含任何快速響應碼。 這不會解碼 QR Code。 進行 QR Code 解碼,我們需要第三方庫。 Iron Barcode 是最佳的庫,用於讀取 QR Code 圖像。 在進一步探索之前,讓我們先了解一下 Iron Barcode。
IronBarcode是一個專門為處理QR碼而設計的.NET函式庫,QR碼是一種廣泛用於編碼資訊的二維條碼,例如網址、文字、聯絡資訊等。 該庫透過提供開發人員直觀的工具來簡化 QR 碼的創建,允許自訂特徵如大小、顏色和錯誤修正。
此外,IronBarcode 能夠從嵌入於圖像中的 QR 碼中提取資訊,使其成為在 .NET 應用程式中無縫整合 QR 碼生成和解碼功能的重要資源。
在本教程中,如果從我們的模型中檢測到 QR Code,我們將使用它來解碼 QR Code。
在 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 開發者來說是寶貴的組合。 模型生成器讓創建和訓練 QR 代碼識別模型的複雜工作變得相當簡單。 當您加入IronBarcode庫時,事情變得更加簡單——它幫助輕鬆從圖片中讀取QR碼。 這種團隊合作不僅使庫存和營銷任務變得更好,還讓您的應用程式更有趣。 當 Model Builder 與 IronBarcode 結合時,就像將超智能技術融入您的 .NET 應用程式中,為 QR code 相關的功能開啟各種酷炫的可能性。 IronBarcode商業許可證以非常低的成本提供,並具有免費試用授權.