みなさんこんにちわ、こんばんわ。

SAIです。

 

お仕事やら夏バテやらで飛び飛びです。

 

今日は、JupiterNoteBookで画像認識をしてみましょう。

 

今日のソースも、Nvidiaの「Getting Started with AI on Jetson Nano」です。

 

 

 

またまたCSIカメラを使いますので接続しておきましょう。

 

 

CSIカメラを繋いだ状態で、JupiterNoteBookを起動し、

classification を動かしてみましょう!

 

1.classificationを開く

 

JupiterNotebookを起動したら以下のようなフォルダ構成が見えると思います。

classificationというフォルダがありますね。

これを開きます。

 

↓こんな画面が見れると思います。

 

 

今回は、コードの説明はとりあえず省略します。

画像認識の学習がメインです。

 

が、CSIカメラを使う場合はちょっとやることがあります。

 

2.SCIカメラ用にコードを改変する

 

JupiterNotebookを初めて実行するときは、

とりあえず実行ボタンをポチポチしてみるのがいいと思います。

 

が、ClassificationではUSBカメラがデフォルトになっているようです。

 

コードを実行する前に、CSIカメラが使えるようにコードを改変しちゃいましょう。

for USB の部分のコードが有効化されていて、

for CSI の部分のコードが[#]で無効化されています。

 

USBカメラをコメントアウトして、CSIカメラの部分を有効にしましょう!

 ↓

 

オブジェクトは 同じ camera に格納されるので、修正はここだけでOKです。

 

ちなみにJupiterNotebookは、左上に保存ボタンがありますね。

しかし、、

JupiterNotebookを動かす環境はDockerContainerで実行しています。

 

ということは・・・

保存したところで次回DockerContainerを起動したら消されちゃいます。

 

毎回、コードを修正しなければならない点に注意しましょう。

 

 

3.カメラオブジェクトが生成できるか実行してみよう

 

実行は、↓この赤枠の▶をポチポチするか、

キーボードショートカット: [SHIFT][ENTER] で実行できます。

 

今回も、Notebookの先頭からポチポチしてみよう。

 

 

無事、カメラが生成できました!

 

4.画像認識するモデル名と認識名を作る

 

次のコードは、画像認識に使うtask (認識モデル名?)と categories(認識候補)

そして  データセットを定義しています。

 

例題は、

Thumbs は、親指の上下を認識させるモデル名ですね。(赤線)

候補は、thumbs_up と thambs_down 

つまり、グッと ブー ですね。

 

 

今回はそのまま実行します。

 

他に、

・emotions で 平然、嬉しい、悲しい、怒り を認識

・fingers(指)で、1本、2本、3本、4本、5本

というのがありますね。

 

グッと ブー がうまくいったら「#」を切り替えて試してみると良いと思います。

 

 

4.画像認識をさせる画面について

 

JupiterNotebookをポチポチ進めていくと、以下の画面まで進みます。

 

ここで写真を撮影して、学習をしますよ!

 

 

赤い線の場所が、学習をするための教師画像(学習に使う画像)を撮影する場所です。

青い線の場所が、学習を実行するためのパラメータと進捗です。

緑は・・・うまく使えないんですが、学習モデルのロードとセーブの様です。

 

学習がうまくできた後は、カメラで撮影した画像の状態によって、

右上の認識率が変わりますよ!

 

それでは、実際に教師画像を撮影しよう!

 

 

ちなみに、JupiterNotebookにも説明がありますが、、英語ですね。

こっちのほうが正しいと思いますので、一応読んでみてね。

 

 

 

5.教師画像の撮影

 

今回はグッと ブー を覚えさせますよ!

 

まずは、グッ を覚えますね。

 

自分の指を グッ にして、少し角度を変えたり、遠くしたり近くしたり。

20枚程度撮影しましょう。

多ければ多いほうがいいですが、

多ければ学習に時間がかかっちゃうよ。

 

 

categoryを [thumbs_up] にして、add で写真を撮りましょう。

1枚とると、 count が1づつ上がります。

20枚程度撮ったら、
categoryを [thumbs_down] にして、また20枚程度の写真を撮りましょう。

 

 

6.モデルの学習(教師あり学習)

 

写真が撮影出来たら、AIによる学習をする番です。

 

学習は↓ここで実行します。

 

 

学習する前に epochs の数値を10とか20に変更しましょう。

 

epochsは、畳み込み学習の階層です。

epochs が多ければ沢山学習するので認識率が上がります。

 

が、あまり多すぎると過学習になるようですので、

最初は10とか20がいいと思います。

 

そして、train をポチっと押しましょう!

 

学習が開始されます!

 

学習がススムとprogressバーが伸びます。

 

epochsは、学習すると残りのepoch数に減算で進んでいくようですよ。

そして、学習率がloss とaccuracy が進んでいきます。

 

Jetson  Nanoだと、学習完了まで10分以上かかりますね。

テレビでも見ながらしばらく待ちましょう。

 

そういえば、JetsonNanoだと、熱がひどいです。

 

学習する際は必ずファンを付けて冷却しましょうね!

 

 

7.画像認識で、認識率をチェック

 

学習が終わったら、カメラの撮影している画像に従って、

右の[thumbs_up] と [thumbs_down] のバーが上下します。

 

 

学習がうまくいったら、指の認識が何%になっているかが見れますよ!

 

 

色々試してみてくださいね。

 

JupiterNotebookは、結構わかりやすいので自信がつきます。

今後、コマンドラインからの学習しますが、、、、

SAIは失敗が続いたりすると、自信を取り戻すためにこのJupiterNotebookを動かしたりしてます。

 

 

ちなみに、

1万枚位画像があると、Jetson Nanoだと半日以上かかるので・・・・

本気の学習をJetsonNanoで実施するのは無理がありそうです。

 

JetsonNanoは、機械学習の実行用という位置づけが良さそう。

 

7.番外.トラブルシューティング(写真を撮りミス!)

 

間違った写真を撮っちゃった!

 

そんな場合の対処方法

 

JupiterNotebookで撮影した画像は、data フォルダ内に保存されています。

 

/data/classification/thambs_A/~のフォルダに保存されています。

 

 

写真をみて間違ったものを削除しましょう。

 

もし、学習がうまくいかないときは、間違った画像があるのかもしれません。

上手くいかないときは、チェックしてみてはどうかな?

 

 

 

 

それでは今日はこの辺で。

 

◆目次へ戻る◆