誰でもAIが使える!「Azure Cognitive Services」をみんなで学ぶ 第3回
「カメラ撮影した洋服の洗濯方法を提案するAIスマホアプリ」を作ってみよう!【前編】
独自の画像識別モデルを作成できる「Custom Vision Service」とは
2021年06月21日 08時00分更新
皆さんこんにちは! FIXERの新卒1年目、コーディング初心者の池田と廣原です! 今回は「連載:誰でもAIが使える『Azure Cognitive Services』をみんなで学ぶ」の第3回として、「Custom Vision Serviceについて知ろう!」をテーマに記事を書かせていただきます。
今回の記事は、次のとおり3部構成でお届けします。
・前編:Custom Vision Serviceの概要
・中編:Custom Vision Serviceを使ったモデル作成(ハンズオン)
・後編:Power Appsとの連携、アプリの作成
この記事を読み終えるころには、「スマートフォンカメラで衣類の種類を認識し、衣類の洗濯方法を提案する」アプリが作成できるようになります。わたしたちも初心者でわからない点が多くありますので、皆さんと一緒にしっかり学びつつ、丁寧に説明していきたいと思います!
まず前編記事では、Azure Cognitive Servicesの1つであるCustom Vision Serviceについて理解を深めていきましょう。
Custom Vision Serviceって?
さて、いきなりですが、Custom Vision Serviceってなんでしょうか? Azure公式ドキュメントを見ると、次のように説明されています。
Azure Custom Vision は、独自の画像識別子を構築、デプロイ、改良できるようにする画像認識サービスです。 画像識別子は、視覚特性に従って画像に (クラスまたはオブジェクトを表す) ラベルを適用します。
Custom Vision サービスでは、画像の分析に機械学習アルゴリズムを使用します。 開発者は、着目する特性を備えた画像グループと、それを欠いた画像グループを提出します。 提出時に自分で画像にラベルを付けます。 次に、アルゴリズムをこのデータでトレーニングし、同じ画像に対するテストを行って、アルゴリズム自体の精度を計算します。 アルゴリズムのトレーニング後、テスト、再トレーニングを行い、最終的にはアルゴリズムを画像認識アプリ内で使用して、新しい画像を分類することができます。
引用元:Custom Vision とは https://docs.microsoft.com/ja-jp/azure/cognitive-services/custom-vision-service/overview難しい言葉が多くてわかりにくいですね……。少し噛み砕いて説明しておきましょう。
まず画像識別子とは、それぞれの画像の特徴を見分ける仕組み(画像識別モデル、より具体的には機械学習アルゴリズム)のことです。つまりここでは「Azure Custom Visionはユーザー自身で独自の画像識別の仕組みを作成できるサービスである」と言っています。
次にラベルです。Custom Vision Serviceは、画像に写っているもの(たとえばリンゴやみかん)の視覚的な特徴から識別して、その画像にラベル(写っているものの分類を表すテキスト、「リンゴ」「みかん」など)を付けます。なお、クラスとオブジェクトという言葉も出てきますが、いずれも「分類」を表しており、大まかにクラス=グループ、オブジェクト=もの、と考えてください。
続く「Custom Vision サービスでは~」の部分で、どのように画像認識サービスを作っていくのかが説明されています。
Custom Vision Serviceを使って独自の画像識別モデルを開発するためには、ユーザーである開発者が自分で画像データ(学習データ)を用意する必要があります。分類には比較対象が必要なので、画像は最低でも2種類(「そのもの」と「それ以外のもの」の2グループ)以上用意しましょう。
また、画像データにはあらかじめラベル付けをしておく必要があります。たとえばリンゴが写った画像には「リンゴ」ラベル、みかん画像には「みかん」ラベルといった具合に、同じグループのものが写っている画像に対して同じラベルを付けておくわけです。これを機械に学習させることで、「こういう特徴がある画像は、このグループに分類できる」というモデルが出来上がります。なお、この機械学習でモデルを作成する処理を「トレーニング」と呼びます。
トレーニングが終わったら、学習データに含まれない新しい画像を使って、どのグループに属するものかを識別させるテストを行います。テストを行うことで、作成したモデルがどのくらいの精度で画像を分類できるのかがわかります。最初は精度が低いかもしれませんが、より多くの学習データを使ってトレーニングとテストを繰り返すことで、モデルの精度が上がり、より正確に分類できるようになります。
モデルの精度が十分に上がったら、このモデルをアプリ内に組み込むことで、オリジナルの画像認識アプリを作ることができます。
以上、後半部分を噛み砕いて説明するとこんな感じです。少しはわかりやすくなったでしょうか。このように、Custom Vision Serviceでは自分で用意した画像を学習させるだけで、画像認識サービスが作成できるわけです。
画像分類と物体検出とは?
Custom Vision Serviceでは、「画像分類」と「物体検出」という2種類の画像認識機能を提供しています。……と言われても、そもそも画像分類と物体検出の違いがわからないですよね。その違いについても簡単に説明しましょう。
画像分類は「ある画像に対し、どのような物体が映っているかで画像を分類すること」、物体検出は「画像内のどの位置に何が映っているのかを検出すること」です。それぞれの具体的な利用事例を見てみると、よりわかりやすいでしょう。
●画像分類
・服の写真から、服のカテゴリを分類する
・料理の写真から、メニュー名を判別する
・車の写真から、車種や型番を判別する
●物体検出
・車載カメラの映像から、周囲の車や歩行者、標識などを認識する
・高速道路上のカメラ映像から、走行している自動車の量を検出する
・工場の製造ラインで、製品が不良品ではないかどうかを判断する
最近では、自動運転技術を搭載した自動車が発売されたり、クローゼットにある衣服を撮影するだけで服の組合せを提案してくれるアプリがリリースされたりしていますが、その背後にはこうした画像分類、物体検出の技術が存在しているんですね。とても身近な存在になっていると言えます。
ただし、このような画像認識を行うモデルを作成しようとすると、通常は膨大な数の画像を学習データとして準備しなければならなかったり、複雑なプログラミングをしてアルゴリズムを自分で構築する必要があったりと、初心者ではとても手の出せない領域の話になってしまいます。
しかし、Custom Vision Serviceを利用することで、誰でも簡単に、少ない画像数で、かつノンコーディングで、画像認識モデルを作成することができるのです!
今回やりたいこと
冒頭でも触れましたが、今回はこのCustom Vision Serviceを利用して「洋服の洗濯方法を提案してくれるアプリ」を作成したいと思います。なお、このアプリでは衣類の種類を判別させたいので、今回はCustom Vision Serviceの「画像分類」の機能にフォーカスして開発を行います。
具体的にはまず、Custom Vision Serviceを利用して、衣類の種類を判別する画像識別モデルを作成します。次に、このモデルを組み込み、カメラで撮影した衣類を判別するアプリを作成します。このアプリには「衣類の種類」と「洗い方」の情報を登録したデータテーブルを用意しておき、撮影した衣類の種類と一致する洗い方を提案します。
* * *
次回の中編記事では、実際にCustom Vision Serviceを利用して、画像認識モデルを作成する手順をご紹介します。実際にモデルを作成する中で、筆者自身がわかりにくかった部分、注意すべき部分などを丁寧に説明していけたらと思います。
次回もぜひお付き合いください!
■今回のポイントまとめ!
- Custom Vision Serviceは、画像データを用意するだけで簡単に画像認識サービスが作成できる
- Custom Vision Serviceでは、画像分類と物体検出ができる
- 画像分類や物体検出の技術は、自動運転などすでにさまざまな分野で利用されている
■筆者プロフィール
・FIXER Inc. 池田英永(いけだ はなえ):入社1年目。新しいことにチャレンジして、たくさんアウトプットしていきます!
・FIXER Inc. 廣原花音(ひろはら かのん):入社1年目。いち早く技術を身につけるため、日々精進中!
この連載の記事
-
第6回
TECH
「Text Analytics」で業務日報のテキストを感情分析してみよう! -
第5回
TECH
「Custom Vision Service」と「Power Apps」でAIアプリを完成させる -
第4回
TECH
Custom Vision Serviceで「衣類を画像分類するモデル」を作る -
第2回
TECH
Azureの質問応答ボットサービス「QnA Maker」を理解する -
第1回
TECH
AIと「Azure Cognitive Services」の基本を理解する - この連載の一覧へ