(「 AI課題3:植物写真分類(6)」の続きです。)
今度は、OpenCVのカメラ制御機能を利用して、植物をカメラ撮影して種類を判定するプログラムを作ってみました。
プログラムの作りは基本的には前回と同じですが、動画ファイルではなくカメラからの画像を入力としています。
(1)プログラム(言語 Python、テキストファイル UTF-8)
起動するとカメラからの画像をウィンドウを表示、Enterキーを押すと推定を開始します。
植物名については「植物写真分類(5)」の plant05_names.py をインポートして利用、対象となるのは plant05_names.py で定義された植物のみです。
ホルダ data/plantcamera/ にある学習済みモデルのウェイト(plant05_weights.h5)を読み込み実行します (plant05_weights.h5は「植物写真分類(5)」で作成したものを流用します)。
カメラからのフレーム(画像)を一定数まとめて推定を行い、基準値以上の確信度の画像が一定数以上あれば画面に結果を表示するロジックになっています。
プログラム内でカメラから取り込んだフレーム(画像)を TensorFlow, VGG16 用に変換してパラメータとして渡しています。(一応カメラは複数台から選択するロジックを入れていますが未だ動作確認していません)。
参考のため、実行中のそれぞれのフレームの確信度等はコマンドプロンプト画面に表示しています。
(2)動作確認
このごろはコロナ禍の影響でフィールドワークがやりにくくなっているので、とりあえす自室のパソコンで動画をカメラで撮影してテストしてみました。
(ハード&ソフトのスペックは前回「植物写真分類(6)」の通りです。Webカメラは Buffalo BSW13K05Hを使用しました。)
テストした範囲では一応それなりに結果がでているようです。
そのうち機会があればノートパソコンで野外でテストしてみようと思います。
(2021/7/23 S.Onda)