AutoML Vision を試す

AutoML Vision を試してみた。

AutoML Vision とは?

Googleの提供している、機械学習を利用した画像認識がブラウザ上のUIで非常に簡単に行えるアプリケーション。

なおこれとは別にCloud Vision APIというAPIもある。こちらは既存のモデルを利用してラベル付けなどを行う。
AutoML Visionでは、自前でモデルを作ることが前提となる。

ただモデルを作ると言っても、手順は非常にシンプル。

1.Google Cloud Strageに画像をアップロード。
2.画像とラベルを紐付けしたCSVを作成してアップロード
3.CSVを利用してAutoML Visionにデータセットを学習させる

これだけ。

今回はウェットスーツのフルスーツ・スプリングを見分ける事ができるのか、テストしてみることにする。

事前準備

まずは以下のクイックスタートで、パケットの用意やアカウント課金の設定などをやっておくと楽。

※ クイックスタート https://cloud.google.com/vision/automl/docs/quickstart?hl=ja

バケット作成

Cloud Storage バケットの作成

ブラウザで利用できるシェルウィンドウ、Cloud shellを使う。

# これで、以降の ${PROJECT} にはプロジェクト名が入る。
PROJECT=$(gcloud config get-value project) && BUCKET="${PROJECT}-vcm"

# バケットの作成
gsutil mb -p ${PROJECT} -c regional -l us-central1 gs://${BUCKET}

アカウント権限を追加。

AutoML Visionサービスアカウントから、Google Cloudプロジェクトのリソースへアクセス出来るように。

PROJECT=$(gcloud config get-value project)
gcloud projects add-iam-policy-binding $PROJECT \
   --member="serviceAccount:custom-vision@appspot.gserviceaccount.com" \
   --role="roles/ml.admin"
gcloud projects add-iam-policy-binding $PROJECT \
   --member="serviceAccount:custom-vision@appspot.gserviceaccount.com" \
   --role="roles/storage.admin"

画像の用意

公開cloud strageからサンプルのデータセットをコピーする場合は、以下。

gsutil -m cp -R gs://cloud-ml-data/img/flower_photos/ gs://${BUCKET}/img/

または自前で画像を用意する。 その場合には一気にgoogle画像検索からダウンロード出来る、便利なスプリクトを発見。

https://github.com/hardikvasa/google-images-download

使用例

googleimagesdownload -k "wetsuits spring" -la English -l 20 -f "jpg" -s medium -t clipart

画像を利用したら、Google Cloud Platform のStrageから、作成したバケット内の任意のディレクトリへアップロードする。

ちなみに画像は一つのラベルに付き1000枚が推奨とされている。

参考:オリジナルデータセットの作り方

ガイドライン https://cloud.google.com/vision/automl/docs/beginners-guide#data_preparation

トレーニングデータの準備 https://cloud.google.com/vision/automl/docs/prepare#preparing_your_images

CSVの作成

サンプルデータセットでは画像の場所・ラベルを含むCSVが含まれているので、それを利用できる。
この場合、自分のバケット内のファイルを指すようにCSVを変更する。

gsutil cat gs://${BUCKET}/img/flower_photos/all_data.csv | sed "s:cloud-ml-data:${BUCKET}:" > all_data.csv

そしてバケットにCSVをコピー。

gsutil cp all_data.csv gs://${BUCKET}/csv/

自前で画像を用意する場合は、画像パスを以下の様に。

gs://your_bucket_vcm/img/image_cat/xx.jpg

そして2列めには、ラベルを記入する。
出力時のエンコードはUTF-8。

データ・セットの作成

AutoML Vision へ遷移して、 http://beta-dot-custom-vision.appspot.com/?hl=ja

「+ New Dataset」を選択

名前は任意

CSVの場所を、gs://your-project-123-vcm/csv/all_data.csv とし、Create Datasetする。

完了すると、管理画面的なものの中にデータセットが組み込まれていることが確認できるはず。

モデルのトレーニング

Train タブで、トレーニングが開始される。

完了したら、Evaluateタブを見ることで、スコア詳細を確認出来る。

実際に利用する

まずモデルに利用した画像を確認してみる。 今回は以下の様にリストで並ぶ。

そして判定するときは、Predict タブで画像をアップロードする。

複数アップロードも可能なのでフルスーツとスプリングを着ている少年を二枚アップしてみた。

期待通りの結果!!

そして次は、サーフボードやビーチといったほかのオブジェクトも含めてみる。

こっちは微妙な結果。
やはりこういうのはラベル分類ではなく、オブジェクトの検出に当たるのだろう。

なおこの結果をjsonで得ることも可能みたい。

https://cloud.google.com/vision/automl/docs/query?hl=ja

その場合は、POSTを投げれば良いみたい。

https://cloud.google.com/vision/automl/docs/using-the-api?hl=ja#predict

やってみた所感

ベータ版とはいえ、単純な分類は非常に簡単!
ただ実際には1枚の写真から求めるオブジェクトを抜き出すような事が求められるケースが多いと思うので、
分類のみだと使い所はかぎられそう。

AutoML Vision にはオブジェクト検出のメニューもあるので、次はそっちを触って見るつもり。

しかし、機械学習導入の敷居が次第に下がっている様に感じる。
引き続き、少しづつキャッチアップしていきたいと思う。