【画像認識AI】Azure Custom Vision Serviceから天気を判別するモデルを作成してみた。

はじめに

機械学習を始めたいけどどんなことができるのかあまりイメージが分からないことがあると思います。
この記事では、Microsoft 社の画像認識サービス 【Azure Custom Vision Service】を使って写真から天気を判別していきます。

本記事の概要

  • Azure Custom Vision Serviceを使って天気の判別モデルを作成していきます。
  • 画像分類モデルを作成→トレーニング→テストといった流れで紹介していきます。
  • 操作はGUI上で完結します。これから AI ・ 機械学習を始めてみたい方でも実際に体験しやすい内容になっています。

こんな方に読んでもらいたい

この記事は以下の方を想定して書いています。

  • 画像認識サービスを試してみたい方
  • AI初学者の方
  • 機械学習について興味がある方

Azure Custom Visionとは

Azure Custom Visionは、独自の画像識別子を構築、デプロイ、改良できるようにする画像認識サービスです。 画像識別子は、視覚特性に従って画像に (クラスまたはオブジェクトを表す) ラベルを適用します。 Computer Vision サービスとは異なり、Custom Vision ではユーザーがラベルを指定し、それらを検出するためのカスタム モデルをトレーニングできます。

作業の流れ

画像の準備

今回は「曇り」「雨」「晴れ」「日の出」の写真を、それぞれ60枚トレーニング用に使用します。
画像はこちらから天気認識用のデータセットをお借りしました。

プロジェクト作成

①Azureにログイン→Custom Visionに移動。
②新しいプロジェクトを作成
https___qiita-image-store.s3.ap-northeast-1.amazonaws.com_0_655635_bef2116b-7ab8-dd7f-5d3b-f9de059fcaf5.png

③プロジェクト名入力→ドメインなどを選択→「Create project」を押す。

  • Classification:画像認識
  • Object Detection:物体検出
  • Multilabel (Multiple tags per image):1つの画像につき複数タグ付け
  • Multiclass (Single tag per image):1つの画像につきタグは1つ
  • Domainsで画像の種類を選択。今回はFood(食料)でもLandmarks(ランドマーク)でもRetail(小売)でもないのでドメインはGeneral(全般)を選択

https___qiita-image-store.s3.ap-northeast-1.amazonaws.com_0_655635_f56bc5e1-c357-d193-5684-da5a4b57ef26.png

学習に使用する画像をアップロード

①「Add image」から画像をアップロード。

https___qiita-image-store.s3.ap-northeast-1.amazonaws.com_0_655635_1e1db7fa-f412-5a1a-0209-ee03ee178417.png

②タグをつけて「Upload ×× files」をクリック。

bef56a8c-1665-dd0b-98c5-3ee7d01b0f08.png

③数秒待つとアップロードされる
他の画像も同様にアップロードし、タグ付けをしていく。

https___qiita-image-store.s3.ap-northeast-1.amazonaws.com_0_655635_fe7cdbf4-b11d-0d42-d23b-e702b8aed095.png

トレーニング

①画像のアップロードとタグ付けが終わったら右上の「Train」をクリック。

https___qiita-image-store.s3.ap-northeast-1.amazonaws.com_0_655635_a5a57b6d-ee82-3747-8e63-4dc1ebd29b2b.png

②Tranining Typeを選択し「Train」でトレーニング開始。
(Advanced Trainingを選択すると1時間以上のトレーニングにかけることができる。)
https___qiita-image-store.s3.ap-northeast-1.amazonaws.com_0_655635_5bfff8a8-b55d-798c-2e13-c66cb216eedd.png

③数分待つ。
https___qiita-image-store.s3.ap-northeast-1.amazonaws.com_0_655635_42ad389c-7aea-fb1d-0918-d3a1e67457a8.png

④結果が表示される。
Precision(適合率)は例えば「雨」と判断したもので、実際に「雨」であった確率
Recall(再現率)は例えば「雨」のもののうち、「雨」と判断した確率
APは精度の平均

今回の結果はPrecisionとRecallが97.9%、APは99.9%となりました。
100枚中97枚正しい天気の認識ができるということですね。
下部の表でタグごとの精度も見ることができます。
https___qiita-image-store.s3.ap-northeast-1.amazonaws.com_0_655635_824b07f1-0014-05f1-e871-db7db3d222d2.png

テスト

①「Quick Test」をクリック。

https___qiita-image-store.s3.ap-northeast-1.amazonaws.com_0_655635_9d1be757-b925-194b-7a56-820b3bd9e2e5.png

②テストに使用する写真をアップロード。

https___qiita-image-store.s3.ap-northeast-1.amazonaws.com_0_655635_43ed347b-259f-ec55-9737-231319139db3.png

③予測結果を見る。
こちら日の出の写真ですが、ちゃんとsunriseが100%と予測されました。

https___qiita-image-store.s3.ap-northeast-1.amazonaws.com_0_655635_70ac80c8-8017-4eca-729e-a825a6bb597a.png

曇りの写真も「cloudy」が99.9%で出ています。
https___qiita-image-store.s3.ap-northeast-1.amazonaws.com_0_655635_05dec6c7-dafd-2fb1-b506-a46936395e70.png

晴れも。
https___qiita-image-store.s3.ap-northeast-1.amazonaws.com_0_655635_b45a92dd-40da-2834-ccf8-d2ad4ff57597.png

雨も。
https___qiita-image-store.s3.ap-northeast-1.amazonaws.com_0_655635_0396a87c-a173-4b97-2f26-9ea400500df3.png

また、テストで使用した画像をそのまま再学習に使用することもできます。
https___qiita-image-store.s3.ap-northeast-1.amazonaws.com_0_655635_7f3f4668-61f3-8bbe-9677-810c53e3d880.png

タグを追加して保存するだけ。

https___qiita-image-store.s3.ap-northeast-1.amazonaws.com_0_655635_4acc195e-6cf7-415d-0647-bb9ebb316037.png

モデル作成後はExportして利用したり、API連携してアプリケーションと組み合わせることも可能です。

おわりに

画像分類モデルの作成→トレーニング→テストまでの作業が数分で完了しました。
抱えている問題がAIで解決できるのかどうかわからないといった疑問にも、画像認識の分野でどの程度解決ができそうなのかを検証していけそうですね。
また、Azure Cognitive Servicesでは、画像系に限らず言語や音声などの解析ができるAPIも用意されています。触ってみて記事にしていきたいです。

参考リンク

Custom Vision とは – Azure Cognitive Services

https://docs.microsoft.com