10/30 AIoTLTハンズオン用の資料です。画像を認識して数字を判別するプログラムを作ってみます。
ご自身で進められる方は、サクサク進めていってみてください!
(コマンドライン操作に慣れている方などは結構すぐ終わってしまうかもしれません)
- Pythonインストール(Windowsの方)
- Tensorflowインストール
- ArduinoIDEインストール(シリアルモニタ用)
使うもの
GR-LYCHEE
がじぇっとるねさすさんが提供している、カメラと無線(Wi-Fi・BLE)を搭載したマイコンボードです。
電子工作でよく使われるArduino UNOとピンが互換になっていて、作例の多い通信モジュール「ESP32」搭載しています。
わりと手軽にIoTプロトタイピングを試せる高性能マイコンボード、な立ち位置です。(ちゃんとく所感)
- 購入: 秋月電子(¥10,580)
なお他のGRシリーズのボードでも今回のプログラムを試すことができますが、GR-KURUMI、GR-COTTON、GR-ADZUKIは容量不足で実行できないようです。
USBケーブル(microB)
PCとGR-LYCHEEの通信(プログラムの書き込みなど)には、Android端末などに使われているmicroBタイプのUSBケーブルを使います。
※ご自身で用意する場合、シリアル通信ができるものか確認してください。安価なものだと一方向の給電専用タイプのものが多いです。
手順1: 作業用ディレクトリ(フォルダ)を作成
今回のプログラムを試す場所(フォルダ)を作ります。
プログラムを実行する上では今どこで作業しているかというのが重要です。最初のうちはわかりづらいので、意識するようにしましょう。
Windowsの方
①デスクトップで右クリックし、gr-tutorial
というファイルを作成
②Windowsメニューから「コマンドラインプロンプト」を検索し開く(「cmd」で候補にでてきます)
③下記コマンドを1行ずつ実行($
は不要。コマンドラインであることを表しています)
$ cd Desktop
$ cd gr-tutorial
cd
コマンドは移動するコマンドです。
Macの方
①「ターミナル」を起動(⌘+スペースで「ターミナル」を検索すると便利)
②下記コマンドを1行ずつ順に打ち込む($
は不要。コマンドラインであることを表しています)
$ cd ~/Desktop
$ mkdir gr-tutorial
$ cd gr-tutorial
デスクトップに「gr-tutorial」というフォルダができているかと思います。(右クリックで普通に作成してもOKです)
cd
コマンドは移動するコマンド、mkdir
コマンドはディレクトリを作成するコマンドです。
手順2: 環境構築
今回はご自身の環境に、以下の内容を用意し進めます。
- Python実行環境
- TensorFlow
環境構築はおそらくこのハンズオンで1番大変なところです。乗り越えたらサクッと試せるようになるので頑張りましょう!
PCの状態に合わせて場合分けしましたので、ご自身に合う部分を読んでください。
まずは現在の環境を確認する
下記コマンドを試して、PythonとTensorFlowがインストールされているか確認しましょう。コマンドは$
マークの後ろの部分です。(↓の場合はpython -V
と打ち込む)
$ python -V
Python X.X.X
Pythonのバージョンが表示されればOKです。command not found
などと表示された方は、インストールされていない(または正しくインストールできていない)のでPythonの環境構築手順を進めます。
インストールされていなかった方は、手順2.1へ進んでください。
続いて、TensorFlowモジュールがインストールされているかの確認です。pip list
と打ち込んでみましょう。(表示されるものは一例)
$ pip list
Package Version
---------------------- ---------
absl-py 0.6.1
bleach 1.5.0
html5lib 0.9999999
Markdown 3.0.1
nose 1.3.7
numpy 1.15.3
pip 18.1
protobuf 3.6.1
setuptools 39.0.1
six 1.11.0
tensorflow 1.5.0
tornado 5.1.1
Werkzeug 0.14.1
wheel 0.32.2
インストールされた一覧に、tensorflow
とあればOKです。バージョンが古い場合は、下記コマンドで更新をしておきましょう。(最新は1.5系です)
- Python2系の場合
$ pip install --upgrade tensorflow
- Python3系の場合
$ pip3 install --upgrade tensorflow
PythonがインストールされているがTensorFlowはインストールされていない場合は、手順2.2へ進んでください。
どちらもインストールされていた場合は、手順3へ進みます。
手順2.1: Pythonをインストール
Windowsの方
下記リンクをたどり、Pythonをインストールします。
- 参考: Python3のインストール
完了したら、再度コマンドプロンプトで下記コマンドを実行し、バージョンが表示されるか確認してみてください。
$ python -V
Python X.X.X
Macの方
デフォルトでPython2系がインストールされているはずですが、何かのタイミングで消してしまった可能性があります。
下記リンクをたどり、Pythonをインストールしてください。(Hello WorldはやらなくてOK)
完了したら、再度コマンドプロンプトで下記コマンドを実行し、バージョンが表示されるか確認してみてください。
$ python -V
Python X.X.X
手順2.2: TensorFlowをインストール
下記コマンドを実行します。
$ pip install tensorflow
だらだらと実行文が表示され、最後の行に Successfully installed tensorflow-X.X.X
などと表示されればOKです。
pip list
というコマンドを打って、インストールされたか確認してみます。(表示されるものは一例)
$ pip list
Package Version
---------------------- ---------
absl-py 0.6.1
bleach 1.5.0
html5lib 0.9999999
Markdown 3.0.1
nose 1.3.7
numpy 1.15.3
pip 18.1
protobuf 3.6.1
setuptools 39.0.1
six 1.11.0
tensorflow 1.5.0
tornado 5.1.1
Werkzeug 0.14.1
wheel 0.32.2
一覧に、tensorflow
とあればOKです。
実行したらエラーが出た
長い実行文が表示されたあと、最後の一行が下記のようなエラー文になることがあります。
Could not install packages due to an EnvironmentError: [Errno 13] Permission denied: '/Library/Python/2.7/site-packages/tensorflow-1.11.0.dist-info' Consider using the --user option or check the permissions.
下記コマンドを再度実行します。
$ sudo pip install tensorflow
パスワードを求められるので、PCのユーザのパスワードを入力します。(入力したパスワードは表示されません)
エラーが出てインストールが実行されない①
pip install tensorflow
を実行すると、command not found
といったエラーが出る場合があります。以下のコマンドを実行し、pipをインストールします。
$ python -m ensurepip
エラーが出てインストールが実行されない②
pip install tensorflow
を実行すると、下記のようなエラーが出る場合があります。
Could not find a version that satisfies the requirement tensorflow (from versions: )
No matching distribution found for tensorflow
以下のコマンドを再度実行しましょう。
- Python2系
pip install --upgrade https://storage.googleapis.com/tensorflow/mac/cpu/tensorflow-1.11.0-py2-none-any.wh
- Python3系
$ python3 -m pip install --upgrade https://storage.googleapis.com/tensorflow/mac/cpu/tensorflow-1.5.0-py3-none-any.whl
インストールしたのにlistに表示されない
主にMacで、Python環境がPC上に複数あり、意図する場所にインストールできていない可能性があります。
主に下記の記事を参考にしつつ、手順が煩雑なのでメンターに声をかけてください。
手順3: MNISTで学習モデルを作成
画像認識のプログラムと学習モデルを作っていきます。
MNISTとは?
MNIST(Mixed National Institute of Standards and Technology database)とは、手書き数字画像60,000枚と、テスト画像10,000枚を集めた、画像データセットです。さらに、手書きの数字「0〜9」に正解ラベルが与えられるデータセットでもあり、画像分類問題で人気の高いデータセットです。
MNISTは深層学習(ディープラーニング)の手法の1つであるニューラルネットワークを学ぶ上でも便利ですし、機械学習の入門のデータセットとしてもよく使われています。
手軽に入手できる点も含めて、人工知能(AI)の勉強を始める入り口としてMNISTは人気の高いデータセットです。
※機械学習で便利な画像データセット「MNIST」を丁寧に解説!より引用
サンプルファイルのダウンロード
ご自身のPCのダウンロードフォルダに、サンプルコードをダウンロードします。
今回はがじぇるねさんのチュートリアルのサンプルコードをお借りしています!
「機械学習の実行」の章にある、「mnist_softmax_for_e-ai.py」のリンクをクリックしダウンロードします。
ダウンロードしたファイルを作業ディレクトリに移動する
ダウンロードフォルダを開き、デスクトップの「gr-tutorial」フォルダに「mnist_softmax_for_e-ai.py」ファイルをドラッグ&ドロップして移動させましょう。
コマンドラインで、開いている場所にファイルが移動してきたか確認してみます。
- Windowsの場合
$ dir
- Macの場合
$ ls
一覧に「mnist_softmax_for_e-ai.py」があればOKです。
tensorFlowで学習モデルを作成
tensorFlowを実行し、学習モデルを作ってみます。下記コマンドを実行しましょう。
$ python mnist_softmax_for_e-ai.py
python
コマンドはPythonで書かれたプログラムを実行するコマンドです。ファイルの中のプログラムが実行され、学習モデルが作成されます。
エラーが出てしまった人は、PythonまたはTensorFlowが正しくインストールできていない可能性があります。手順2に戻り、それぞれ確認してください。
また、not found~
などと表示された方はファイル名が正しいか確認します。
Windowsの方はdir
、Macの方はls
を実行し、「tf_LearnedModel」というフォルダが作成されたことを確認してください。
dir tf_LearnedModel
またはls tf_LearnedModel
などのコマンドを実行すると、4つのファイルが入っていることがわかります。
これが学習済みAIモデルです!
手順4: 学習モデルをGRボードで扱う
GRシリーズでは「Webコンパイラ」というブラウザ上で利用できるコンパイラが用意されています。面倒な環境構築がないので楽チンですね!
がじぇるねのページから、「ログイン」または「ゲストログイン」をクリックし移動します。
プロジェクト作成画面になるので、適当なサンプルコードと名前をつけ作成します。(どれでもOKです)
右側のリストから「e-AI Translator」をクリックします。
アップロードボタンを押し、先ほど作成された「tf_LearnedModel」を選択します。
その他はデフォルト選択のまま、「トランスレート」をクリックします。
閉じるボタンを押してメニュー左側の「〜〜.cpp」というファイル名をダブルクリックし、編集画面を開きます。
全て消してから、コピーしたプログラムを貼り付けます。右側の「ビルド実行」ボタンをクリックします。
手順5: GR-LYCHEEにプログラムを書き込む
コンパイルが完了すると「〜.bin」というファイルが作成されているので、右クリックしダウンロードします。
GR-LYCHEEとPCをUSBケーブルで接続しましょう。
ダウンロードした「〜.bin」ファイルを「MBED」にコピーします。
手順6: シリアルモニタで表示
GR-LYCHEEで実行されている内容を、シリアル通信を介してPCで確認してみます。
Windowsの方
「TeraTerm」というシリアル通信対応のソフトをダウンロード&インストールします。
下記リンクを参考に、TeraTermを起動しシリアル接続します。
Macの方
下記コマンドを実行し、USB接続されている場所を調べます。
$ ls /dev/tty.usb*
/dev/tty.usbmodem~~~
下記コマンドで接続します。
$ screen /dev/tty.usbmodem1422 9600
表示結果
実行時間と、推論結果が表示されます。画像は「0: 1.00」となっているので、0の可能性が高い、という結果の状態です。
「AIの実行」の章にあるサンプル文字の画像をカメラに移し、認識を試してみましょう。もちろん自分で手書きした文字でもOKです!
以上でハンズオンは終了です。お疲れ様でした!