「深層学習 Keras 学習済モデルで動物画像分類(転移学習)(2)」や 「AI課題3:植物写真分類(7)」などでは、 VGG16を利用して転移学習をしていましたが、オリジナルのモデルで新規に学習させてみました。
学習用のデータがまだまだ少ないですが、Keras の ImageDataGenerator を使って水増ししてみました。 ImageDataGeneratorは画像データを回転・拡大縮小などをすることによってデータを水増しして学習させる機能です。

 

(1)学習用プログラム

plant_gen.py (言語 Python、テキストファイル UTF-8)

元の画像サイズは 512 x 512 pixel で、 モデルは、Conv2D+MaxPooling2Dの4層ネットワークとしています。

ImageDataGenerator のパラメータは次の通りです。 回転の範囲はカメラの向きが逆になっても良いように±180 °としています。
##  回転範囲 -180 ° 〜 +180 °
##  シフト 横 -0.2〜+0.2、縦 -0.2〜+0.2
##  拡大 0.2 (0.8〜1.2)
##  せん断(shear) 0.1

(2)学習

学習用テストデータ:plant_gen_data.zip

学習には1週間程度かかりました。

学習済みモデル: plant_gen_model.zip

ログ: plant_gen_result.txt

一部抜粋
—– sample/AJISAI(アジサイ)—–
アジサイ  ○  0.001
アジサイ  ○  1.000
アジサイ  ○  0.031
アジサイ  ○  0.382
アジサイ  ○  0.382
アジサイ  ○  0.000
アジサイ  ○  0.031
アジサイ  ○  0.014
アジサイ  ○  0.000
アジサイ  ○  0.000
正解=10 ファイル総数=10 正答率=100.0%
—– sample/BARA(バラ)—–
バラ  ○  0.000
バラ  ○  0.528
バラ  ○  0.001
サルスベリ  ×  0.000
バラ  ○  0.001
バラ  ○  0.001
バラ  ○  0.971
サルスベリ  ×  0.041
サルスベリ  ×  0.000
バラ  ○  0.001
正解=7 ファイル総数=10 正答率= 70.0%
(中略)
——————–
正解=220 ファイル総数=278 正答率= 79.1%
End.

個別の確信度は低めで全体の正答率が79%程度で少し低いですが、
まあまあな水準になっています。

 

(3)動作確認

「AI課題3:植物写真分類(6)」「AI課題3:植物写真分類(7)」

に新しモデルを組み込んで動作確認してみました。確信度の値が小さいので最少確信度を変更しています。(植物名については前同様 plant05_names.py をインポート)

動画用:
plant_movie_gen.py

結果

movie_sakuar01-1movie_sakuar02-1

サクラの花がわからないそうですが、幹で「たぶんサクラ」となりました。

movie_satsuki01-1movie_tsutsuji01-1
サツキ・ツツジはなんとかわかりました。

Webカメラ用:
plant_camera_gen.py

この頃はコロナ禍や緊急事態宣言なので野外作業がやりにくいので写真をカメラで映してテストしてみました。

結果

camera_ajisai02-1camera_ajisai01

camera_dokudami01-1

アジサイやドクダミなどはほぼ正解でした。

camera_bara_01_error-1
この写真の場合はバラの葉がシロツメグサになってしましました。
写真の写り具合が悪く小葉が3枚なので間違えたのではないかと考えられます。
バラの場合は茎の棘が特徴ですので茎や全体の形態を学習させると良いのではないかと思います。
(2021/8/16 S.Onda)