Edited at

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

More than 1 year has passed since last update.

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 を触ってみて、独自のモデルを作ってみていただきたいと思います。