BEACHSIDE BLOG

MicrosoftとかC#を好むレンジャーの個人メモ

TensowFlow の学習モデルを C# で読み込む( ASP.NET Core 編)

犬種の画像分類の学習モデルを ASP.NET Core に組み込みんで画像分類できるようにします。

Azure の Custom Vision で画像の分類器を秒殺で作成することで(盛りました、作成に数分くらいです)、TensorFlow の画像分類のモデル作成のターンでは、機械学習のアルゴリズムのコーディング無しです。

C#er なら誰でも(?)作れてしまう世界がここにあります。

(前回と同じこと書いてしまった.....)

Custom Vision での画像分類と TensorFlow モデルのエクスポート

前回のブログで紹介したハンズオンコンテンツの続編で ASP.NET Core での実装をしてるだけです。

こちらのハンズオンコンテンツに Custom Vision での画像分類の作成手順が書いてますので、興味がありましたら遊んでみてください♪

https://github.com/beachside-project/CustomVision-ML.NET-Hands-on/blob/master/docs/01_create-custom-vision.md

TensorFlow モデルを ASP.NET Core で読み込む

ASP.NET Core で画像分類をする際、TensorFlow のモデルを直接読み込むわけではなく、ML.NET のモデルとして変換して読み込みます。

具体的には、

  • TensorFlow のモデルを読み込んで、ML.NET のモデルとして zip ファイルに変換・保存する
  • ASP.NET Core でその zip を読み込む

です。

また、前回 Console App で ML.NET を使ったときは特に意識しませんでしたが、Web となるとさすがにスレッドセーフを気にする必要があります。これにはもちろん ML.NET 側でサポートされておりその専用のオブジェクト PredictionEnginePool を使うだけです。
PredictionEnginePool は現在プレビュー中です。名前の通り、.NET 界隈ではよくあるオブジェクトのプールを使ってエコナスレッドセーフを実現してくれます。

私の作成したハンズオンコンテンツでは、コード量を減らすために雑な実装ですませているのはいうまでもないですが、手順はそれなりにちゃんと書いてますので興味がありましたら遊んでみてください。以下リンクは ASP.NET Core のチャプターからです。

https://github.com/beachside-project/CustomVision-ML.NET-Hands-on/blob/master/docs/03_create-aspnetcore-app.md

参考リンク

(今回作成した) Custom Vision / ML.NET / ASP.NET Core のハンズオン

github.com


(以前に作成した)CustomVision と Logic Apps を使ったノーコーディング開発のハンズオン

Custom Vision で犬種を画像分類器を作成し、Custom Vision で公開できる WebAPI にアクセスして画像分類を行う。クライアント側は Logic Apps。

github.com

その他

devblogs.microsoft.com

docs.microsoft.com