もふもふ技術部

IT技術系mofmofメディア

画像分類API,Google Cloud AutoML Visionは本当に松坂桃李と佐藤健を分類出来るのか?

kamenashi

前回はGoogleのCloud AutoML Visionを使って、イチゴとリンゴを分類するモデルを構築した(精度は著しくポンコツだったけど)。

機械学習の知識なしでカスタムモデルが作れる画像分類API、Google Cloud AutoML Visionでリンゴとイチゴを分類してみる

なぜCloud VisionではなくAutoML Visionなのか?

そういえば根本的な話をしていなかった。

GoogleにはCloud Vision APIっていう画像分類APIがある。基本的な画像分類はそれで十分なんだけど、実際に画像分類をソリューションとして利用したいシーンって、一般的なものの分類だけでは実現できなかったりする。

例) きゅうり農家の事例

https://persol-tech-s.co.jp/i-engineer/product/cucumber

この例では元々きゅうりの等級の仕分けを人の手でやっていたのだけど、画像的に判別して等級を分類するAIを構築した例。

例えばこういうの実現しようと思った場合、Cloud Vision APIは一般的なものを識別することは出来るけど、「きゅうりの等級」という問題を学習したことはないので、あくまでもきゅうりは「きゅうり」としか認識できないわけ。

そこでAutoML Visionのようなカスタムデータセットを使って学習モデルを構築することで、ニッチな分類や、一般的ではない固有のものを分類することが出来るようになるのである。

レーニングする

こんな感じにサブディレクトリを切った構成でzipをアップロードすると、ディレクトリ名でラベリングされるらしいのでやってみる。

$ ikemen tree
.
├── takeru_sato
│   ├── 001.jpg
│   ├── 002.jpg
│   ├── 003.jpg
└── touki_matsuzaka
    ├── 001.jpg
    ├── 002.jpg
    └── 003.jpg

今回も一旦前処理は何もせずそのままikemen.zipにしてアップロード。

dataset

ちゃんとラベリングが済んだ状態でアップされてる!ステキ!!

レーニングも済ませちゃいます。

labeled

レーニングが終わったので評価(EVALUATE)を見てみます。Precision/Recallが表示されているけどAccuracy(正答率)がない。どうやって評価すればいいんだろう。

evaluate

分類してみる

比較的あたりそうな松坂桃李を分類。99.9%佐藤健という誤答。ちげーぞオラ。

touki1

ちょっとノイズのある松坂桃李は、88.9%佐藤健という誤答。

touki2

ノイズのある佐藤健を分類。91.5%松坂桃李という誤答、見事に逆を行くポンコツ具合。

takeru

データセットを集めている最中にゲシュタルト崩壊を起こして区別がつかなくなった亀梨和也をぶっこんでみる。100%佐藤健。分かるー区別つかないよね。

kamenashi

ほんの出来心でワイを分類してみる。99. 4%松坂桃李とのこと。まあ概ね正解と言って差し支えないだろう。

harapan

まとめ

前回データセットが少なかったので、1.5倍くらいにした。2クラスの分類だし、ある程度いけるかな?と思ったけどやはりポンコツだった。やっぱり前処理ちゃんとやらなきゃダメかね。人物ではなく周辺の背景画像とかにかなりひっぱられてる気がする。

次回はちゃんと前処理にチャレンジしてみよう。