便利すぎるCustom Vision!!
2019-04-27
azblob://2022/11/11/eyecatch/2019-04-27-new-hire-training-custom-vision-arts-000.png

はじめに

約1か月の研修の中で、多くのサービス、技術に触れてきました。その中で私が紹介したいものは、「Custom Vision」です。このサービスはAzureのCognitive Serviceの一つです。私がこのサービスを利用するのはこの研修が初めてではありません。学生時代にもこのサービスを利用してよく遊んでいました。

このCustom Visionを利用してきて、とても便利であるということを感じたので、研修内容とともにCustom Visionの素晴らしさを紹介していきたいと思います。

研修で作成したもの

学習済みの画像

簡単に完成したものを表すと、「絵画を誰が書いたものかを予測する」ものです。

写真にあるように、ピカソ、ポロック、レンブラントの三人の画家の絵画をそれぞれ学習させました。ピカソの絵画が特徴的なのが分かります。

このチュートリアルは下記のサイトで紹介されているので、詳しい操作の説明は割愛させていただきます。

https://github.com/Microsoft/computerscience/blob/master/Labs/AI%20and%20Machine%20Learning/Custom%20Vision%20Service/Custom%20Vision%20Service.md

とてもかみ砕いて作成手順を説明すると、

  • 学習させたい画像をそれぞれ5枚以上用意します。
  • 用意した画像をCustom Visionにアップロードし、その画像を分類するタグをつけます。
  • 学習ボタンを押します。

この3つで、画像学習が行えてしまいます。とても楽ですね。学生時代、画像学習についての研究を行っていた身としては、環境構築や学習方法などで悩んでいた時間を返してほしいくらいです。

画像の学習

そして、実際に学習したものをチェックしていきます。Quick Testという形で学習に使用していない画像を投げて、分類させたタグ毎にどの作者の絵画に近いかを予想してくれます。

研修ではここまでを作成しました。人によっては、似ている芸能人を見分けるものを作成していたり、ビールの銘柄を分類していたりと、様々なものを対象に学習させていました。

学生時代に作成したもの

研修では、Quick Testでの動作確認で終わっていましたが、学生時代に作成したものでは、このCustom VisionをAPIとして利用し、ツイッターで画像つけて投稿するとその画像に対して認識を行ってくれるシステムに組み込みました。

この、APIとして利用することもとても簡単に実現できます。それは、PythonやC#をはじめとした様々な言語におけるSDKが用意されているためです。

硬貨が写った画像をツイート

私が作成した、画像認識のシステムは写真のように「日本円の硬貨」を認識するものです。100円玉や10円玉といった硬貨を硬貨ごとに認識し、画像内に移っている金額を自動で計算してくれるものというBotの機能を作成していました。

元々は、寮の献立を自動でつぶやくBotを作り、その追加機能のついでに開発していた 。

ここで、気づいて欲しいことがあります。研修の時には、画像に対してタグの「分類」で結果が返ってきていたと思いますが、この硬貨認識では、硬貨1枚1枚を「検出」しています。この「検出」できることが、Custom Visionを使って硬貨認識を開発していた理由になります。

最初Custom Visionは「分類」のみのサービスでしたが、「検出」させることができるようになり、さらに画像における物体認識の幅が広がりました。この、硬貨認識においても、「分類」だけなら、合計金額まで自動で算出させることはできません。「検出」ができることになったことで、画像を集め、硬貨の種類ごとにタグ付けするだけで、硬貨の検出器が完成します。

こういった、画像の機械学習を行うこと、APIとしてシステムに組み込むことが簡単に行えるため、Custom Visionは私が利用しているAzureのサービスの中で一番便利だと思っています。

今後してみたいこと

最後に、今後してみたいことということで私がまだ試せていないCustom Visionの便利なサービスを紹介したいと思います。

これまで、画像の機械学習が簡単に行えること、その学習したものをAPIとして利用できることを紹介しました。これだけでも、十分に便利ではあるのですが、さらに、この学習させたモデルをローカルデバイスに落として利用できるサービスがあります。

この写真のように「Export」を選択することでモデルをダウンロードすることができ、ローカルデバイスで物体認識のシステムを構築できるというものです。

このサービスの何がすごいのかというと、画像を集めてアップロードするだけの手間でモデルがローカルで手に入るということです。本来、ローカルで物体認識のモデルを自作するとなった場合、とても高性能なコンピュータが必要であり、画像学習用のニューラルネットワークを組み、たくさんの画像を集めて、画像に写っている認識させたい物体の座標などを示したデータを用意し、コンピュータの性能によっては数時間かけて学習を行っていました。もうこの文章を書くだけでも頭が混乱してきてしまいそうなくらい、大変な作業です。それが、このCustom Visionによって画像を集める作業のみで行えることになり、画像学習を行うことの敷居が低くなったのではないでしょうか。

このCustom VisionのExportのサービスをはじめ、まだまだAzureには触れていないサービスがたくさんあります。エンジニアとして、開発手法の武器としてより多くのサービスを知るためにも興味を持ったものからどんどん触れていきたいと思います。