skip to Main Content
AutoML Vision β版の真の実力を本気で調査してみた

こんにちは,Hacarusインターン生の天野と申します.仙台で大学生をやっております.さて,2018年7月25日に,Google Cloud Platformから画像認識機械学習サービス「AutoML Visionβ版」がリリースされました.このAutoMLですが,一体全体どれほどの識別能力を備えたモデルを学習できるのか?どんな点が「おいしい」のか? 画像認識に興味のある方なら必ず気になるであろうポイントを調査してみました.

はじめに

ご存知の通り,画像認識は言ってしまえばパターン認識の1つです.画像の特徴を学習させることにより,未知の画像がどのような特徴を有しているかを基準として, 確率的に画像をラベリングすることが出来ます.近年は,Deep Learningベースの モデルが驚異的な認識能力を示しており,AIブーム再到来の火付け役となってくれました.なんだか,画像認識はとってもうまい話に聞こえてきますね.しかし,昔 からうまい話には裏があるわけです.その裏話とは…

  • その1 機械学習は高度な数学知識が必要
  • その2 勿論プログラミングスキルが必要
  • その3 学習するために膨大なデータが必要
  • その4 ハイスペックなマシンがないと学習に時間がかかる

そう,お金と勉強時間がすごく必要な訳です.しかし,AutoML Visionはとっても 簡単に画像認識が出来てしまうという噂が流れており…これは確かめるしかないなと思った次第です.ノーベル医学・生理学賞を受賞された本庶佑先生も仰られていた通り,気になった事はとことん調べてやるという所存です.それでは,上記 に挙げた4つの点をAutoML Visionは克服できたのか? 真相は以下にて!!

1. Cloud Visionの概要

タイトルにもあるAutoML Visionは,Googleが提供しているCloud Visionというサービスで使える機能の一つです.Cloud VisionにはCloud Vision API(以下, API)AutoML Vision(以下,AutoML)が実装されています.APIでは既に学習され たモデルを用いて,簡単に画像認識が可能です.AutoMLではカスタムモデルを構築でき,モデルの性能を簡単に検証できます.

1.1 まずはAPIでこて調べ

まずは,APIを用いて色々な画像を識別してみました.画像をページ内の指定のBoxにDrag & Dropするだけで,いとも簡単に識別してくれるのでサクサク作業できます.もちろん,Google検索で拾った画像はNGですよ.Google画像検索でヒットする時点で,Googleによるラベリングがされており,APIのモデル構築で使用されている可能性があるからです.

APIがやってくれることは,主にラベリング(推定確率あり)や表情の検出,テキストの抽出などです.上の例は犬ですが,犬はちょっと簡単過ぎましたかね.次は難度 を上げて,御影石(上)と白色ノイズ(下)で試してみました.

 

 

ノイズに対する判定が御影石(Granite)52%,Patern69%.一方,御影石に対する判定が御影石(Granite)79%, Pattern55%でした.うーむ,thresholdの設定によっては,普通に識別してくれそうです.恐れ入りました.既存のモデルでも識別能力は相当なもののようです.

1.2 AutoMLによるカスタムモデリング

APIのような学習済のモデルを用いた画像認識サービスというのは,従来からあり ました.しかし,AutoMLは自分でモデルを作成できてしまうんですね♪ これは,なかなか魅力的なポイントでしょう!!ということで,AutoMLの使用法紹介を含めて,その能力を検証してみたいと思います.

1.2.1 データセットの準備

「はじめに」でも述べたように,機械学習ではデータを用意する必要があります. 公式ドキュメントによれば,ラベル毎に1000枚程度の画像を推奨しており,ラベル毎の最小数は10枚,高度なモデル作成では50枚を推奨していますが,何枚が良いのかは学習したい画像と目的によるでしょう.

1.2.2 ラベルの割り当て

