フッターコンテンツにスキップ
バーコードツール

ディープラーニングによるQRコード認識を理解する方法

クイックレスポンス(QR)コードは、シームレスなデータ共有と情報の取得を可能にする、私たちのデジタル生活に欠かせないものとなっています。 画像におけるQRコードの認識は、人工知能の一部門であるディープラーニングの貴重な応用です。 この記事では、.NET/C#でディープラーニングを使用してQRコード認識システムを構築するプロセスをガイドします。

ディープラーニングによるQRコード認識の理解

ディープラーニングは、データから複雑なパターンを学習するためのニューラルネットワークの訓練を行う機械学習の一分野です。 QRコード認識の文脈では、ディープラーニングモデルは様々なサイズ、方向、状態の画像からQRコードを識別し解読するように訓練できます。 畳み込みニューラルネットワーク(CNN)は、画像に基づくタスク、特にQRコード認識においてその複雑な視覚的特徴を捉える能力から、人気のある選択肢です。

この記事では、ML.NET Model Builderを使用してモデルの訓練を行います。

ML.NET Model Builder

Model Builder is a powerful tool provided by Microsoft as part of the ML.NETフレームワークの一部としてMicrosoftが提供する強力なツールです。 これは、機械学習アルゴリズムの深い知識や広範なコーディングの専門知識を必要とせずにカスタムの機械学習モデルを作成するプロセスを簡素化し加速します。Model Builderはユーザーフレンドリーでアクセスしやすく設計されているため、アプリケーションに機械学習の機能を活用したい開発者にとって優れたツールです。 Model BuilderはAutoMLをサポートしており、自動的にさまざまな機械学習アルゴリズムと設定を探索し、あなたのシナリオに最も適したものを見つけるのを支援します。

QRコード認識モデルの訓練

Model Builderを使用してQRコード認識モデルを訓練するには、モデルの作成と訓練のプロセスを通じてあなたを導く一連のステップが含まれています。 このステップバイステップガイドでは、.NET/C#でModel Builderを使用してQRコードモデルを訓練する各段階を案内します。

ステップ1:環境の設定

実装に取り掛かる前に、以下の事前条件が揃っていることを確認してください:

  • Visual Studio:.NET開発用の多目的統合開発環境(IDE)、Visual Studioをダウンロードしてインストールします。
  • Model Builder:こちらをクリックしてML.NET Model Builderをダウンロードできます。

ステップ2:データの準備

モデルを訓練するためにQRコード画像が必要です。 You can get QR Code Images from Kaggle or Roboflow. この例ではRoboflowからQRコード画像をダウンロードしました。

ステップ3:Model Builderを開く

Visual Studioプロジェクトを開きます。

プロジェクトを右クリックして、Add > Machine learning Model... を選択します。

ディープラーニングによるQRコード認識の理解:図1

次のウィンドウが表示されます。

ディープラーニングによるQRコード認識の理解:図2

モデル名を入力し、Addボタンをクリックします。 次のウィンドウが表示されます:

ディープラーニングによるQRコード認識の理解:図3

スクロールして、Computer Visionの下にある「Object Detection」を見つけます。

ディープラーニングによるQRコード認識の理解:図4

ステップ4:訓練環境の選択

指定されたデータセットからQRコードを検出するためにObject detectionを選択します。 お好みに応じてローカルまたはAzureを選択します。 この例ではローカルを選択します。

ローカルをクリックすると、次のウィンドウが表示されます:

ディープラーニングによるQRコード認識の理解:図5

ローカルのCPUまたはGPUを選択します。また、Azureも選択できます。 そのためには、アクティブなAzureサブスクリプションが必要です。 テスト環境の選択後、「Next」ボタンをクリックします。 次のウィンドウが表示されます。

ディープラーニングによるQRコード認識の理解:図6

ステップ5:データの選択

データの選択は訓練プロセスで最も重要な部分です。 前述のとおり、データはRobo Flowから取得します。 RoboFlowを開き、QRコードを検索します。 データには白いQRコードが含まれているか、多くのローカル機能を持っている可能性があります。 このチュートリアルではQR検出コンピュータービジョンデータセットを使用します。 形式を選択してデータをダウンロードします。 これ以降のデータの前処理と画像認識で使用されるため、COCO形式を選択してこのデータをダウンロードしました。

ディープラーニングによるQRコード認識の理解:図7

