初心者にもわかるファイルメーカーの
使い方

filemakerで画像認識させる!!〜画像認識モデル作成からfilemakerへの取込まで〜

2021-05-17 |  

こんにちは、filemakerチームの久保田です。

今回書かせていただく記事は画像認識についてです。
filemaker19から機械学習モデルを使用できるようになりました。
ただ面白そうだとは思っていたものの、何から手をつけたらいいのかなど、わからないところが多く、全く触れていませんでした。

なので、今回はお試しという意味を含めて、画像認識について、触れていこうと思います。

1、Core MLモデルについて

2、作ってみよう!!
  a.画像認識のモデルを作成する。
  b.filemakerファイルを作成する。

1、Core MLモデルについて

filemakerではCore MLと呼ばれる機械学習モデルをファイル内にロードすることで機械学習モデルを使用することができます。
Core MLとは2017年にAppleが発表した機械学習モデルのフレームワークです。
AppleではサンプルとしていくつかのCore MLファイルを公開しています。

ただ今回はCore MLモデルを作成する記事を見つけたので、それを踏まえて、作成していこうと思います。

・Core MLについて
https://qiita.com/yum_fishing/items/b6727e6731fe71e2c52a

・サンプルファイルの一覧
https://developer.apple.com/jp/machine-learning/models/#text

・機械学習モデル作成の参考記事
https://qiita.com/thimi0412/items/99613d41e5a66b6ea95f

2、作ってみよう!!

手順は下記の通りです。

手順

a.画像認識のモデルを作成する。
b.filemakerファイルを作成する。

a.画像認識のモデルを作成する。

まずトレーニング用のフォルダとテスト用のフォルダを作成します。これらのフォルダの役割について、トレーニング用のフォルダはトレーニング用に使用されるデータを保管し、テスト用のフォルダは精度評価等に使用されるデータを保管します。

・トレーニングデータとテストデータについて
https://bit.ly/3uRqxmh

次にトレーニング用データとテスト用データの中に分類させるもの別にフォルダーを作成します。今回は犬か猫を分類させるので、フォルダー名はinuとnekoになっています。

準備は整ったので、モデルを作成していこうと思います。言い忘れていましたが、このモデルを作成するために、Xcodeと呼ばれるアプリを使用します。

Xcodeを開いたら、左上のXcodeと書かれているところから、Open Developer Tool>Create MLを押します。

Create MLを押すとフォルダ選択の画面が出ると思うので、左下のNew Documentというボタンを押します。そうすると以下の画像のような画面が出ると思います。

そして左上にあるImage Classificationというものが選択できると思うので、選択し、Nextボタンを押します。するとフォルダー選択画面が出るので、適当なフォルダーを選択します。すると以下のような画像の画面がでます。

そして左上のTraning Dataと書かれているところに用意したトレーニング用のフォルダーをドラッグ&ドロップで挿入し、右上のTesting Dataと書かれているところに用意したテスト用のフォルダーをドラッグ&ドロップで挿入します。

挿入したら、左上のTrainと書かれたボタンを押すと、画像認識のモデルが作成されます。作成したモデルをファイルとして出力したいので、上のOutputと書かれたボタンを押して、出力します。

これでモデル作成に関しては終了したので、filemakerに取り込んでテストしていきます!!

b.filemakerファイルを作成する。

用意するテーブルとフィールドは下記の通りです。

テーブル

機械学習

フィールド

機械学習(機械学習モデルを格納するためのフィールド)

画像(画像認識で判定させるためのフィールド)

スクリプトは以下の画像の通りです。

画像認識に関する処理は6、7行目の部分になります。機械学習モデルを構成というスクリプトステップで機械学習モデルをロードし、ComuteModelという関数を使用して、対象の画像を判定するという流れになっています。

その下にある処理は画像認識の結果として受け取ったJSON形式のデータを分解して、inuかnekoどちらの方の確率が高いかを判断し、カスタムダイアログで結果を表示させるために記述しています。

ではテストしてみます!!!

結果が出ました!!

100%猫らしいです笑

いかがだったでしょうか。これだけだと現状では使い道がわからないですが、文字認識とかできるようになると、実用的になってくるのかなと思いました。

ではこれで終わりにさせていただきます、ご精読ありがとうございました!!