Help us understand the problem. What is going on with this article?

Amazon Rekognition Custom Labels でアーモンドとピーナッツの判別モデルを作ってみた。

はじめに

今回は AWSの 画像、動画分析サービスである Amazon Rekognition の Custom Labels 利用が開始となったため、アーモンドとピーナッツが判別できるか、検証いたします。

Amazon Rekognition Custom Labels とは

Amazon Rekognition とは AWS の提供する 画像、動画分析サービスです。シーン検出や顔認識、テキスト認識や動線検出など多くのAPI が存在します。
今回この Rekognition が Custom Labels に対応しました。
今までは AWS の用意した学習済みモデルを利用した物体検出しか利用できませんでしたが、自前で用意した画像で画像検出モデルを作成し、利用できるようになりました。

今回の目的

Amazon Rekognition Custom Labels で、ちょうど家にあったピーナッツとアーモンドの判別モデルを作ってみます。
今回はデータ準備、ラベリング、モデル作成、推論API利用までやってみます。

データ準備

今回は画像をピーナッツとアーモンドでそれぞれ21枚ずつ用意しました。

画像はこんな感じ。
image.png

データの準備は完了です。
早速 AWS コンソールから、ラベリングに進みましょう。

ラベリング

作成したデータのラベリングは、AWSのコンソール上で行います。

現在(2019年12月10日時点)は、Amazon Rekognition Custom Labels は以下のリージョンでのみ利用可能です。

  • バージニア北部
  • オハイオ
  • オレゴン
  • アイルランド

AWS コンソール上でリージョンを変更してから以降の手順を行ってください。

まず、AWS コンソールから Amazon Rekognition を開きます。
001.png

次に、サイドバー上部から Use Custom Labels を開きます。
002.png

※2019年12月10日時点では、表示言語を日本語にしていると、Custom Labels の項目が表示されません。
左下の言語欄から英語を選択し、次に進んでください。
003.png

Get Started をクリックします。
004.png

作成するデータセットや、モデルの保存先 S3 を作成します。
Create S3 bucket をクリックします。
005.png

次にプロジェクトを作成します。
任意のプロジェクト名を入力し、Create project をクリックします。
007.png

プロジェクトを作成したら、データセットを作成します。
Create datasetをクリックします。
008.png

任意のデータセット名を入力します。
009.png

データのアップロード方法を選択します。
今回はローカルからアップロードを選択します。
010.png

画像をアップロードします。
下にスクロールし、Add images をクリックします。
012.png

以下のように表示されるので画像を、Drag&Drops します。
※この時画像は一度に30枚までしかアップロードできません。分けて、アップロードしましょう。
013-1.png

画像を Drag&Drops したら、Add images をクリックします。
013-3.png

画像をアップロードしたら、画像に割り当てるラベルを登録します。
Filter by labels の Add をクリックします。
014-2.png

ラベルを追加し、Save をクリックします。
私の場合は、almond と peanuts を追加しました。
015-1.png

ラベリングしたい画像を選択して、Draw Bounding Box をクリックします。
image.png

ラベリングを行います。

  • まず、右側の Labels から対象のラベルを選択します。
  • 次に、画像の対象物を Box で囲みます。
  • 囲んだら、右上のNextをクリックします。
  • 全ての画像に対してラベリングができたら右上の Done をクリックします。

017-2.png

ラベリングが終わったら、右上の Save changes をクリックしてください。
018-1.png

モデル作成

データセットのラベリングが完了したら、ついにモデルトレーニングです。
Train model をクリックします。
020-1.png

各項目を設定します。

  • Choose project : 最初に作成したプロジェクトを選択します。
  • Choose training set : 作成したデータセットを選択します。
  • Create test set : テストデータの作成方法を選択します。今回は、学習データの中から20%を自動でテストデータとして抽出する Split training dataset を選択します。

全て設定したら、右下の Train をクリックします。
021-1.png

これでモデルトレーニングが始まります。
Status が TRAINING_COMPLETED になるまで待ちます。
学習画像32枚、テスト画像10枚で1時間弱ぐらいかかりました。

image.png

モデルトレーニングが完了しました。
ジョブ名をクリックして、トレーニングの詳細を見てみましょう。
image.png

モデルのスコアが載っています、精度90%、再現率80%となかなかいい感じですね。
034.png

推論 API の利用

実際に作成したモデルをデプロイして、推論してみましょう。
下にスクロールすると、モデルデプロイ、推論、デプロイ終了の API 利用コマンドがあるので順に実行してみましょう。
※古いバージョンの AWS CLI にはコマンドが存在しないため、以下から、AWS CLI のアップデート方法を確認し、実行してから次に進んでください。
https://docs.aws.amazon.com/ja_jp/cli/latest/userguide/install-cliv1.html#post-install-upgrade
image.png

まず、Start APIを実行すると、以下の様にレスポンスがあります。

{
    "Status": "STARTING"
}

実行後コンソールを確認してみると、対象のモデルステータスが STARTING となります。

035.png

Status が RUNNING になったのを確認したら、Detect API を実行しましょう。
推論に利用する画像は、あらかじめ S3 にアップロードしておきましょう。

036.png

今回は以下の画像を推論してみます。
almond.JPG

Detect API を実行すると、以下のように推論結果が返されます。

{
    "CustomLabels": [
        {
            "Name": " almond",
            "Confidence": 96.87999725341797,
            "Geometry": {
                "BoundingBox": {
                    "Width": 0.3379000127315521,
                    "Height": 0.14917999505996704,
                    "Left": 0.31453999876976013,
                    "Top": 0.385919988155365
                }
            }
        }
    ]
}

実際に可視化するとこんな感じです。
うまく推論できているようです。
037.png

推論を終えたら、Stop API でデプロイしているモデルを停止します。
以下のようにレスポンスがあります。

{
    "Status": "STOPPING"
}

コンソールを確認してみると既に Status が STOPPED になっていました。
image.png

おわりに

今回は Amazon Rekognition Custom Labels を検証しました。
画像を用意するだけで簡単に画像検出ができてしまい、感動しております。
今回はピーナッツとアーモンドの2種類でしたが、もう少し似通ったカシューナッツとか入れてもやってみたいと思います。

※料金は2019年12月10日現在、確認中です。わかり次第追記いたしますので、お待ちください。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした