MicrosoftのAIをカスタマイズしてハンバーガーとチーズバーガーを区別させよう:特集:AIをアプリに組み込もう(1/3 ページ)
Custom Vision Serviceを使うと、独自の画像認識機能をプログラマーが簡単に作成し、AIにハンバーガーの見分けが付くかを試してみよう。
AI(人工知能)、機械学習、深層学習が急速に進化発展を遂げつつある現在だが、これをプログラマーがゼロから学ぶのは大変なことだ。その一方で、最先端の研究者達による研究成果が、プログラマーが利用しやすいAPIという形で提供されている。そうしたサービスの代表例としては、MicrosoftのCognitive ServicesやGoogleの機械学習サービスなどが有名だ。
本稿では、そうしたサービスの中からMicrosoftが提供するCustom Vision Serviceを取り上げる。これは幾つかの画像をアップロードして、学習させることで、Microsoftが提供している画像認識技術をプログラマーが独自にカスタマイズできるというサービスだ。簡単にいえば、このサービスを利用して、マクドナルドのハンバーガーをアップロードし、学習させれば、ユーザーが「コレはナニ?」と聞くと「コレは○○バーガー」と教えてくれるような機能をいとも簡単に作成できる(かもしれない)ということだ。
本稿では、マクドナルドのハンバーガー/チーズバーガー/フィレオフィッシュ/チキンクリスプの画像を撮影、アップロードして、それを学習させてみた(ということで、判別できるのはこの4種類となる。ダブルチーズバーガーを認識させようとしても、いいところで「チーズバーガー」と答えられるのがせいぜいだ)。なぜこの4つにしたかというと、ハンバーガーとチーズバーガーはチーズの有無しか差異がないこと、フィレオフィッシュとチキンクリスプはハンバーグではなく、衣が付いた魚肉/鶏肉で色が似ていることから判別が難しいだろうという考えからだ。
Custom Vision Serviceでの学習
実際には今述べた4種のハンバーガーをそれぞれ2個ずつ購入し(ある程度の個体差があるだろう)、計8個の個体の画像を撮影した。それぞれの個体について包装紙でくるまれた状態、ハンバーガー本体、食べかけのところなど、10枚程度の画像を撮影している。ネットから画像を拾ってきてもよかったのだが、自分で購入したものを撮影する方がいろいろと面倒がないだろうということで、今回は画像を自分で撮影することにした(ファイルサイズを考慮して、実際には撮影した画像を縦横半分のサイズに縮小したものをアップロード)。
今回の記事で使用した食材
コーラを1つだけ注文したところで、マクドナルドのお姉さんの目が「だから太るんだよ!」というふうに変わったような気がするが、多分気のせいだろう。
画像の撮影に要した時間は約2時間。そのほとんどが、撮影の終わったハンバーガーを食べるためのインターバルだ。Custom Vision Serviceを使うと、認識の対象ごとにおおよそ30点ほどの画像で済ませられるのだが、ほんの30点前後の画像(×4)をそろえるだけでも、「1日(1食)でやっちまえ!」としたことで筆者のお腹はかなり大変な事態に陥ったので、データをそろえるには日数をかけた地道な方法か、クローリングなどの手法を取ることをお勧めする。
Custom Vision Serviceの概要と画像のアップロード、トレーニングの方法などについてはこちらを参照していただくとして、画像をアップロード、学習させた後の状態が以下だ。
上の画像から分かるように画像の総数は118、少ないものでも25枚の画像をアップロードしている。が、似たようなアングルからの写真が多いので、これで十分かは怪しいところではある。
ここでウィンドウ上部の[Quick Test]ボタンをクリックすれば、ローカルマシンの画像あるいはURLを指定して、学習結果のテストを行える。撮影した画像は全てアップロードしてしまったこともあり、以下に示す画像では、撮影した画像をトリミングしたものを学習結果の検証に利用している。
チーズバーガーの確率が65%とあり、これはボチボチといった結果でしかない。が、ここで検証に使用した画像ファイルを使ってさらに学習を進めることもできる。これにはウィンドウ上部で[PREDICTION]タブを選択する。
ここで画像をクリックすると、次のような画面が表示されるので、タグを指定してやればよい。
最後にウィンドウ上部の緑色のボタン([Train]ボタン)をクリックすれば、学習の次のイテレーションが実行される。このようにして、画像をアップロードしたり、テストしたりしながら、学習を進め、カスタマイズを行っていくことで推測の精度を向上させられる。
このようにしてカスタマイズした画像認識に使用するモデルはAPIとしても利用可能だ。画像を指定してプログラムからAPIを呼び出せば、その結果をJSON形式のデータで返してくれる。そこで次ページでは、サービスを利用する方法を紹介しよう。
Copyright© Digital Advantage Corp. All Rights Reserved.