Teachable Machineによる画像認識モデルの作成
目次
- 1 概要
- 2 モデル
- 3 転移学習
- 4 Teachable Machineを使って、画像認識モデルを作る
- 4.1 Google アカウントでログイン
- 4.2 プロジェクトの作成
- 4.3 クラスの作成
- 4.3.1 1つ目のクラスを作成
- 4.3.2 2つ目のクラスを作成
- 4.3.3 クラスの追加
- 4.3.4 ネガティブクラスの作成
- 4.3.5 クラス作成時にWebカメラを使わずに、スマートフォン等で撮影しておいた画像をアップロードする場合
- 4.4 トレーニングの実施
- 4.5 モデルの動作確認
- 4.6 Google ドライブに保存
- 4.7 モデルのエクスポート
関連コンテンツ
概要
Googleの提供する、無料で画像認識、音声認識、姿勢認識のモデルをノーコードで作成できるサービス「Teachable Machine」を使用し、画像認識モデルと画像認識モデルを使ったWebサイトを試してみます。
「Teachable Machine」は、転移学習を用いており、少ないデータで画像認識、音声認識、姿勢認識モデルを作成することができます。
Teachable Machineについてのよくある質問 : https://teachablemachine.withgoogle.com/faq
モデル
モデルとは、何かしらの値を入力したときに、結果を出力する仕組みのことです。入力 >> 計算 >> 出力 の仕組みを持つ中学1年の数学で学ぶ「関数」とも似ています。画像認識モデルでは、コンピュータがトレーニングした画像に基づき、入力した画像が、トレーニング内容とどれくらい似ているかの数値を出力します。
転移学習
学習済みモデルに追加学習させることでカスタマイズし、別の領域に適応させる技術のこと。Teachable MachineではMobileNet V1 を使用。MobileNet V1に、追加でトレーニングする。
Teachable Machineを使って、画像認識モデルを作る
画像認識には、認識させたいものの画像を用意する必要があります。画像認識には、認識される物体あたり、少なくても100枚は欲しいところです。100枚の画像を用意することは非常に難しいので、Teachable Machineでは「ウェブカメラ」を用いることで、容易に画像を確保できます。もちろん、スマートフォンなどで自分で撮影しに行っても良いです。
ウェブカメラを使用する場合は、ZoomやMicrosoft Teams、Google Meetのようなビデオチャットツールを使用中の場合は、ビデオチャットツールでビデオ(カメラ)を無効化してください。
ここでは、例として、「ボールペン」と「ホチキス」を認識するモデルを作ってみます。手元にない場合は、「メカニカルペンシル(シャープペンシル)」と「消しゴム」でも構いません。2つ用意することです。
Google アカウントでログイン
Teachable Machine で作成する画像認識や音声認識、姿勢認識モデルを保存するため、Google アカウントで、Google Drive等にあらかじめログインしておきます。モデルを保存することがなければ、Google アカウントが無くても利用することができます(日本では Google アカウントは 13 歳以上から利用可能)。
プロジェクトの作成
Teachable Machine のWebサイト( https://teachablemachine.withgoogle.com/ )にアクセスし、「使ってみる」をクリックします。
Windowsを使っている人は、Ctrlキーを押しながら、上記のURLをクリックします。
Macを使っている人は、Commandキーを押しながら、上記のURLをクリックします。
新しいプロジェクトとして「画像プロジェクト」をクリックします。
「標準の画像モデル」をクリックします。
クラスを作成し、学習させ、モデルを作るための画面が表示されます。
クラスの作成
1つ目のクラスを作成
「Class1」をクリックします。Classは画像認識させたときの分類名称のことです。「ボールペン」に書き換え後、Enterキーを押します。「Class1」の表示が「ボールペン」に変わります。ボールペンがない場合は、クラス名を「メカニカルペンシル」とします。
画像を取得するために、「ウェブカメラ」をクリックします。下図のように表示されることがあります。表示された場合は「許可」をクリックします。
ウェブカメラの目の前に認識させたいものを映します。その状態で「長押しして録画」をクリックします。クリックし続けることで画像を取得します。様々な角度で、合計100枚前後取得します。指を離し、長押しを止めると画像の取得も止まります。
取得した画像を消すには、「⋮」をクリックし、「サンプルをすべて削除」をクリックすることで消えます。
2つ目のクラスを作成
前述の「ボールペン」と同じ手順で、クラス名を「Class2」から「ホチキス」に変更し、ホチキスのサンプル画像を取得します。ホチキスを持っていない場合は、クラス名を「消しゴム」とし、消しゴムを撮影しましょう。
2つのクラスを作成すると、次のような画面になっているはずです。
クラスの追加
3つ目以降のクラスを追加する場合は、画面内の「クラスを追加」をクリックします。これまで同じ手順でクラスを作成することができます。
ネガティブクラスの作成
認識させたいクラスのどれでもないものを作ります。コンピュータはトレーニングしたもの以外を判定することはできません。現在のAIは、トップダウン型のため言われたことしかできません。従って判定させたいモノ以外、ネガティブクラスを作っておく必要があります。作り方は、今までと同じです。クラス1やクラス2で学習させたもの以外を撮ります。
クラス作成時にWebカメラを使わずに、スマートフォン等で撮影しておいた画像をアップロードする場合
大量の画像データ(JPEGやPNG形式)を持っている場合、画像データをClassにアップロードすることができます。「画像サンプルを追加する」で、Webカメラではなく、「アップロード」を選びます。
「ファイルから画像を選択するか、ここにドラッグ&ドロップします」と表記されている場所に、複数の画像をドラッグ&ドロップします。
クラス名は、Class3やClass4のようなものではなく、適切なものに変更しておきましょう。
トレーニングの実施
画面内の「モデルをトレーニングする」をクリックします。クリック後はタブを切り替え操作をおこなず、しばらく待ちます。
「モデルをエクスポートする」が表示されれば、トレーニングは終了です。クラスの追加や編集を行なった場合は、再度トレーニングを実施することができます。
モデルの動作確認
「3.モデルをエクスポートする」の表示で「X」 をクリックします。Webカメラの前に、ボールペンを持ってくると、ボールペンであることを認識します。
カメラからボールペンを外すと、negative と表示されます。
Google ドライブに保存
画面左上の「三」をクリックし、「ドライブにプロジェクトを保存」をクリックします。Google ドライブに、設定した「クラス」や「トレーニング」結果をGoogle ドライブに保存するし、再利用することができます。
モデルのエクスポート
トレーニングしたモデルをアップロードして公開するか、ダウンロードするか選びます。また、Tensorflow.js、Tensorflow、Tensorflow Lite のどれでエクスポートするか選びます。
Tensorflow.js : Webアプリケーション向け。JavaScriptを使って、画像認識アプリケーションを組む人向け。
Tensorflow : パソコンなどのデスクトップアプリケーションやサーバー内で実行するアプリケーション向け。Pythonを使って、画像認識アプリケーションを開発。
Tensorflow Lite:主に組み込み機器向け。
ここでは、「Tensorflow.js」タブをクリックし、「アップロード」>>「モデルをアップロード」の順にクリックします。
下図のように「クラウドモデルを更新する」に表示が変わります。トレーニングを再実行した時などに、「クラウドモデルを更新する」をクリックします。
「共有可能なリンク」に表示されているURLをWebアプリケーションに組み込むことで、トレーニングした画像認識モデルを利用して画像認識を行うことができます。
アップロードしたモデルは、インターネット上に公開されます。一度公開されると削除はできません。
例 https://teachablemachine.withgoogle.com/models/zTx7v43x4/
公開されたURLにアクセスすることでモデルを実際に試すことができますので、実際に「共有可能なリンク」にアクセスしてみると良いしょう。また、画面に表示されている「モデルを使用するコードスニペット」に表示されているコードを活用することで、画像認識が可能なWebアプリケーションを試すことができます。https://mydocument.atlassian.net/wiki/spaces/support4textbook/pages/1681260566 に続きます。