書籍 改訂TensorFlow版 算数&ラズパイから始めるディープ・ラーニング サポート・ページ 画像認識1(お菓子の種類の追加にトライ)

2023年発刊の書籍「改訂TensorFlow版 算数&ラズパイから始めるディープ・ラーニング」のサポート・ページです.

第2章 体験②・・・画像認識1(お菓子の種類)では「きのこの山」,「たけのこの里」の画像判別を取りあげてます.お菓子の種類を増やしても正しく判別できるか編集部でトライしてみました.

 

 

●手順の紹介
・Raspi_kinoko_takenokoフォルダ内のmy_photosフォルダに「アポロチョコ」,「コアラのマーチ」,「パイの実」に加え「何も置かれていない状態」の写真画像を用意しそれぞれ「apollo」,「koala」,「pie」,「nashi」フォルダに保存します.
※ダウンロードデータの「きのこの山」,「たけのこの里」の画像と同様にそれぞれ43枚準備しました.

 

・「Raspi_kinoko_takenoko」フォルダ内の「tf_data_argument.py」を実行し画像データを拡大,縮小,回転等を行って増やします.
$ python3 tf_data_argument.py

 

・学習用プログラム「rp_tf_train_kinoko_takenoko.py」を開き,2種類の分類から6種類に対応する為, 38行目の「output = Dense(2,…)」の「2」を「6」に変更し「rp_ts_train_kinoko_takenoko2.py」として保存します.

 

・今回修正したプログラム「rp_tf_train_kinoko_takenoko2.py」を実行します.
$ python3 rp_tf_train_kiniko_takenoko2.py

 

・学習終了後「val_sparse_categorical_accuracy: 0.9092」とある程度学習が進んでいることを確認できたので,この学習済みモデルでテストを行います.
※思うように学習が進まない場合, 「rp_tf_train_kinoko_takenoko2.py」の28行目,32行目のDropoutの値を小さくする, コメントアウトする等で改善する場合があるのでお試しください.

 

・判別用プログラム「rp_tf_test_kinoko_takenoko.py」を開き44行目以降を下図赤枠の様に6種類の判別結果に対応するよう書き換え,「rp_tf_test_kinoko_takenoko2.py」として保存します.
※各番号との対応関係は,同フォルダ内の「label.txt」で確認できます.

 

・学習済モデルのテストを「-i」オプションで画像を指定し実行します. 以下の例の様に正しく判別できるか確認します.

$ python3 rp_tf_test_kinoko_takenoko2.py -i train/kinoko/arg_0001.jpg
$ python3 rp_tf_test_kinoko_takenoko2.py -i train/takenoko/arg_0001.jpg
$ python3 rp_tf_test_kinoko_takenoko2.py -i train/apollo/arg_0001.jpg
$ python3 rp_tf_test_kinoko_takenoko2.py -i train/pie/arg_0001.jpg
$ python3 rp_tf_test_kinoko_takenoko2.py -i train/nashi/arg_0001.jpg
$ python3 rp_tf_test_kinoko_takenoko2.py -i train/koala/arg_0001.jpg

 

・保存画像で正しく判別できる事が確認できたところで,カメラからの画像を判別できるか試します. 先に修正したプログラム「rp_tf_test_kinoko_takenoko2.py」を開き,66行以降を下図赤枠の様に6種類に対応する様に修正します. bとrの値は他と重複しない様に適宜変更します.

 

・6種類の判別に対応したプログラム「rp_tf_test_kinoko_takenoko2.py」を実行します. (今回の例ではRaspberry Pi Camera v2.1を接続しています)
$ python3 rp_tf_test_kinoko_takenoko2.py

 

●リアルタイム判別結果

・「きのこの山」・・・正しく判別できました.

 

・「たけのこの里」・・・正しく判別できました.

 

・「アポロチョコ」・・・正しく判別できました.

 

・「パイの実」・・・残念ながら正しく判別できませんでした.

 

・「なにもない」・・・正しく判別できました.

 

・「コアラのマーチ」・・・残念ながら正しく判別できませんでした.

 

残念ながら「パイの実」,「コアラのマーチ」の判別に成功しませんでした. 訓練用の写真の撮り方, 学習時のパラメータの調整等で改善するかもしれません.改めて挑戦したいと思います.