【Nyantech ハンズオンシリーズ】
機械学習を使って写真に写っている猫を見分けてみよう!
~ 中編:Amazon Rekognition Custom Labels を使った機械学習モデルの作成
Author : 大渕 麻莉
はじめに
こんにちは、機械学習ソリューションアーキテクトの大渕です。
前回の記事で、スマートフォンに大量に保存されている猫の写真から特定の猫が写っている写真をピックアップしたいときってありますよね ! と力説いたしました。続けて、機械学習を使って画像分類すれば良いじゃないか ! というご提案をし、Amazon SageMaker Ground Truth というサービスを使って、画像のラベリングをする方法をご紹介したのですが、みなさまお楽しみいただけましたでしょうか。(まだの方は、ぜひご覧ください)
中編となる今回は、前回ラベリングした結果を教師データとして、Amazon Rekognition というサービスの Custom Labels という機能を使って、「うちの猫を見分ける機械学習モデル」を作る方法をハンズオン形式でご紹介したいと思います。教師データを作る際にみなさま自身の猫さんの画像を使っていただくと、みなさま専用の猫分類モデルをお作りいただけます。
ひきつづき今回も、こちらのタマとミケを見分けることを目標にします。写真には、どちらか一方の猫しか写っていないという想定にします。
機械学習で猫の写真を分類するモデルを作る場合、以下のような3ステップで行います。前編では、「ステップ 1:画像を準備する」と「ステップ 2:画像にラベルをつける」の部分をご紹介したので、今回は「ステップ3:モデルを学習させる」の方法をご紹介します。AWS の機械学習サービスを使って猫の写真を分類するモデルを作る方法は 2 通りあり、今回はより簡単に独自の機械学習モデルを作れる Amazon Rekognition を使う方法をご説明します。次回は機械学習プロジェクトのためのマネージドサービスである Amazon SageMaker を使う方法をご紹介しますのでお楽しみに!
- ステップ 1 : 画像を準備する(Amazon S3)
- ステップ 2 : 画像にラベルをつける(Amazon SageMaker Ground Truth)
- ステップ 3 : モデルを学習させる(Amazon Rekognition or Amazon SageMaker)
ご注意
本記事で紹介する AWS サービスを起動する際には、料金がかかります。builders.flash メールメンバー特典の、クラウドレシピ向けクレジットコードプレゼントの入手をお勧めします。
Nyantech ハンズオンシリーズのその他の記事はこちら
- 選択
- 機械学習を使って写真に写っている猫を見分けてみよう! ~ 前編 : Amazon SageMaker Ground Truth を使った画像のラベリング ~
- 機械学習を使って写真に写っている猫を見分けてみよう! 〜中編:Amazon Rekognition Custom Labels を使った機械学習モデルの作成
- 機械学習を使って写真に写っている猫を見分けてみよう! 〜後編:Amazon SageMaker を使った機械学習モデルの作成
- たくさんの写真の中からうちの子 (猫) をみつけよう ! 〜機械学習と Amazon Elasticsearch Service で類似画像検索
- Nyantech とはじめる MLOps 〜学習パイプランを使って効率的に猫を見分ける機械学習モデルを目指そう ! の巻〜
- 猫の画像を使ってあそぶブラウザゲームを作ろう ! 〜AWS Cloud Development Kit (AWS CDK)で簡単デプロイ〜
- Nyantech 画像生成選手権 ~ 画像生成 AI を使ってお題に近い猫の画像を生成しよう ! の巻
- 1 クリックで立ち上がる自分だけの環境で、お猫様の画像生成をやってみた。
- 1 クリックで立ち上がる自分だけの環境で、お猫様の画像生成をやってみた。- 拡張編 -
- Nyantech であの猫のこんな写真を見つけたい ~ マルチモーダル埋め込みモデルを使って類似画像検索をパワーアップ ~
- IoT を使ってお猫様の健康 (体重) をモニタリングしてみた
Amazon Rekognition とは
Amazon Rekognition は、機械学習の専門的な知識がなくても、みなさまのアプリケーションに画像や動画認識の機能を簡単に組み込んでいただくことができる AI サービスです。物体、人物、テキスト、シーン、動きを検出したり、不適切なコンテンツかどうかの判定をすることができます。また、一般的な物体だけではなく自分のニーズに合わせた画像認識をやりたい、というお客様は Amazon Rekognition Custom Labels を使うことで、独自の画像認識の機械学習モデルを作成することができます。
現在、Amazon Rekogniton Custom Labels を使って、シーン認識モデル (画像分類モデル) と、物体検知モデルを作ることができます。こちらの図の、左側が画像分類モデルの例で、画像に何が写っているのか、どんなシーンなのかを認識する場合に使用します。右側が物体検知モデルの例で、画像のどこに何が写っているのかをバウンディングボックスで検出する場合に使用します。用途に応じて、どちらのモデルが適切かは変わりますが、今回は、写真にはどちらか一方の猫しか写っていないという想定なので、画像分類モデルを作成します。
Amazon Rekognition で猫を見分けるモデルを作る
それでは、前回作成した教師データを使ってモデルを作っていきましょう。
Amazon Rekognition Custom Labels のコンソールにアクセス
Chrome か Firefox で AWS マネジメントコンソールにアクセスして、サービス検索窓に reko を入力すると、Amazon Rekognition が候補に出てくるのでクリックします。
クリックすると拡大します
Amazon Rekognition のコンソールが表示されたら、以下の 2 つの設定を行います。
- リージョンをバージニア北部 (N. Virginia) にする。(オレゴン、オハイオでも可)
- 言語設定を英語にする
リージョンの設定は、画面右上から変更できます。言語設定は、左下から変更できます。
リージョンと言語設定が完了したら、メニューの一番上に Custom Labels というメニューが出てくるので、そちらをクリックします。
クリックすると拡大します
(初回のみ) Amazon S3 バケットの作成
Amazon Rekognition Custom Labels を初めて使用する場合は、このような画面が表示されます。バケットを作成しないと先に進めないので、「Create S3 bucket」をクリックしてバケットを作成します。この操作で作成されるバケットは、Amazon Rekognition Custom Labels を使う際に必要な権限設定がされた状態で作成されます。が、今回はこのバケットは使用しません。
クリックすると拡大します
プロジェクトの作成
Amazon Rekognition Custom Labels のコンソールが表示されたら、オレンジ色の「Get started」をクリックするか、左側のメニューから「Projects」を選択します。
プロジェクト作成画面が表示されたら、任意のプロジェクト名を入力して「Create project」をクリックします。エラーが出た場合は、プロジェクト名に空白や特殊な記号が含まれている可能性があるので、別のプロジェクト名をお試しください。
クリックすると拡大します
データセットの登録
プロジェクトが作成できたら、次はデータセットを登録します。Amazon Rekognition Custom Labels のコンソールの左側のメニューの「Datasets」をクリックします。さらに「Create dataset」をクリックします。
クリックすると拡大します
データセット作成画面で以下の項目を設定します。
- データセット名
- Image location:
前回の手順で作成したGround Truth のラベリング結果を使用するので、「Import images labeled by SageMaker Ground Truth」を選択。
- .manifest file location:
Ground Truth のラベリング結果が出力されている manifest ファイルの S3 パスを入力。
クリックすると拡大します
manifest ファイルの出力先は、Amazon SageMaker のコンソールのメニューから「Labeling jobs」を選択し、表示されたジョブ一覧からジョブの詳細画面にアクセスすると、Labeling job summary の部分の Output dataset location からたどることができます。
クリックすると拡大します
こちらに記載されたリンクをクリックし、manifests -> output -> output.manifest とクリックしていくと見つかります。
クリックすると拡大します
こちらの図のように manifest ファイルをクリックすると表示される詳細画面で「Copy path」をクリックすると、ファイルの S3 パスがクリップボードにコピーされるので、こちらをペーストすると楽です。
クリックすると拡大します
manifest ファイルパスを設定すると、このような画面が表示されます。Amazon Rekognition から S3 バケットにアクセスするためには、対象となるバケットにこちらのバケットポリシーを設定する必要があります。次の手順でバケットポリシーの設定を行いますので、こちらに表示されたバケットポリシー全体を選択し、コピーしてから、「Submit」をクリックします。
バケットポリシーとは、S3 バケットやバケットに保存されたオブジェクト (ファイル) に対するアクセス権限を設定するためのものです。今回、Amazon Rekognition から S3 バケットにファイルを保存したり保存されているファイルを参照したりするため、設定が必要となります。
クリックすると拡大します
S3 バケットにバケットポリシーを設定
先ほどコピーしたバケットポリシーを、画像が保存されている S3 バケットに設定します。ブラウザで、S3 のコンソールを表示し、前回 (前編) の手順で作成したバケットをクリックします。バケットの中身が表示されたら、上部に表示されているタブから Permissions -> Bucket Policy とクリックします。すると、テキストボックスが表示されるので、こちらに先ほどコピーしたバケットポリシーをペーストして「Save」をクリックします。
クリックすると拡大します
これでバケットポリシーの設定は終了です。この設定を忘れると、Rekognition でモデルを学習させる際にこのようなエラーが出て失敗してしまうので、忘れずに設定しましょう。
データセットの確認
データセットの登録が成功すると、このようなデータセットの詳細画面が表示されます。ラベルを変更したい場合は、「Start Labeling」をクリックし、ラベルを変更したい画像を選んで、「Assign Labels」をクリックするとラベルを変更できます。新しいラベルを追加することも可能です。ラベルの変更が終わったら「Exit」をクリックします。「Start Labeling」をクリックすると、「Add images」ボタンから画像を追加することもできますが、削除することはできません。
クリックすると拡大します
モデルの学習
データセット詳細画面の「Train model」をクリックして、モデルを作成します。以下の 3 つを設定し「Submit」をクリックします。
- Choose project:テキストボックスをクリックし、先ほど作成したプロジェクトを選択。
- Choose training set:テキストボックスをクリックし、先ほど作成したデータセットを選択。
- Create test set:「Split training dataset」を選択。データセットを学習用と検証用に分割して使用します。
クリックすると拡大します
モデルの学習が開始すると、プロジェクトの詳細画面の Models からステータスを確認できます。こちらの画面で、右側にスクロールしていくと Status という項目があり、学習中はそこに TRAINING_IN_PROGRESS と書かれています。学習が完了すると、TRAINING_COMPLETED と表示されます。
クリックすると拡大します
クリックすると拡大します
モデルの確認
モデルの学習が完了したら、Models に表示された Name の部分がクリックできるようになるのでクリックします。
クリックすると拡大します
モデルの詳細画面が表示されます。ここで、モデルの精度を確認することができます。右上の「View test results」をクリックすると、検証に使用した各画像に対する結果を確認することができます。このモデルの場合、学習に 0.714 時間 (約 43 分) かかったようです。どのくらい時間がかかるかは、画像の内容や枚数によって異なります。
クリックすると拡大します
作ったモデルを使って猫の写真を見分ける (推論)
ここまでが、猫を見分けるモデルを作るまでの手順です。ここからは、作ったモデルを使って実際に猫の写真を見分けてみましょう。
API の確認
モデルの詳細画面を下にスクロールすると、Use model という項目が現れるので、「API Code」の部分をクリックして展開します。展開すると、REST API が表示されます。これらの API を使用して、
- モデルを使うためのサーバー (推論用エンドポイント) の立ち上げ
- 推論用エンドポイントに画像を送って猫を見分ける (推論)
- 推論用エンドポイントの停止
を行います。
クリックすると拡大します
API 実行環境について
2020 年 3 月現在、作成した機械学習モデルを使って推論をする方法として、AWS CLI がサポートされており、Python もサポートされる予定です。AWS CLI とは、コマンドラインシェルでコマンドを使用して AWS サービスとやり取りするためのオープンソースツールです。お手元の PC に AWS CLI がインストールされている場合は、そちらからコマンドを実行いただけます。ただし、AWS CLI のバージョンが古いとエラーになることがあるので、その場合は AWS CLI をアップデートしてください。
お手元の PC に AWS CLI の環境がない場合、AWS Cloud9 という、ブラウザのみでコードを記述、実行、デバッグできるクラウドベースの統合開発環境 (IDE) を使用します。次の項目で、AWS Cloud9 の環境の立ち上げ方法をご説明します。この手順が不要な方は、ひとつ項目を飛ばして次の「API を実行して猫を見分ける」の項目にお進みください。
AWS Cloud9 が利用できない場合、こちらのブログ をご参考に AWS IDE Toolkits または AWS CloudShell をご利用ください。
AWS Cloud9 の環境の立ち上げ
それでは、AWS Cloud9 の環境を立ち上げましょう! AWS コンソールで cloud9 と入力して、AWS Cloud9 のコンソールにアクセスし、オレンジ色の「Create environment」をクリックします。リージョンは Amazon Rekognition Custom Labels の推論用エンドポイントと同じリージョン (今回はバージニア北部) とします。
クリックすると拡大します
「Name」に適当な名前を入力し、「Next step」をクリックします。
クリックすると拡大します
Configure settings では、すべての設定をデフォルトのままにして「Next step」をクリックします。最後に設定の確認が出たら、内容を確認して「Create environment」をクリックします。
なお、設定の Cost-saving setting の部分では、余計なコストがかからないように 30 分使用しない状態が続くと自動的にインスタンスが停止する設定になっています。
クリックすると拡大します
数分すると、このような画面が表示されます。矢印の部分がターミナルになっているので、こちらから API を実行します。
クリックすると拡大します
API を実行して猫を見分ける
まずは、Amazon Rekognition Custom Labels のモデルの詳細画面に表示されている、Start API を実行して、推論用のエンドポイントを起動しましょう。
コマンドをコピーして、ターミナルにペーストしてエンターキー (Mac はリターンキー) を押して実行します。
ログに、”Status”: “STARTING” と表示されれば問題なく実行されています。エラーが出た場合は、AWS CLI が最新ではない場合がありますので、アップデートします。アップデート方法はこちらをご参照ください。
クリックすると拡大します
推論用エンドポイントの状況は、モデル詳細画面で「Model details」タブを選択すると確認することができます。こちらの図は、Status が STARTING となっており、推論用エンドポイントが起動中であることがわかります。推論用エンドポイントが起動すると、Status は RUNNING になります。
クリックすると拡大します
推論用エンドポイントが起動したら、さっそく画像を推論用エンドポイントに送って、写っているのがどちらの猫なのかを見分けましょう!
コンソールから、Detect API をコピーし、いったんテキストエディタなどにペーストします。コマンドの以下の部分を書き換えます。今回は、モデルの学習に使用した画像を使って推論してみます。
- image オプションの MY_BUCKET を、推論を実施したい画像が保存されている S3 バケットに書き換える
- image オプションの PATH_TO_MY_IMAGE を、画像のパスに書き換える
- 書き換えた部分を赤文字で示しました。
このようなミケの画像を推論用エンドポイントに送って推論を行います。
ミケの確率が 64.7 %、タマの確率が 35.3 % と出力されました。この写真にはミケが写っていると判断できそうです。もし間違った結果が得られた場合は、その時使用した画像と同じような画像を学習データに追加して、再度機械学習モデルを作ることで改善できる場合があります。
クリックすると拡大します
推論用エンドポイントは、停止しない限り料金がかかってしまうため、使い終わったら停止する必要があります。推論用エンドポイントは、Stop API を使って停止しましょう。
クリックすると拡大します
ここまでで、猫を見分ける機械学習モデルを作って、実際に猫を見分けるところまでできました。
リソースの削除
前回と今回使用したリソースの中には、削除しない限り課金が続くものがあります。料金をゼロにするためには、以下のリソースの削除を行います。
Amazon Rekognition Custom Labels の推論用エンドポイントの停止
Stop API を実行して、推論用エンドポイントを停止します。推論用エンドポイントの稼働状況は、モデル詳細画面の「Model details」から確認できます。Status が STOPPED になっていれば OK です。
クリックすると拡大します
S3 バケットの削除
S3 のバケット一覧画面で、作成したバケットのチェックボックスにチェックを入れ、「Delete」ボタンをクリックします。「Delete bucket」という画面が表示されたら、テキストボックスにバケット名を入力して、「Confirm」をクリックします。
さいごに
前回と今回の記事で、猫を見分ける機械学習モデルを作るための一連の手順をご紹介しました。ぜひこれからも Amazon Rekognition Custom Labels を使って、色々なモデルを作ってみなさまのお仕事や趣味に役立てていただければ幸いです。
最終回となる次回は、Amazon SageMaker のビルトインアルゴリズムを使って、猫を見分ける機械学習モデルを作る方法をご紹介します。
🐱参考情報
Amazon Rekognition Custom Labels 料金 »
Nyantech ハンズオンシリーズのその他の記事はこちら
- 選択
- 機械学習を使って写真に写っている猫を見分けてみよう! ~ 前編 : Amazon SageMaker Ground Truth を使った画像のラベリング ~
- 機械学習を使って写真に写っている猫を見分けてみよう! 〜中編:Amazon Rekognition Custom Labels を使った機械学習モデルの作成
- 機械学習を使って写真に写っている猫を見分けてみよう! 〜後編:Amazon SageMaker を使った機械学習モデルの作成
- たくさんの写真の中からうちの子 (猫) をみつけよう ! 〜機械学習と Amazon Elasticsearch Service で類似画像検索
- Nyantech とはじめる MLOps 〜学習パイプランを使って効率的に猫を見分ける機械学習モデルを目指そう ! の巻〜
- 猫の画像を使ってあそぶブラウザゲームを作ろう ! 〜AWS Cloud Development Kit (AWS CDK)で簡単デプロイ〜
- Nyantech 画像生成選手権 ~ 画像生成 AI を使ってお題に近い猫の画像を生成しよう ! の巻
- 1 クリックで立ち上がる自分だけの環境で、お猫様の画像生成をやってみた。
- 1 クリックで立ち上がる自分だけの環境で、お猫様の画像生成をやってみた。- 拡張編 -
- Nyantech であの猫のこんな写真を見つけたい ~ マルチモーダル埋め込みモデルを使って類似画像検索をパワーアップ ~
- IoT を使ってお猫様の健康 (体重) をモニタリングしてみた
筆者紹介
大渕 麻莉
アマゾン ウェブ サービス ジャパン合同会社
機械学習ソリューションアーキテクト。
組込みソフトウェア開発から画像処理アルゴリズム開発を経てクラウドに到達し、2019
年にアマゾン ウェブ サービス ジャパン合同会社に入社。主に製造業のお客様の機械学習導入・運用の技術サポートを担当。
脳内 CPU の半分が猫のことで占められており、視界に入るすべての生き物がうちの猫に見えるという日々を過ごしている。
AWS を無料でお試しいただけます