AutoMLでは,画像の全てにラベルを割り当てる必要があります.これだけ聞くと面倒そうですが,心配いりません.AutoMLにデータセットをアップロードする方法として,ローカルディスク上の画像ファイルを直接アップする方法と,CSVファイルをアップする方法があります.前者では,フォルダ名がラベルとして使用されるので,ラベルを名前としたフォルダにあらかじめ画像をまとめておけば簡単にラ ベリングが可能です.後者では,画像URIを1列目,割り当てたいラベルを2列目に格納したCSVファイルを作成すればOKです.今回の調査では,Scrapyで画像URl 収集を行ったので,CSV形式でアップしました.いずれの方法であっても,便利なことは明白ですよねー.アップされたデータセットは,コンソール上でラベルを再確認できます.コンソール上でラベリングの微調整を簡単に行える点も素晴らしい!

 

1.2.3 モデルの作成

それではいよいよ・・・,トレーニング開始です!!(ボタン押すだけ)

あれっ,機械学習ってこんなに簡単に出来たっけ?って本気で思ってしまいました. このAutoMLですが,調整するパラメータは学習時間だけなんです.学習時間が長 いほどモデルの精度は高まります.1時間の学習時間までなら,月に10回まで無料 で試すことができます.また,AutoMLでは,データセットの80%をトレーニングデータ,10%をバリデーションデータ,10%をテストデータに自動で割り当ててくれます.もちろん,比率をカスタマイズすることが可能です.

1.2.4 訓練結果の見方

 

MNISTを用いて訓練したモデルの評価です.0~9の数字毎に4000枚程度のデータを用意して1時間訓練させたところ,Average precisionが99.5%という驚異的な 数値!! NNやCNNを用いた場合に比べて同程度以上の精度です.

 

Confusion matrixも確認することが出来ます.モデルの評価に関しては,基本的なことを全てやってくれますし,評価結果も見易くまとめてくれます.うーん,ここまで至れり尽くせりだと,自分でモデルを作ったりするのが億劫になってしまいそうですね….

2もう手加減しない ヒト vs AutoMLを試してみた

ドキュメントによれば,人が1~2秒程度で見分けられない画像をモデルに分類さ せることは出来ないと書かれています.そこで,人が1~2秒程度でギリギリ見分けられる画像の分類をさせてみようという魂胆です.意地が悪いとか思わないで下さいね.AutoMLの実力は,そこら辺の物差しでは測れないのです.

2.1 天津飯 or かに玉

天津飯,かに玉と言えば,中華料理の代表格ですよね.その違い,皆さんはご存知でしょうか? 実は,天津飯って,かに玉の派生料理なんです!! かに玉の玉子の部分をご飯にかけて,とろみのあるタレをかけたものが天津飯です.

写真:上が天津飯,下がかに玉(正式には芙蓉蛋「ふようたん) (Wikipedia より)

それでは,さっそく結果を見ていきましょう!!  データは,かに玉が1400枚程度, 天津飯が1200枚程度,学習時間は1時間です.

Average Precisionは77.9%ですか…やはり難しかったようですね.原因につ いてですが,天津飯とかに玉の定義について,料理をされた方の考え方が異なって いたため,両者の境界が曖昧になっている点にある思われます.言い換えれば,データセットにアレンジ料理が多かったのです… データセットに関しては,本人様 が宣言された定義に従ってラベリングを行いました.しかし,いざデータセットを見てみると,人間でも「これどっちなんだ?」っていう感想を抱いてしまったので, 今回の結果はある意味妥当なのかもしれません.料理の画像認識の難しさは,作る人間の想像力の豊かさによるものなのでしょうね.

2.2 ヤマメ,アマゴ,イワナ

ヤマメ,アマゴ,イワナはいずれもサケの仲間です.写真を見る限りでは,その違いはわずかですよね.アマゴ,イワナには濃いオレンジの斑点が見られますが, ヤマメには見られません.イワナ,アマゴの違いですが,写真をよく見て頂くとイワナの背には白い斑点が見られます.いずれにせよ,熟練した人でなければ1~2秒 で見分けられないでしょう.

 

写真:上がイワナ,真ん中がヤマメ,下がアマゴ (Wikipedia より)

