0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

AzureのAIサービスを利用してみる2【Cognitive ServicesのCustom Vision】

Last updated at Posted at 2022-11-21

はじめに

AIの活用は、コスト削減や効率化に伴う売上向上、監視や管理の自動化、人的リソース不足解消といったようなメリットがあると言われてますが、実際にAIを使う事を考えた場合には、データを集めて学習して、コードを書いて、アプリケーションを作成して、運用まで実施といった事が常に必要ということは無く、既に作成及びサービス化されたAIを料金を払う事で利用することもできます。
(例えば、音声をテキストに変換とか、画像から文字の認識といったようなサービス)

この記事では、以前記載したTeachable Machineで気軽にAIを体験で実施したような内容をCustom Visionを利用し、自分で学習用画像とタグを用意し、未知の画像を用意したタグで分類されるようにしてみます。
使い方によっては、自分の関係する製品の異常検知で利用といった使い方も考えられます。

001.png

何をしたい?できる?

  • Azure Cognitive ServicesのCustom Visionを使ってみる
  • サービス化されているAIに、自分で用意した画像とタグ設定の追加を行い分類の実行
  • 用意されているサンプルコードに必要情報だけ書き換えて実行

AI環境と利用について

この記事では、既に用意されているカスタマイズサービスを利用することで、比較的簡単に短時間で自分で用意した画像と定義したタグでの画像分類を試したいと思います。

002.png

設定手順

基本的に無料を選ぶようにしてますが、価格レベルの指定によっては、料金がかかる可能性があります。
手順は記事作成時点のものなので、画面例は変更される可能性があります。

例で指定されている以下のパラメータは、環境によって異なる内容なので適宜変更して下さい。Custom Visionインスタンス名はURL名として利用されるので、一意の名前が必要です。

  • リソースグループ名:ai_rg100
  • Custom Visionインスタンス名:customv-neko100
  • リソースを作成するリージョン:Japan East
qiita-square

1.リソースグループ作成

サインインやAzureでリソースグループの作成については、
AzureのAIサービスを利用してみる1の記事と同じ内容となりますので割愛します。

2.Custom Visionリソースの作成

リソースグループの概要画面で、[作成]を選択します。
qiita-square

Marketplace画面に遷移するので検索部分に、[Custom Vision]と入力し検索を行い、表示されたCustom Visionを選択します。

qiita-square

作成をクリックします。
qiita-square

表示された画面で、作成オプションを選択します。
自分で用意した画像を用いて学習(トレーニング)を行いて、モデル作成後に未知の画像の分類(予測)を行いたいので、作成オプションは両方を選択します。
qiita-square

リージョンの選択とインスタンス名の入力を実施します。
インスタンス名は外部インターネットに公開して利用する為、一意の名前が必要です。
価格レベルについては、検証レベルで数回程度のサービス利用とするので、トレーニングも予測についても[Free F0]を選択し、画面下方にある[確認と作成]をクリックします。
qiita-square

qiita-square

[検証に成功しました。]が表示されたら、[作成]をクリックします。
qiita-square

デプロイ完了後、[リソースに移動]をクリックします。
qiita-square

3.Custom Vision ポータルでタグ定義と学習の実行

まだ推測は実施しないので、表示されたリソースでPredictionがついていない方を選択します。
qiita-square

画面中央の[Custom Vision ポータル]をクリックします。
qiita-square

別タブで画面が表示されるので、表示された画面で[SIGN IN]をクリックします。

qiita-square

表示された画面で[New Project]をクリックします。
qiita-square

任意のプロジェクト名を入力し、分類を行う為[Classfication]を選択します。
qiita-square

1画像に複数の分類タグを割り振る予定なので、[Muktilabel]を選択し、食品や服飾と異なり汎用的な画像分類を行う為、ドメインは[General]を選択し、画面下方の[Create Project]をクリックします。
qiita-square

表示された画面の左側のTagsにある[+]をクリックして、表示された画面でタグの定義を実施します。
(定義後に再度[+]をクリックして複数作成可能)

qiita-square qiita-square

画面上方か、画面中央の[Add images]をクリックします。
qiita-square

ローカルPC上から学習に使う画像を選択後、表示された画面の[My Tags]部分で事前に登録していたタグを選択し[Upload file]をクリックします。タグ毎に30枚程度の画像を使う事が推奨となってますがここでは7枚程度で進めます。

形式やサイズについては以下の制約があります。

  • jpg、.png、.bmp、または .gif 形式 (サイズが 6 MB 未満で予測用画像は 4 MB)
  • 最短の辺が 256 ピクセル以上 (これより短い画像は自動的にスケール アップされる)
qiita-square

学習に使う画像を一通りUpload後、画面上方の[Trarin]をクリックして学習を進めます。
qiita-square

精度を重視するために時間を多くかけるかける事もできますが、ここでは[Quick Traning]を選択し[Train]をクリックします。
qiita-square

学習が完了するまで暫く待ちます。
qiita-square

学習が完了すると、精度等が表示されます。
qiita-square

4.推測の実行

学習完了後のCustom Vision ポータル画面上部で[Publish]を選択します。
qiita-square

表示された画面において、推測を実施したいのでPredictionがついているリソースを選択し、[Publish]をクリックします。
qiita-square

画面上部の[Quick Test]で、学習で使用してない画像を使って分類を試す事が可能です。
(学習に使ったものだと高確率の回答となるし、実際には未知の画像を使うはずなので)
qiita-square
qiita-square

4.Pythonコードからの実行

ここでは、Google CollaboratoryにUploadしている学習には未使用の画像を用いて分類を試してみます。

コードに必要な環境情報は、Custom Vision ポータル画面の[Prediction URL]やプロジェクト上に表示されている値を使う為、コピーしておきます。

推論時に使う画像のURLを指定するか、ローカルのファイルを指定するかでエンドポイントが異なるので注意が必要です。

qiita-square qiita-square

サンプルコードとしては以下のものを利用しています。

import requests
import json

# 環境に合わせて変更するID等
prediction_endpoint="Custom Vision ポータル画面のPrediction URLの表示からコピー"
iteration_id="Custom Vision ポータル画面のIteration idをコピー"
prediction_key="Custom Vision ポータル画面のPrediction URLの表示からコピー"

# 予測に使うファイル名
prediction_filename="ローカルファイルのファイル名"

# APIのPOST要求部分
url="https://"+prediction_endpoint+"?iterationId="+iteration_id
headers={'content-type':'application/octet-stream','Prediction-Key':prediction_key}
response =requests.post(url,data=open(prediction_filename,"rb"),headers=headers)
response.raise_for_status()

# 結果の表示
result = response.json()
name, pred = result["predictions"][0]["tagName"], result["predictions"][0]["probability"]
print(name, pred)
name, pred = result["predictions"][1]["tagName"], result["predictions"][1]["probability"]
print(name, pred)

以下の画像のように推論を実施することができます。
032.png

関連記事

Teachable Machineで気軽にAIを体験
AzureのAIサービスを利用してみる1

参考及びリンク

Cognitive Services API Reference
Custom Vision SDK または REST API の使用
Custom Vision のドキュメント

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?