データが揃ったところでVisual Studioに戻ります。 上記でダウンロードされたCOCOファイルの入力パスを選択します。 Vottを選ぶこともできますが、そのためにはデータのVottファイルを作成する必要があります。 次のウィンドウが表示されます。

ディープラーニングによるQRコード認識の理解:図8

次のステップボタンをクリックして、トレイントップに進みます。

ディープラーニングによるQRコード認識の理解:図9

ステップ6:QRコード検出モデルを訓練する

今、Start Training Modelをクリックして訓練を開始します。 Model Builderは自動的にバイナリ画像に変換し、適宜ニューラルネットワークを使用します。 何も指定する必要はありません。 Model Builderの最良の点は、ディープラーニングの知識がほとんどない開発者でもモデルを訓練、テスト、活用できることです。

ディープラーニングによるQRコード認識の理解:図10

Model Builderは指定されたデータセットでモデルを訓練し、訓練の進捗を表示します。 上記の訓練はシステムに依存して時間がかかります。 モデルはQRコードを1つずつ取り、特徴を学習します。 訓練が完了したら、テストQRコード画像をモデルに渡してテストを行うことができます。

ステップ7:モデルの評価

訓練後、Model Builderは検証データでモデルの性能を評価します。

精度、精度、再現率、およびF1スコアなどの評価指標を確認できます。 これらの指標は、モデルの性能を評価します。

ステップ8:消費

モデルを訓練し、QRコード検出器が準備できたので、そのモデルを使用してコードを検出し、検出されたQRコードを解読する必要があります。 このモデルは、指定された入力にクイックレスポンスコードが含まれているかどうかを検出するだけです。 QRコードのデコードにはサードパーティのライブラリが必要です。 Iron BarcodeはQRコード画像を読むための最適なライブラリです。 次に進む前に、Iron Barcodeについて少し見てみましょう。 ### Iron Barcode - QRコードデコードライブラリ

IronBarcodeは、URL、テキスト、連絡先詳細などの情報をエンコードするために広く使用されている2Dバーコードの一種であるQRコードを操作するために特に作られた.NETライブラリです。

このライブラリは、サイズ、色、誤り訂正機能などのカスタマイズ可能な機能でQRコードを生成するための直感的なツールを開発者に提供することにより、QRコードの作成を簡素化します。 さらに、IronBarcodeは画像内に埋め込まれたQRコードから情報を抽出でき、.NETアプリケーションにQRコードの生成とデコード機能をシームレスに統合するために欠かせないリソースです。

このチュートリアルでは、モデルによってQRコードが検出された場合にそのQRコードをデコードするために使用します。

Iron Barcode NuGetパッケージのインストール

NuGet Package Manager Consoleに以下のコマンドを書いてIronBarcode NuGetパッケージをダウンロードします。

上記のコマンドは、Iron Barcodeパッケージをインストールし、プロジェクトに参照を追加します。

Install-Package 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());
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())
$vbLabelText   $csharpLabel

ディープラーニングによるQRコード認識の理解:図12

結論として、Model BuilderとIronBarcodeライブラリは、QRコードを操作したい.NET開発者にとって価値のあるコンボです。

結論

Model Builderは、QRコード認識のためのモデルを作成し訓練する複雑な作業を非常に簡単にしています。 そしてIronBarcodeライブラリを追加すると、画像からQRコードを簡単に読み取ることができ、さらに簡単になります。 このチームワークは、在庫管理やマーケティングタスクを向上させるだけでなく、アプリをより楽しく使えるものにします。 Model BuilderとIronBarcodeが一緒に使用されると、.NETアプリに非常にスマートな技術を組み込むことができ、QRコードに関するすべてのクールな可能性を開くのです。 無料の試用ライセンスも利用可能です。 Iron Barcode commercial license is available at a very low cost with a free trial license.

Jordi Bardia
ソフトウェアエンジニア
Jordiは、最も得意な言語がPython、C#、C++であり、Iron Softwareでそのスキルを発揮していない時は、ゲームプログラミングをしています。製品テスト、製品開発、研究の責任を分担し、Jordiは継続的な製品改善において多大な価値を追加しています。この多様な経験は彼を挑戦させ続け、興味を持たせており、Iron Softwareで働くことの好きな側面の一つだと言います。Jordiはフロリダ州マイアミで育ち、フロリダ大学でコンピュータサイエンスと統計学を学びました。