それでは,さっそく結果を見ていきましょう!! データは,アマゴが600枚程度, イワナが400枚程度,ヤマメが700枚程度で,学習時間は1時間です.

 

 

ふむふむ,Average Precisionは72.6%です.やはり,なかなか難しかったようですね.データセットには様々なアングルの写真が混在していたので,理想的にはアングルについても偏りなくデータが欲しいところです.学習時間も24時間にすれば, もっと高精度になってくれると思いますが.

 

Confusion matrixを見る限り,ヤマメ,アマゴ違いが多いようですね.ヤマメとア マゴには特徴的な縞模様(パーマーク)があり,その違いは背中にあるオレンジ色の点 のみです.写真の光量やアングルによっては,オレンジ色の点が黒くなってしまっていたのが主な原因でしょう.また,これらの魚は焼いて美味しく頂けるということで,次のようなこんがり焼けた画像もヒットしてしまう訳です.

引用元はこちら

やはりデータセットの厳選に注意を払う必要がありそうですね.ということで,厳選してみました!!データは,アマゴが80枚程度,イワナが140枚程度,ヤマメが150枚程度です.ア ングルは主に側面からのものを採用し,釣りたてで活きのいいものに絞りました.

 

Average Precisionは88.2%で,そんなに悪くないですよね.やはり,適切な画像を用いれば,格段に良いモデルになります.もちろん,テストデータについても適切なものばかりですが,適切か否かの条件に関しては,実用面で考えてもそこまで 高いハードルではないでしょう.

2.2.3 針葉樹,広葉樹

最後は,針葉樹,広葉樹です.

 

 

写真:上が針葉樹,下が広葉樹

 

こちらの違いは皆さんもご存知だと思います.針葉樹は葉が細長く,マツやスギが代表格です.一方,広葉樹は葉が広く平たいのが 特徴で,サクラなどがあります.今回は,広葉樹200枚程度,針葉樹250枚程度をデータセットとしました.学習時間は30分です.葉の形状が大きな特徴量ですので, 数枚の針葉樹,広葉樹の画像からパッチを切り出してデータセットとしました.さっ そく,結果を見てみましょう.

 

 

Average Precisionは96.6%で文句ない結果です.木の判別というのは,実用面で 考えるなら植生調査などへの応用です.植生が激しく入り乱れているということもないでしょうから,ある範囲を収めた画像から広葉樹,針葉樹を区別するのは造作もないでしょう.

3 AutoMLは機械学習の裏話を克服できたのか?

少し意地悪をして,天津飯vsかに玉,ヤマメvsアマゴvsイワナ,針葉樹vs広葉樹 を試してみましたが,総評すると「結構いい線いってる」と言ったところでしょうか.とりわけ,魚と木の識別に関しては素晴らしい結果だと思います.天津飯やか に玉と違って,生物種はその姿形があまり変わりませんから,定義がしっかりとし ています.こういう類の画像に関しては,AutoMLは強いのでしょう.逆に,天津 飯やかに玉といった,人間の作為によって姿形の定義が揺らぐようなジャンルに対しては弱いということも分かりました(当然ですが…).よって,人間 vs AutoMLは引き分けが良いところでしょう.人間の創造性が AutoMLの行く手を阻みました.続いて,「はじめに」でも述べた機械学習の欠点をAutoMLは克服できたのか? について迫っていきましょう.

その1 機械学習は高度な数学知識が必要

今回の検証を読んで頂いた皆様,この記事に数式って出て来ましたでしょうか? もちろん,否です.APIにしてもAutoMLにしても,中身で何が起こっているかなん て知らなくても出来てしまうのです!! 現時点での応用数学における最高到達点とも言える機械学習を数学なしで出来てしまうなんて,なんて恐ろしい…

その2 勿論プログラミングスキルが必要

プログラミングスキル要りません…..と言い切りたいところですが,データセットの収集・整理の際には多少必要かもしれません.しかし,機械学習に関しては一切プログラミング不要です.普通,機械学習のモデルを1から作るとなると相当な時間プログラミングやら手計算やらが必要です.その苦労を考えれば,プログ ラミング不要と言い切っても良いかもしれません.

