機械学習
MachineLearning
画像認識
AutoML

Google AutoML Vision の画像認識をクルマSNSアプリに組み込んだ

Google Cloud Platform が提供する、画像認識の機械学習サービス AutoML Vision のβ版が、
2018/07/25 にリリースされました。

このたび、この AutoML Vision を活用した機能を、
CARTUNE という、クルマ好きが集うSNSアプリ ( Android / iOS ) に実戦投入しました。

この記事では、その事例をご紹介します。

完成した機能

クルマSNSアプリ 「CARTUNE」 にユーザーが投稿したクルマの画像を、AutoML Vision が自動で分類 し、あらゆるクルマの投稿をカタログ的に見られようにしました。

下記はその一例です。
眺めているだけでも、非常に楽しいものになっております。

フロント.jpg リア.jpg

痛車.jpg メーター.jpg

海.jpg 大黒.jpg

これらの画像は全て、ユーザーがタグ付けしたものではなく、AutoML Vision が画像認識を行い、分類しています。

分類としては、

  • フロント、サイド、リアといった、写真内のクルマのアングル
  • メーター、ステアリングなど、インテリアとして写っているもの
  • 痛車、ガルウィングといった、クルマの外観
  • 大黒PA(クルマ好きが集う聖地パーキングエリア)の写真や、海が一緒に写っている写真、といったロケーション

などなどが可能となっています。

これ以外にも、合わせて計約30のラベルをオリジナルで用意しており、
いずれも非常に高い精度で(単一の画像分類モデルで)分類することができました。

AutoML Vision の概要とその能力

概要

AutoML Vision とは、 Google Cloud Platform が提供する、画像認識の機械学習サービスです。
2018年初めに、ラーメン二郎の画像から店舗を特定する事例で話題になりました。
2018/07/25 にβ版がリリースされております。

AutoML Vision は、
 オリジナルの画像分類モデルを
 高度なプログラミング手法を必要とせず
 非常に高い精度で
トレーニングさせられることが特徴です。

対比として例えば、2016年に、同じく Google Cloud Platform からリリースされた Vison API は、非常に強力な画像認識サービスであるものの、
「ヨット」や「ライオン」、「エッフェル塔」などといった、あくまで Vison API 側が用意したカテゴリを検出することに限られました。(とはいえ膨大な量のカテゴリですが)

対して AutoML Vision は、自前の画像分類モデルを作成することができるため、
本記事の CARTUNE の事例のような、「痛車」「大黒PA」を検出したい、など、オリジナルの学習モデルを作成したい用途に適しています。

精度

下記画像は、本事例でトレーニングした画像分類モデルの、精度テスト結果(AutoML Vision コンソールのキャプチャ)です。

スクリーンショット 2018-08-08 16.01.48.jpg

約4000枚の画像に約30のラベルづけをしてトレーニングを行い、
 Precision(適合率) 89.8%
 Recall(再現率) 83.0%
を出すことができました。

今回準備した学習データセットは、1ラベル平均で100枚強となります。
一般的な画像認識トレーニングに用いる学習量としては若干物足りない(推奨は1ラベル1,000枚以上)ながらも、
今回の使用目的には十分耐えうる精度を出すことができています。
(実プロダクトでは、score のしきい値を厳しめにすることで、さらに Precision を高くしています)

AutoML Vision の使い方

詳細な利用方法は、 公式のドキュメント をご参照ください。
ここではざっくり学習の流れと、一通り AutoML Vision を利用してみて気づいた注意点を記載します。

トレーニング画像の準備

トレーニング画像を Google Cloud Storage にアップロードし、
アップロードしたそれぞれの画像URIがどの分類ラベルに属するかを示す、CSVを作成します。
トレーニング画像が大量になる場合は、スプレッドシートなどで対応表を作成し、マクロでCSVを作成することになるでしょう。

dataset_spread.jpg

あとは、このCSVをインポート画面からインポートするだけです。
4,000枚のトレーニング画像であれば、約1時間ほどでインポートが完了します。

import.jpg

また、試しに少量画像で AutoML Vision を試したいだけであれば、
コンソールのUI上で画像をインポートし、ラベル付けしていくこともできます。

トレーニング実行

トレーニング画像のインポートが終わると、下記画像のように、コンソール上で各画像とラベル付けを確認することができます。

images.jpg

