LoginSignup
4
2

More than 3 years have passed since last update.

機械学習モデルとScratchを連携! TM拡張機能使ってみた

Last updated at Posted at 2020-10-07

前回:ScratchでLEGO Mindstormsを動かしてみる

前回に引き続いて今回もScratch上でできる機械学習を試してみる。ビジュアルプログラミング(Scratch)の拡張機能として、TM2Scratchというものを使ってみた。
以前投稿した記事で紹介したML2Scratchの開発者と同じ方が作成された拡張機能で簡単かつ様々なものを認識・識別できるような学習を施すことができる。

TM2Scratch

今回利用する拡張機能であるTM2ScratchはTeachableMachine2.0を利用して、簡単に画像認識や音声認識のモデルを生成し、その生成したモデルをScratch上に反映してプログラム内で利用できるといういうものだ。今回は以下のことをしていく。

  1. TeachableMachine2.0上で機械学習モデルを作成する
  2. カスタマイズされたScratch3.0を使って、上記の機械学習モデルを読み込んでプログラミングをする

言葉で並べても伝わりづらいと思うので、一つずつ説明していく。
3.png

TeachableMachine2.0

TeachableMachine2.0とは

  • PCのカメラやマイク、画像データなどを使用して、WEB上のGUI操作で機械学習モデルを作ることができる  (プログラミング不要)
  • 作成したモデルの出来具合をすぐ確認することができる
  • 作成したモデルをエクスポートしプログラムに利用することができる
  • 現時点では画像分類・音声識別・ポーズ認識のモデルを作成することが可能

モデル作成

  1. TeachableMachine2.0上で機械学習モデルを作成する

ではさっそくTeachableMachineでモデルを作成していく。
ML2Scratchでは画像分類を行ったので今回は音声識別のモデルを作成していくことにする。
TeachableMachine2.0のサイトにアクセスする。

アクセスしたら「使ってみる」をクリックする。
1.png

画像、音声、ポーズからどの学習モデルを作るか選択する。
今回は音声を選択する。
4.png

今回は以下のような音を識別させる。

  • 手のひらをパーで叩いた音
  • 手のひらをグーで叩いた音

25.png    26.png

以下のように、いくつかの音声サンプルを追加する画面が表示されるので、
まずはバックグラウンドノイズのデータを採取する。
5-1.png

「マイク」を選択するとPCのマイクを利用して音声を集めることが出来る。
バックグラウンドノイズなので特に音を発したりはせず自然な音のみを収録する。
3.png

続いて「Class2」に「手のひらをパーで叩いた音」のデータを収録する。
歯車マークから採取するデータに合わせて収録開始のタイミングや、全体の収録時間を設定することができる。
8.png

TeachableMachineでの音声の収録では毎秒ごとに区切って学習データとするので、収録時間は2秒とし、1回の収録で1秒毎に1回手を叩いて収録し合計8サンプルになるよう4回繰り返し収録した。
右の画像から2秒間で2回叩いて音を出しているのがわかる。

6.png   7.png

音声データの収録が完了した「Classe2」の名前をパーに変更しておく。
9.png

続いてクラスを追加して手のひらをグーで叩く音を集める。
10.png
11.png

データを集め終わるとこのような全体像になる。
12.png

集めたデータを利用して学習モデルを生成していく。「モデルをトレーニングする」を選択して訓練を開始する。
13.png

しばらく待ち、訓練が完了するとTeachableMachine上でモデルの動作を確認することができる。まずはここで収録した音声を認識できているか確認する。以下では収録時と同じようにパーで叩くかグーで叩いているがスライダーが認識度合いを表現しているのがわかる。
MyVideo_1.gif
イメージとしてはペチンという音と、ゴチッという音で認識させるには少し微妙な題材かとも思っていたが思ったよりも認識できている。

モデルの動作が確認できたらモデルをエクスポートする。
14.png

以下のような画面が表示されるので、今回はURL(リンク)を利用する。メモ帳などにコピーしておくと良いだろう。
15.png

これでモデルの作成は完了したので、続いてScratchで作業をしていく。

TM2Scratchを使って音声認識プログラムを作る

2.カスタマイズされたScratch3.0を使って、上記の機械学習モデルを読み込んでプログラミングをする

まずは、カスタマイズされたScratchをChrome上で開く。この際カメラやマイクの使用を許可するか選択できるので、必要に応じて許可をする必要がある。

拡張機能追加から「TM2Scratch」を選択してブロックを追加する。
2.png
16.png

追加されたブロックを利用してまずは以下のようなプログラムを作る。

「音声分類モデルURL」ブロックの空白部分には先程メモしておいたURLを貼り付ける。
17.png
旗マークをクリックすることで以下のブロックに先程収録する際に作成したclasse名が選択できるようになる。
(今回ではパーやグー)

18.png  19.png

Scratch上で現在どの音を認識しているのか表示させるために「音声ラベル」の横のチェックボックスにチェックを入れておく。
20.png  21.png

モデルをブロックに反映できたので簡単なプログラムを作ってみる。
22.png

音声ラベルとしてパー、グーをそれぞれ認識した際にステージ上のネコがそれに応じてしゃべるという内容。
23.png
24.png
ラベルを受け取った際にネコがそれに応じて喋っているのがわかる。

TeachableMachineとTM2Scratchを使ってみて

まずTeachableMachineについてだが、画像認識・音声認識・姿勢認識の3分野においてかなり簡単に学習モデルを生成できるのは驚いた。実際にファイルとして出力しJavascriptなどで実装する際に利用できるようだ。

テキストデータやCSVなどは利用することが出来ないので、用途に応じて使い分けるのが妥当だろうか。

またScratchへの連携だが、URLを転用するだけで反映できる点がお手軽で、Scratch利用者にもマッチしている。Scratch上でのプログラムへの応用も簡単にできるため非常にお手軽に体験することができた。

Scratchでも機械学習分野でできることがどんどん広がっていっている。今回の音声認識をLEGO® MINDSTORMS EV3に応用してみるのも面白そうなので実践してみたいと思う。

4
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2