【初心者】.NETでONNX形式の学習済みモデルを利用して手書き数字認識

オウルです。

先日オンライン開催されたMicrosoft Build 2021に参加しました。全体を通して、素晴らしいセッションで満足でしたが、機械学習にあまり馴染みがない僕のようなアプリケーションデベロッパー向けに、基礎的なML.NETを取りあげてくれると嬉しいのになという思いは少しだけ。。。(因みにAIをテーマとするセッションは5つありました)

前回の↓ 記事から随分日があきましたが、今回はML.NETです。


MNISTデータセットで学習させたONNX形式の学習済みモデルを利用して手書き数字認識させてみます。よく機械学習の”Hello World”と言われるやつです。ただ個人的にPythonと比べるとML.NETを目にする機会は、まだまだ少ないと感じているので、誰かの役に立てたら幸いです。

ローカル環境
language .NET 5 | C#
editor VSCode

ONNX形式の学習済みモデルで手書き数値を分類

MNISTデータセットで学習させたモデルを試すだけでは、あまり面白くないのでAI OCR 的要素を取り入れてみます。例えば、書類等によくある生年月日欄の手書き数字を認識させてみましょう。

関連パッケージのインストール

前処理する必要があるので、OpenCV の.NET用ラッパーであるOpenCVSharpSixLabors.ImageSharpをML.NETと一緒にインストールします。

後、https://github.com/shimat/opencvsharp にあるようにOpenCvSharpExtern.dllが必要です。

解析画像の準備

今回は前提として各枠線の位置情報は予め分かっているものとします。

前処理

ここからはコードベースです。

枠線除去

枠線を除去すると、こんな感じの画像になります。

数字部分のROI

数字部分のROI画像は、こんな感じです。

うーん、ノイズがあるせいで、いまいち。。。進めます。

中央寄せ

中央寄せすると、こんな感じの画像になります。

やはりノイズが残ってます。改善の余地ありですね。進めます。

認識

前処理が終わったので認識させてみます。ONNX形式の学習済みモデルをダウンロードします。

数字認識

認識結果

結果は、↓こちらです。

久しぶりに『ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装』をもう一度読んでみようかな。因みにこの本は、以前参加した機械学習の講義で講師をしてくださった大学の先生が、入門書として良書と薦めてくれた書籍です。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA