カメラ画像認識:交通標識を認識できるAIロボットを作ろう

公開プログラム「AIでクローラーを操作」では、Teachable Machineで標識を識別できるAIモデルを作成し、スマートフォンのカメラで撮影した物理的な標識に従ってTAMIYAのクローラーが右折・左折・停止するプログラムを紹介しています。

Teachable Machineは、Googleが提供する、画像認識や音声認識などのAI(機械学習)モデルを作成できる無料プラットフォームです。予備知識やプログラミングは不要で、ブラウザ上で誰でも簡単にデータ収集、トレーニング、テストが可能で、作成したモデルはダウンロードして外部アプリに組み込んだり、共有することができます。

ここでは、Teachable Machine で画像を学習させ、学習済みモデルをMind Renderに組み込んでクローラーを動かす方法について説明します。

1 必要なもの

  • PC(Windows、macOS)(Teachable Machineでの学習、hexファイルのインストールで使用します。)
  • インターネット接続環境
  • TAMIYA マイコンロボット工作セット (クローラータイプ) (Item No: 71201)
    *ご注意:この例題では、BBC micro:bit (V2) を使用します。micro:bit(v1)が使用されている場合は、別途micro:bit (V2)をご用意ください。
  • 単3乾電池2本(BBC micro:bit 用)
  • BBC micro:bit 用 hex ファイル(詳しくは下記3をご覧ください)

2 Teachable Machine で画像識別モデルを作成する

*以下の説明は、2026年2月現在のTeachable Machine公式サイトの内容に基づいています。

1. 新規プロジェクトの作成
ブラウザーで「Teachable Machine 」にアクセスします。
「使ってみる」ボタンを押します。

「新しいプロジェクト」を選択します。

「標準の画像モデル」を選択します。

2. 学習するアクション(クラス)の設定
この例題では、STOP(停止)、RIGHT(右折)、LEFT(左折)という3つの標識を認識させます。それぞれのアクション(クラス)を設定します。

3. 学習データの準備
以下のような標識を印刷物など実物で準備します。

4. 学習データの撮影
これらの標識を撮影します。
Teachable Machine の「画像サンプルを追加する」で「ウェブカメラ」を選択し、「長押しして録画」します。多数の画像が一度に撮影されます。

画像が学習データとして登録されます。

5. トレーニング
モデルをトレーニングします。

*エポック:この値を調整することでモデルの学習精度を調整することができます。値が大きいほどよく学習します。デフォルトは50ですが、サンプルでは200に設定しました。

6. トレーニングの完了と精度の確認
トレーニングが完了したら、精度を確認することができます。カメラで標識を撮影して認識率を確認します。

3 モデルをエクスポートする

プレビューの「モデルをエクスポートする」ボタンを押します。
以後の手順は、お使いの環境により異なります。

<iOS、Android、Chromebook、macOSをご利用の場合>
Teachable Machineの学習済みモデルをMind Renderにシームレスに取り込むことができます。比較的簡単なので、こちらをお勧めします。
<Windows、Nintendo Switchをご利用の場合>
Teachable Machineの学習済みモデルをPythonおよびUnity Editorで変換する必要があります。少し手間がかかります。

<iOS、Android、Chromebook、macOSをご利用の場合
 1. Tensorflow Lite、浮動小数点を選択し、「モデルをダウンロード」します。

 2. converted_tflite.zipファイルがダウンロードされるので、展開します。
 3. Mind Renderで利用できるよう、model_unquant.tfliteファイルを外部のクラウドストレージ(Google Drive、Dropbox等)に保存します。
  *labels.txtファイルはMind Renderでプログラムを作成する際に参照します。そのまま置いておきます。