その3 学習するために膨大なデータが必要

今回の検証の範囲では,ラベル毎に100枚程度でも十分な識別能力を発揮してくれました.しかも,あらかじめ画像サイズを調整しなくて良いというのは,とっても魅力的な点でした.しかし,100枚あれば十分という解釈は危険だと思います.目的によってはもっと画像が必要でしょうし,ヤマメ,イワナ,アマゴの例でもお 見せしたように,データの厳選というのが必要な場合もあります.そうなると,デー タセットの調整に時間をとられる可能性はあるでしょうね.

その4 ハイスペックなマシンがないと学習に時間がかかる

API, AutoMLは,ハイスペックなマシンを自分で所有している必要はありません..計算は外部でやってくれますから,あとはボタンを押すだけです.

その1,2,4に関してはAutoMLは完全に克服していますね.その3に関しても, 画像のハンドリングにかかる時間はかなり短縮されるでしょう.コンソール上で簡単にラベリングの微調整も出来ますから,作業自体もスムーズに進みそうです.また,今回の検証では学習時間が1時間でしたが,これも驚異的でしょう.こんなに短時間で高精度モデルの試作が出来てしまうので,データセットとモデルの兼ね合いなどを試行錯誤する上で,AutoMLは大変便利だと思います.さらに,そのお値段についても1時間学習までなら月10回まで無料というのは,かなり良心的ですね!!

4 AutoML Vision の使い所と期待したい展開

以上で,API, AutoMLの検証は終了です!! いかがだったでしょうか.

APIは AutoMLのユーザー拡大を狙ったお試し要素を強く含んでいるように思えます.そ の点で,デモとしてはかなり優秀だと思います.肝心のAutoMLについても,使い 勝手に関して文句なしです.短時間で高精度のモデルを作成できる点においても, 好感が持てますね.とりあえず機械学習で画像認識をやってみたい方,すでに取り 組んでおられる方でモデルとデータセットの試行錯誤をしたい方,アプリケーショ ンなどへ組み込んで応用的に利用したい方,ノウハウやAI人材は少ないけど,アイディアやプラニングが固まっている企業,様々な事情や状況を考慮してもAutoML は心強い助けとなってくれそうです.

個人的な意見ですが,AutoMLの強みは,知識は無くてもアイディアさえあれば,手軽に画像認識を使ったサービスを提供できるという点ではないでしょうか?  一方で,ユーザーが増えるにつれて,AutoMLに求められるサービスの幅広さ, 奥深さも拡大していくことは間違いないですよね.現状,AutoMLのモデルはブラッ クボックスですから,細部までパラメータを調整することが出来ません.裏では転移学習が働いているようですが,画像とラベルの分布が大きく異なると,学習が難しくなるでしょうし,そうなると,少ないデータで精度の高いモデルを構築するのは至難でしょう.また,未知のデータに対する識別に関しては,天津飯とかに玉の 識別例でその限界の一端を垣間見たように思えます.

この辺りは,ユーザーがどの程度の識別を望んでいるかにもよるでしょうが,教師なし学習に近いユーザーの要請に応えられるかどうかも,今後のAutoMLに期待したい部分です.さらに,画像から動画へのサービス拡大が期待されますね.既に,Google Video Intelligence APIという動画内のオブジェクトにラベリングしてくれるサービ スが存在するようなので,こちらは割と近いうちに凄いサービスが出てきそうです..動画内の物体検知や動画⇨言語への変換,もしくはその逆などが手軽に行えるサー ビスが提供されれば,素晴らしい世の中になりそうです♪


Hacarusでは、モバイルや組み込み、FPGA といった環境で機械学習を動かすことに 興味があるエンジニアの方や、データサイエンティストとして機械学習の研究開発を行いたい!という方を募集しています!興味がある方は、採用ページまで!

注:本調査では検証目的において、自分たちで撮影した写真およびインターネットから収集した画像データを用いて AutoML の識別モデルを作成しました。本エントリ内で紹介している外部の画像は収集元へのリンクを付記しております。