跳過到頁腳內容
條碼工具

如何用深度學習理解QR碼識別

快速回應(QR)碼已成為我們數位生活的重要組成部分,促進了無縫的數據分享和信息檢索。 識別圖像中的QR碼是深度學習的寶貴應用,它是人工智慧的子集。 在本文中,我們將引導您完成使用深度學習在.NET/C#中構建QR碼識別系統的過程。

了解使用深度學習的QR碼識別

深度學習是機器學習的一個分支,涉及訓練神經網路從數據中學習複雜模式。 在QR碼識別的背景下,深度學習模型可以被訓練來識別和解碼來自具有不同尺寸、方向和條件的圖像中的QR碼。 由於能夠捕捉複雜的視覺特徵,卷積神經網絡(CNN)是用於基於圖像的任務(如QR碼識別)的熱門選擇。

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

ML.NET模型生成器

模型生成器是微軟提供的一個強大工具,它是ML.NET框架的一部分,用於在.NET/C#中構建機器學習模型。 它簡化並加速了創建自定義機器學習模型的過程,無需深入了解機器學習算法或廣泛的編碼技術。模型生成器被設計為用戶友好且易於訪問,這使得它成為開發者想在其應用中利用機器學習能力的極佳工具。 模型生成器支持AutoML,它可以自動探索不同的機器學習算法和設置,幫助您找到最符合您場景的方案。

訓練QR碼識別模型

使用模型生成器訓練QR碼識別模型涉及一系列步驟,引導您完成創建和訓練模型的過程。 在這份逐步指南中,我們將逐步帶您完成使用模型生成器在.NET/C#中訓練QR碼模型的每一階段。

步驟1:設定您的環境

在我們深入實施之前,請確保您具備以下前提條件:

  • Visual Studio:下載並安裝Visual Studio,這是一個多功能的整合開發環境(IDE)用於.NET開發。
  • 模型生成器:您可以通過點擊這裡下載ML.NET模型生成器。

步驟2:資料準備

我們需要QR碼圖像來訓練我們的模型。 您可以從KaggleRoboflow獲取QR碼圖像。 在這個範例中,我已從Roboflow下載QR碼圖像。

步驟3:打開模型生成器

打開Visual Studio Project。

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

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

出現了以下窗口。

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

給模型命名並點擊添加按鈕。 出現了以下窗口:

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

向下滾動,找到計算機視覺下的"物件檢測"。

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

步驟4:選擇訓練環境

選擇物件檢測,因為我們必須從給定數據集中檢測QR碼。 根據您的喜好選擇Local或Azure。 在這個範例中,我們選擇Local。

點擊Local後,出現了以下窗口:

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

根據您的選擇,選擇本地CPU或GPU。您還可以選擇Azure。 為此,您應該有一個活躍的Azure訂閱。 選擇測試環境後,點擊下一步按鈕。 出現了以下窗口。

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

步驟5:選擇資料

選擇資料是訓練過程中最重要的部分。 如前所述,我將從Robo Flow獲取數據。 打開RoboFlow,搜尋QR碼。 數據可能有白色QR碼或有許多本地特徵。 我使用QR檢測計算機視覺數據集來進行本教程。 選擇格式下載數據。 我選擇了COCO格式來下載此數據,因為這種格式將進一步用於數據預處理和圖像識別。

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

現在您已經有數據了,讓我們回到Visual Studio。 選擇上述下載的COCO文件的輸入路徑。 您也可以選擇Vott,但為此,您需要為您的數據創建Vott文件。 出現了以下窗口。

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

現在,點擊下一步按鈕並轉到訓練選項卡。

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

步驟6:訓練QR碼檢測模型

現在,點擊開始訓練模型以開始訓練。 模型生成器將自動轉換為二進制圖像並相應地使用首選的神經網絡。 我們不需要指定任何東西。 模型生成器的最佳的一點是,開發者即使對深度學習了解不多,也可以訓練、測試和使用模型。

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

模型生成器將在指定的數據集上訓練模型並顯示訓練進度。 上面的訓練將根據系統而花費時間。 模型將一個一個地取所有QR碼並學習其特徵。 一旦訓練完成,您可以通過將任何測試QR碼圖像傳遞給模型來測試您的模型。

步驟7:評估模型

訓練後,模型生成器將評估模型在驗證數據上的性能。

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

步驟8:使用

現在我們的模型已經訓練好並準備好QR碼檢測,我們需要使用該模型來檢測代碼,然後解碼檢測到的QR碼。 此模型只會檢測給定輸入是否包含任何快速響應碼。 這不會解碼QR碼。 對於QR碼解碼,我們需要第三方程式庫。 IronBarcode是讀取QR碼圖像的最佳程式庫。 讓我們在進一步探索IronBarcode之前,先了解一點它。

IronBarcode - QR碼解碼程式庫

IronBarcode是一個專門為處理QR碼設計的.NET程式庫,是一種類型的2D條碼,廣泛用於編碼信息如URL、文本、聯繫方式等。 這個程式庫通過提供開發者直觀的工具來生成具有可定制功能(如尺寸、顏色和錯誤校正)的QR碼,簡化了QR碼的創建。

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

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

安裝Iron Barcode NuGet套件

在NuGet包管理器控制台中寫下以下命令來下載IronBarcode NuGet包

Install-Package BarCode

上述命令將安裝Iron Barcode包並將其添加到我們專案的引用中。

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

解碼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());
$vbLabelText   $csharpLabel

以下是輸出結果:

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

總結

總之,模型生成器和IronBarcode程式庫對於想要處理QR碼的.NET開發者來說是寶貴的組合。 模型生成器使創建和訓練QR碼識別模型的困難工作變得相當容易。 當您添加IronBarcode程式庫時,事情變得更加簡單——它可以輕鬆地從圖片中讀取QR碼。 這種團隊合作不僅使庫存和營銷任務變得更好,也使您的應用變得更有趣。 當模型生成器和IronBarcode結合在一起時,就像是在您的.NET應用中融入超級智能技術,為QR碼的東西開啟了各種酷炫的可能性。 Iron Barcode商業授權的價格非常低,並且提供免費試用授權

Jordi Bardia
軟體工程師
Jordi 在 Python、C# 和 C++ 上最得心應手,當他不在 Iron Software 展現技術時,便在做遊戲編程。在分担產品测测试,產品開發和研究的责任時,Jordi 為持续的產品改進增值。他说这种多样化的经验使他受到挑战并保持参与, 而这也是他与 Iron Software 中工作一大乐趣。Jordi 在佛罗里达州迈阿密长大,曾在佛罗里达大学学习计算机科学和统计学。

鋼鐵支援團隊

我們每週 5 天,每天 24 小時在線上。
聊天
電子郵件
打電話給我