98
69

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

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

Last updated at Posted at 2018-08-09

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 という特別なラベルを付与することで [負例として学習できるようです] (https://cloud.google.com/vision/automl/docs/prepare#preparing_your_images)が、未検証です)

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

98
69
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
98
69

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?