Cloud AutoML Visionを使ってカレイの種類を識別してみた
本業や趣味でGCP, Actions on Google, Androidなどの技術を触っている fish です🐟 Cloud Auto ML Visionを使って
カレイの種類を識別してみたので、その結果を紹介したいと思います。
Cloud Auto ML Vision についてはこちらをご参照ください。
Cloud Auto ML Vision の事例はこちらをご参照ください。
カレイの識別について
お寿司や小料理屋などで身近なカレイですが、食用だけでも30種類以上、世界には100種類以上確認されています。慣れている人は簡単に見分けることができますが、特徴を知らないと見分けるのが難しい魚です。Cloud Auto ML Vision を使ったらもしかして見分けることができるのでは?と思いトライしてみました。
Cloud Vision API ではどこまで識別できるのか?
カレイやヒラメの総称であるFlatfishまで識別できました。
教師データは自分で釣って集める!
私はfishと呼ばれるほどの釣り好きです。せっかくなのでお店で買ったカレイではなく、実際に自分で釣ったカレイで教師データを集めることにしました。つまり最低2種類以上のカレイを釣る必要があります。
釣れたのはイシガレイとマコガレイ
イシガレイとマコガレイの2種類カレイを無事釣ることができました。教師データとしてそれぞれ1200枚ほど画像を撮りました。
イシガレイ
マコガレイ
Cloud Auto ML の使い方
Datasetの作成、画像のラベリング、学習、評価の具体的な方法についてはこちらをご参照ください。
GCSに画像をアップロード
画像を格納しているディレクトリから、全ての画像をgs://{PROJECT-ID}-vcm/{DATASET}/images/ の中にアップロードします。
$ gsutil cp -r ./ gs://{PROJECT-ID}-vcm/{DATASET}/images/
ラベリング
GCSのパスとラベル情報が入ったCSVファイルを作成し、画像を入れた同じバケットにアップロードします。
$ gsutil cp labels.csv gs://{PROJECT-ID}-vcm/{DATASET}/images/
labels.csv の例
・・・
gs://test-vcm/dataset/images/IMG_9997.JPG,stone_flounder
gs://test-vcm/dataset/images/IMG_9997.JPG,stone_flounder
gs://test-vcm/dataset/images/IMG_9997.JPG,stone_flounder
gs://test-vcm/dataset/images/IMG_9997.JPG,pleuronectes_yokohamae
gs://test-vcm/dataset/images/IMG_9997.JPG,pleuronectes_yokohamae
gs://test-vcm/dataset/images/IMG_9997.JPG,pleuronectes_yokohamae
・・・
イシガレイがstone_flounder、マコガレイがpleuronectes_yokohamaeという名前でラベル付けしました。準備ができたらAuto ML のコンソールから ADD IMAGESをクリックし、gs://{PROJECT-ID}-vcm/{DATASET}/images/labels.csv を指定し画像のインポートを開始します。
Train
画像のインポートが完了したら、TRAINをクリックし学習を開始します。学習が完了すると登録済のメールアドレスに完了の連絡がきます。
学習結果
Precision99.6%という結果になりました。
予測
(本当に当たのるか?)過去に釣ったマコガレイやイシガレイの画像でPREDICTしました。
見事にイシガレイとマコガレイの識別に成功しました!
カレイの裏側(白いほう)でも識別できたことは本当に驚きました。
識別に失敗した画像も多数あった
全ての画像が正しい識別ができたわけではなく、画像によってはどちらの判別もできなかったり(それぞれが50%前後)、マコガレイなのにイシガレイ99%と予測したものもありました。
これからの課題
- 識別するカレイの種類を増やす (2種類は少ないので)
- 画像にぼかしを入れたり、角度をつけるなどして教師データを増やす
- None_of_the_above(定義されたラベルのいずれとも一致しない画像)を入れる
- たくさん釣る!
(おまけ)この実験に使った時間
- 画像をGCSにアップロード: 約120分(画像の整理時間含む)
- Auto ML に画像をインポート: 約60分
- 学習時間: 約15分
- 釣りをしていた時間: 12時間