<Windowsをご利用の場合
詳細はこちらをご参照ください
 1. Tesorflow、Savedmodelを選択し、「モデルをダウンロード」します。

 2. converted_savedmodel.zipファイルがダウンロードされるので、展開します。
 3. model.savedmodelフォルダをPython環境(3.1011)でONNXに変換します。
  labels.txtファイルはMind Renderでプログラムを作成する際に参照するので、変換する必要はありません。そのまま置いておきます。
 4. ONNXをUnity EditorでSentisに変換します。

 5. Mind Renderで利用できるよう、変換したファイルを外部のクラウドストレージ(Google Drive、Dropbox等)に保存します。

これにより、Mind Renderでモデルを読み込めるようになります。

4 Mind Render でモデルを読み込み、プログラムを作成する

ここからMind Renderでの作業となります。
ストレージに保存したモデルをMind Renderで読み込み、Mind Renderに接続したロボットがスマートフォンのカメラで物理的な標識を識別し、その結果に従って右折・左折・停止するプログラムを作ります。

サンプルプログラムを利用して自分の学習モデルに書き換えることもできます。
あそぶ>MIT提供>AIでクローラーを操作

機械学習に関するブロックは以下の2つです。

1. モデルの読み込み
モデルの読み込みに使用する命令です。(「テクニック」カテゴリ)

[ID] 任意の文字列を入力します(「矢印」など)。同じプログラム内で重複はできず、「TMカメラ画像分類結果」ブロックのIDと一対一で対応させる必要があります。
[URL] クラウドストレージ(Google Driveなど)に保存した学習モデルのURLをコピー(またはサンプルプログラムを上書き)します。
[強制読み込み] onにすると、プログラムをスタートするたびに学習モデルを再読み込みします。デフォルトはoffです。
ブロックに貼り付けた後、URLを以下のように変更してください(またはメモ帳等で変更した後、貼り付けてください)
・Dropboxの場合:末尾の「dl=0」を「dl=1」に変更する
・Google Driveの場合:
 1. Google DriveでTeachable Machine のファイルを選択し、「共有」メニュー>「共有」メニューと進む
 2. 「リンクを知っている全員」が閲覧者または編集者となるよう選択し、「リンクをコピー」する
 3. リンクを以下のように変更する
  元のリンク:https://drive.google.com/file/d/{ファイルID}/view?usp=sharing
  編集後のリンク:https://drive.google.com/uc?export=download&id={ファイルID}

2. 分類結果の取得
分類結果を取得するには以下の命令を使用します。サンプルプログラムを利用する場合は変更する必要はありません。

[ID] 「TM学習モデルを読み込む」で設定したIDと同じIDを入力します。(例えば「TM学習モデルを読み込む」のIDを「矢印」としたら、「TMカメラ画像分類結果」のIDも「矢印」とする)
[しきい値] 設定されている値を超えた場合のみ、判定します。デフォルト値は60%です。(例えば、「→」「←」という画像を認識させる場合、「→」の認識率が60%を超えた場合のみ「→」と判定する)

<公開プログラムについて補足>
・公開プログラム「AIでクローラーを操作」では、標識を認識するタイミングを決めるため、待機(2秒)→前方の標識を認識して動く(2秒)→待機(2秒)・・・を繰り返すようにしています。
・「画像ID」変数の値は、labels.txtの内容に基づいています。
 0 STOP
 1 LEFT
 2 RIGHT
 3 GO

TAMIYA マイコンロボット工作セット (クローラータイプ)を組み立てます。

*ご注意:micro:bit V1 が使用されている場合は、別途用意した V2 をご使用ください。V2 はケースに入らないため、ケースなしで取り付けてください。

こちらを参照して、BBC micro:bitにhexファイルをインストールしてください。

7 Mind Renderとクローラーを接続する

こちらをご参照の上、Mind Renderとクローラーを接続してください。

8 クローラーにスマートフォンを乗せ、プログラムを実行する

標識を配置します。

クローラーに輪ゴム等でスマートフォンを乗せて固定し、上記3で作成したプログラムを実行します。

クローラーが標識に従って進みます。

*このモデルは Google Teachable Machine で作成されました。