あとはトレーニング実行ボタンを押すだけです。
AutoML Vision のトレーニングにはパラメータは殆ど必要なく、学習時間の設定のみです。
学習時間が長いほど精度は良くなりますが、料金が発生します

しかし、1時間(※正確には 1 compute hour と呼ばれる内部時間)のトレーニングであれば、無料で月に10回まで可能です。
train.jpg
試しにトレーニングする場合は、この無料枠を積極的に使っていきましょう。

与えたデータセットは、トレーニングの際に自動で

に分類されます。
この割合はカスタムで変更することも可能ですし、画像ごとに個別に割り当てることも可能です。

評価

トレーニングが完了すると、コンソール上で評価を確認することができます。

スクリーンショット 2018-08-08 16.01.48.jpg

数々の評価軸 で結果を確認することができるので、ガイドラインに沿って データセットを改善し、再トレーニングを行って精度を高めていきましょう。

また、この時点で実データをモデルに適用することができるので、手元に別途テストデータを用意して、評価してみるのも良いと思います。

eval.jpg

注意点

学習画像の量は目的に応じて設定する

AutoML Vision で、1ラベルあたりの推奨される学習画像枚数は、1,000枚です。
さらに、全ラベルで同等の量の学習データを準備することが推奨されているため、例えば30ラベルを分類したい場合、推奨に従えば30,000枚の学習データを準備する必要があります。

しかしながら、推奨枚数ほどの大量データを準備できない事例も多々あるかと思います。
しかも、量を確保しやすいラベル・確保しにくいラベル、といった偏りが出ることは、実例で多々あることかと思います。

本事例では、先述の通り、1ラベル平均で100枚強 × 30ラベル で計4,000枚 を準備し、
Precision, Recall ともに80〜90%の精度を実現することが出来ました。
勿論、本アプリでは今後、さらに精度を上げていきますが、
本事例を参考にして、画像認識の目的とコストに合わせて、学習画像の量を設定いただければと思います。

学習画像のラベルはもれなく設定する

ドキュメントに記載の通り、AutoML Vision では、全学習画像にラベルを設定する必要があります。
「ラベルなし」の学習データはトレーニングに影響を与えない(負例として学習されることはない)ので、もれなくラベルを設定するようにしましょう。
(※ None_of_the_above という特別なラベルを付与することで 負例として学習できるようですが、未検証です)

また、AutoML Vision では、multi-label 分類(1データに複数ラベルづけされる分類)も可能です。
multi-label 分類する場合は、ラベルづけ漏れのないように、全ラベル×全画像 を横断的にチェックするようにしてください。
例えば本事例で、「痛車」の学習画像のひとつとして、下記画像を準備しました。

痛車_学習.jpeg

これに「痛車」のラベルは付与したものの、「フロント」(正面向きのクルマ)のラベルの付与が漏れてしまっていたため、「フロント」の学習精度が悪くなる、という事例がありました。

全ラベルを横断的にチェックするよう、注意してください。

トレーニング時間による変化

先述の通り、AutoML Vision では、トレーニング時に学習時間を設定することができます。
先述の本事例の学習モデルは、24時間の学習を行ったものです。

スクリーンショット 2018-08-08 16.01.48.jpg

同じデータセットで、無料枠の、1時間 (1 compute hour) の学習 (無料は月10回まで) を行うと、下記の精度となりましたので、ご参考にしてください。
この1時間の学習の精度でも、十分実用に耐えられる事例もあるかと思います。

1hour.jpg

まとめ

このたび、AutoML Vision を活用した機能を、クルマ好きが集うSNSアプリ「CARTUNE」に組み込みました。

AutoML Vision は、「高度なプログラミング手法を必要とせず画像認識を可能とする」ことをうたっています。
まさにその通りで、データセットとそのラベリングを適切に行うだけで、高精度の画像認識モデルを作成することができました。
この「適切に行う」というところもある程度の職人技が必要になるかと思いますが、それも 公式のガイドライン にて tips が公開されていますので、これから利用される場合は、まずドキュメントをしっかり読むことをおすすめします。

この AutoML Vision の登場により、機械学習(画像認識)の用途がさらに広まっていくのではと感じます。
今まで機械学習(画像認識)を敬遠していた方も、ぜひ AutoML Vision を触ってみて、独自のモデルを作ってみていただきたいと思います。