BLOG

未来工作BLOG

2022.07.27

特集記事

【夏休みの実験】Scratchで機械学習をしてみよう

こんにちは、にしくんです。

今回はScratchを使ってAIの土台となる技術について夏休みの実験をしていきたいと思います!

 

突然ですがみなさんは機械学習という言葉を耳にしたことはあるでしょうか?

最近では車やロボットの自動運転や日常生活の補助をしてくれるバーチャルアシスタント、写真や動画をかわいく盛って楽しむことができる加工アプリなどのAIを使ったサービスがより身近な物になっているのを感じますよね。

 

実はこれらのサービスのAIの作成において「機械学習」というものが大きく関わっているのですが

実際どのような仕組みで動いているのでしょうか。試していきましょう!

実験に必要なもの

 

  • パソコン
  • Webカメラ (ノートパソコンに内蔵のものでもOK)

機械学習について

まずコンピュータはどのように学習するのでしょうか。

人間であれば、実際に五感を使って体験してみたり、本を読んだりしますよね。

 

機械学習の方法には様々なものがありますが、簡単な例としてコンピュータがいぬの画像とねこの画像を判断できるようになるまでのお話をします。

 

人間であればいぬの画像とねこの画像があってどちらか片方を見せられた時、すぐその画像がにいぬかねこかを判断できますが、なにもしていないコンピューターにはその判断すらできません。

 

そこでコンピューターは大量の画像を使って頑張ります。大量のいぬの画像と大量のねこの画像を読み込み、大量のいぬの画像に共通するいぬの特徴と大量のねこの画像に共通するねこ特徴をそれぞれ数値的なデータするのです。

 

コンピュータはこの特徴のデータをもとにカメラで画像がいぬとねこのどちらの数値に近いかということで判別できるようになるという仕組みになります。

 

(画像 : フリー素材.com https://free-materials.com/)

機械学習について

まずコンピュータはどのように学習するのでしょうか。

人間であれば、実際に五感を使って体験してみたり、本を読んだりしますよね。

 

機械学習の方法には様々なものがありますが、簡単な例としてコンピュータがいぬの画像とねこの画像を判断できるようになるまでのお話をします。

 

人間であればいぬの画像とねこの画像があってどちらか片方を見せられた時、すぐその画像がにいぬかねこかを判断できますが、なにもしていないコンピューターにはその判断すらできません。

 

そこでコンピューターは大量の画像を使って頑張ります。大量のいぬの画像と大量のねこの画像を読み込み、大量のいぬの画像に共通するいぬの特徴と大量のねこの画像に共通するねこ特徴をそれぞれ数値的なデータするのです。

 

コンピュータはこの特徴のデータをもとにカメラで画像がいぬとねこのどちらの数値に近いかということで判別できるようになるという仕組みになります。

Teachable Machine (ティーチャブルマシン)

今回の実験にピッタリなツールが「Teachable Machine(ティーチャブルマシン)」です。

 

こちらはGoogleが提供しているツールなのですが、これを使うと簡単に画像や音声、身体のポーズなどを学習させ、それらを判別するためのデータを作成することができます。

 

つまり、先ほどのいぬやねこといった画像の識別だけではなく、人の声や曲などの音声、カメラに映る人間がどんなポーズをとっているかなんかを判定できるようになります (便利ですね!)

 

しかもなんとブラウザからサイトへアクセスするだけで使用することができちゃうというお手軽さ!( 使わない手はない)

今回の判別対象

今回判別の対象になってもらうのはこちらのうさぎのぬいぐるみです。

 

 

左側のうさぎはオレンジの色の服を着ている「うさこちゃん」

 

右側のうさぎは緑の服を着ていて片耳が垂れている「たれみみくん」です。

 

 

この2つのぬいぐるみを識別してみましょう。

モデルデータの作成

以下のURLからTeachableMachineを使ってモデルデータを作成することができます。

https://teachablemachine.withgoogle.com/train

 

今回は画像を使ってモデルデータを作成するので「画像プロジェクト」を選択します。

続いてプロジェクトの形式を聞かれますが、「標準の画像モデル」を選択してください。

選択すると以下のようなモデルデータの作成画面になります。

左側にあるClass 1とClass2 というのがモデルの分類分けになります。

今回は3つの状態にモデルを分類したいのでClassを新たに1つ追加し、わかりやすいようにそれぞれに名前を付けました。

モデルの作成はWebカメラを使って画像をキャプチャしていきます。

判別の精度が向上のために、1つのポーズだけではなく角度を変えて36枚分撮影をしました。

たれみみくんの場合も同じようにサンプル画像の作成をします。

なしの場合はどちらも映さずに背景だけを撮影しました。

これでサンプルの作成が完了です。

続いて中央部にある「モデルをトレーニング」の部分を押すと作成した画像サンプルを使ってトレーニングを開始してくれます。

 

トレーニングが終了するとプレビューが表示されうまく学習できているかを確認できるようになります。

プレビュー表示の出力部分で数値が高いものとカメラに映したものが同じであれば学習は成功です。

モデルをアップロード

ここからは作成したモデルをアップロードしてScratchで使えるようにします。

 

まずプレビューの右側にある「モデルをエクスポートする」を選択します。

続いて下のような画面が開かれるので「モデルをアップロード」を選択します。

アップロードが完了するとURLが表示されるのでそれをコピーしておきます。

Scratchでモデルデータを使用する

 

Teachable Machineを利用するためのScratchは普段使っているものと少しだけ違います。

 

その名も「Stretch3 (ストレッチスリー)」!

 

Scratchの元の機能はそのままに機械学習のための拡張機能が追加されています。

 

下のURLから開くことができます。

https://stretch3.github.io/

 

 

Stretch3を開いたら拡張機能の追加から、「TM2Scratch」という機能を追加します。

拡張機能が追加されると緑色のブロックが追加されるので、その中から「画像分類モデルURL」のブロックを取り出して「緑の旗が押されたら」と組み合わせ下の画像のように組んでみましょう。

 

そして「画像分類モデルURL」のブロックの中に先ほどアップロードした時に生成されたURLを張り付けてください。

 

URLを張り付けて緑の旗を押してみるとモデルのデータを読み込み始めます。(このとき処理に少し時間がかかるのでプログラム実行中の黄色い枠線が消えるまで待ちましょう)

続いて「画像ラベルのどれかを受け取ったとき」というブロックを取り出して選択ボックスを開いてみましょう。先ほどの読み込みが成功していれば、このように設定していた分類が表示されるはずです。

ラベルが読み込めたらこのように組んでみましょう。

カメラで映したものをネコが教えてくれるプログラムになっています。

完成!

 

このようにカメラで映したものをScratchから機械学習によって判別できるようになりました。

ぱちぱちぱち!!

ちゃんとうさこちゃんとたれみみくんを正しく識別できています。

さいごに

この技術を使えば、入れたごみを自動で分別してくれるゴミ箱や、特定の人しか入れないドアとかも簡単に作れそうで、さらに工作の幅が広がりそうです。

 

TeachableMachineには今回紹介のできなかった音声の認識や、ポーズの認識などの機能もあるので、興味がわいた方はそちらも試してみてもらえたらと思います。

 

以上、にしくんの夏休みの実験でした!

この記事を書いたクリエイター

ゲームプログラミングのハカセ

にしくん

他の記事も見る

この記事をシェアする

一覧へ戻る

TOP