【Nyantech ハンズオンシリーズ】

機械学習を使って写真に写っている猫を見分けてみよう!

~ 前編 : Amazon SageMaker Ground Truth を使った画像のラベリング ~

2020-03-02
デベロッパーのためのクラウド活用方法

Author : 大渕 麻莉

 はじめに

こんにちは、機械学習ソリューションアーキテクトの大渕です。

私は猫を 2 匹飼っているのですが、スマートフォンの中には猫の写真が大量に溜まっています。たまに、「こっちの猫の写真だけピックアップして見たい !」と思うときがありまして、もしかしたら他のみなさまもそんなことがあるんじゃないかと想像しています。

そんなときに機械学習を使うと、写真に写っているのがどの猫なのかを自動で識別することができます。このような用途で使用する機械学習モデルを、「画像分類モデル」「シーン分類モデル」と言います。今回は、1 枚の写真に猫が1匹だけ写っていることを想定しているので画像分類モデルを使いますが、もし複数の猫が写っている写真に対してどの猫がどこに写っているのかを知りたい場合は「物体検知モデル」を使います。

今回は、こちらのタマとミケを見分けることを目標にします。

機械学習で猫の写真を分類する場合、以下のような 3 ステップがあります。今回の記事では、「ステップ 1 : 画像を準備する」と「ステップ 2 : 画像にラベルをつける」の部分のやり方をご紹介します。

ご注意

本記事で紹介する 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 を使ってお猫様の健康 (体重) をモニタリングしてみた

 ステップ 1 : 画像を準備する

まずは、分類したい猫の画像を Amazon S3 にアップロードします。みなさまの PC などに画像をご用意ください。あまり多すぎると次のステップで画像にラベルをつける際に苦労しますので、とりあえずはそれぞれの猫に対して 10 枚くらいの画像を用意します。

今回は、2 匹の猫の画像を分類するので、cats というフォルダを作り、その中にそれぞれ 10 枚ずつ、合計 20 枚の画像を用意しました。どの画像にも、ミケかタマのどちらかが 1 匹だけ写っています。

画像が用意できたら、次は AWS コンソールにアクセスし、ストレージサービスの Amazon S3 のコンソールを表示します。そこで、新しいバケットを作成しましょう。下の図の、「バケットを作成する」をクリックします。

クリックすると拡大します

このような画面が出たら、バケット名とリージョンを設定して左下の「作成」をクリックします。今回はバージニア北部リージョンを使用します。

バケット名は、他の誰かと同じ名前にはできないので、もしエラーが出たら日付やご自分の名前を入れるなどしてバケット名を変更してください。今回は、バケット名を「cat-image-classification」としました。

クリックすると拡大します

作成したバケット名をクリックして、バケットの中に入ってみましょう。「アップロード」というボタンが表示されているので、こちらをクリックします。

クリックすると拡大します

すると、このような画面になるので、こちらに猫の画像をドラッグ & ドロップし、左下に表示される「アップロード」をクリックして、画像を S3 にアップロードします。猫の画像が入ったフォルダをこちらにドラッグ & ドロップすると便利です。

クリックすると拡大します

猫の画像が入った cats フォルダが S3 にアップロードされました。ここまででステップ 1 は終了です。

クリックすると拡大します

 ステップ 2 : 画像にラベルをつける

続いて、先ほど S3 にアップロードした画像にラベルをつけていきましょう。Amazon SageMaker のコンソールにアクセスし、左側のメニューの「ラベリングワークフォース」をクリックします。

クリックすると拡大します

ワーカーの登録

ここでは、ラベリングを行う人、ワーカーを登録します。

 

さらに、下の図の矢印部分の「プライベート」の部分をクリックします。初めて Amazon SageMaker Ground Truth を使う場合は、「プライベートチームを作成」というボタンが表示されるので、クリックします。

クリックすると拡大します

「プライベートチームを作成」をクリックすると、図のようなプライベートチーム作成画面が表示されますので、以下の項目に適切な情報を入力します。

  • チーム名:任意のわかりやすい名前 (本記事では cats と命名)
  • ワーカーの追加:E メールによる新しいワーカーの招待
  • E メールアドレス:ラベリングを依頼したい人の E メールアドレス (複数ある場合はカンマで区切る)
  • 組織名:どの組織からのラベリング依頼なのかがわかるような名称
  • 連絡先 E メール:ラベリングジョブの管理者となる人の E メールアドレス

Enable Notifications は、新しいラベリングジョブが作成された際にワーカーに E メールで通知したい場合に使用するオプションです。この機能を使用する場合は SNS トピックをあらかじめ作成しておき、ここで選択します。

すべての入力が終わったら、右下の「プライベートチームを作成」をクリックします。

クリックすると拡大します

ラベリングジョブの作成

すると図のように、今作成したプライベートチームが赤い矢印の部分に表示されます。

次は、ラベリングジョブを作っていきましょう。左側のメニューの青い矢印の先にある、「ラベリングジョブ」をクリックします。

クリックすると拡大します

ラベリングジョブ一覧画面が表示されたら、右上にある「ラベリングジョブの作成」をクリックします。

クリックすると拡大します

ラベリングジョブの作成画面が表示されました。以下の項目に適切な情報を入力します。

  • ジョブ名:ラベリングジョブの名前
  • Input data setup : 「Automated data setup」を選択します。
  • S3 location for input datasets : テキストボックスに、ステップ 1 で画像をアップロードした S3 のパスを直接入力するか、右側の「Browse S3」ボタンをクリックして画像をアップロードしたフォルダを選択します。この記事の場合、入力データセットの場所に入力する S3 のパスは「s3://cat-image-classification/cats/」となります。
  • S3 location for output datasets : どちらでも構いません。今回は「Same location as input dataset」を選択しました。
  • Data type : 「Image」を選択します。

クリックすると拡大します

  • IAM ロール:▼をクリックし、「Create a new role」を選択します。するとこのような画面が表示されるので、「任意の S3 バケット」を選択し、右下の「作成」をクリックします。

クリックすると拡大します

「Complete data setup」ボタンをクリックします。これにより manifest ファイルが作成されます。

クリックすると拡大します

  • タスクの選択 : バスケットボールをしている人の画像が表示されている「ImageClassification (単一ラベル)」を選択 (今回は画像に猫が 1 匹のみ写っている想定なので、画像分類モデルを作成するために「ImageClassification (単一ラベル)」を選択しましたが、猫が複数写っている画像を使用する場合は「ImageClassification (マルチラベル)」を、物体検知モデルを作成したい場合は「境界ボックス」を選択します。)

すべての入力が終わったら、右下の「次へ」をクリックします。

クリックすると拡大します

すると、続いてワーカーとラベリングツールの設定画面が表示されます。以下の項目に適切な情報を入力します。

  • ワーカータイプ:プライベート
  • プライベートチーム:先ほど作成したチーム(本記事の場合、cats というチームを作ったので cats を選択)
  • イメージ分類ラベリングツール:テキストボックスに、ワーカーが何をすれば良いかわかるように、わかりやすい説明を記入。
  • ラベル (猫の画像の右側のテキストボックス):ラベリングで使用するラベルを設定 (本記事ではミケとタマの 2 匹を分類したいので、mike と tama を設定)

すべての入力が終わったら、右下の「作成」をクリックします。

クリックすると拡大します

ラベリングジョブの作成が開始しました。

クリックすると拡大します

ワーカーによるラベリング

ラベリングジョブの作成が完了すると、ワーカーに図のようなメールが届きます。ワーカーは、赤い矢印の先にある URL をクリックして、ラベリングツールにアクセスします。このメールは、ラベリングを依頼した初回のみワーカーに届きますので、今後もラベリングを依頼する場合はメールを削除しないよう注意が必要です。

クリックすると拡大します

ワーカーがメールに記載された URL をクリックすると、図の左のようなサインイン画面が表示されます。メールに記載されたユーザ名と初期パスワードを入力してサインインします。初回のみ、パスワードの変更を求められますので、パスワードを変更します。

すると、図の右のようなワーカーのラベリングジョブ一覧画面が表示されます。ワーカーは、ラベリングしたいジョブを選択し、「Start working」をクリックします。

クリックすると拡大します

ブラウザに図のようなラベリングツールが表示されますので、表示された画像に対するラベルを右側のリストから選択し、右下の「Submit」をクリックします。すべての画像に対してラベリングが完了するまでラベリングを行います。

クリックすると拡大します

ラベリング結果の確認

ラベリングが完了したら、結果を確認してみましょう。

図は、Amazon SageMaker Ground Truth のラベリングジョブ一覧画面です。ステータスが進行中から完了に変わっていることがわかります。ジョブ名をクリックします。

クリックすると拡大します

こちらは、ジョブの詳細画面です。

入力データセットの保存場所や、出力データセット (ラベリング結果) の保存場所を確認することができます。ここで、「出力データセットの場所」に書かれている URL をクリックします。すると、S3 のコンソールが表示されます。

ここでさらに、manifests フォルダ、output フォルダ、と潜っていくと、output.manifest というファイルが見つかります。こちらにラベリング結果が記録されています。

クリックすると拡大します

output.manifestをダウンロードして、中身を見てみましょう。

こちらのファイルは、拡張マニフェストファイルといい、JSON Lines 形式で記述されています。source-ref には画像の S3 パスが書かれており、続いてラベリングジョブ名 (本記事の場合は cats) やラベルの ID、ラベリングジョブ名-metadata には confidence value や画像に付けたラベル名などの情報が記録されています。

一番上の行を見てみると、source-ref の部分と class-name の部分から、DSCF0019.jpg という画像に、mike というラベルが付けられていることがわかります。

{"source-ref":"s3://cat-image-classification/cats/DSCF0019.jpg","cats":0,"cats-metadata":{"confidence":0.68,"job-name":"labeling-job/cats","class-name":"mike","human-annotated":"yes","creation-date":"2020-02-14T10:03:18.431354","type":"groundtruth/image-classification"}}
{"source-ref":"s3://cat-image-classification/cats/DSCF0031.jpg","cats":0,"cats-metadata":{"confidence":0.68,"job-name":"labeling-job/cats","class-name":"mike","human-annotated":"yes","creation-date":"2020-02-14T10:03:18.431344","type":"groundtruth/image-classification"}}
{"source-ref":"s3://cat-image-classification/cats/DSCF0209.jpg","cats":1,"cats-metadata":{"confidence":0.68,"job-name":"labeling-job/cats","class-name":"tama","human-annotated":"yes","creation-date":"2020-02-14T10:03:18.431375","type":"groundtruth/image-classification"}}
(後略)

 リソースの削除

使用したリソースの中には、削除しない限り課金が続くものがあります。料金をゼロにするためには、以下のリソースの削除を行います。

S3 バケットの削除

このハンズオンで作成したバケットを削除する場合は、S3 のバケット一覧画面で、以下の手順を行ないます。今回作成したラベリング結果は中編、後編の手順で使用しますので、中編、後編のハンズオンを実施する場合はまだバケットを削除しないでください。今回作成したラベリング結果を今後一切使用しない、という状況になったらバケットを削除してください。

  1. バケット名の左側のラジオボタンを選択し、[空にする] ボタンをクリック
  2. バケット名を入力し、[空にする] ボタンをクリック
  3. 空のバケット:ステータス、の画面が表示されたら [終了] ボタンをクリック
  4. バケット名を選択した状態で [削除] ボタンをクリック
  5. バケット名を入力し、[バケットを削除する] ボタンをクリック

 さいごに

以上の手順で、Amazon SageMaker Ground Truth を使って画像にラベルをつけることができました。

次回は、今回作成したラベル情報を使って 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 を使ってお猫様の健康 (体重) をモニタリングしてみた

builders.flash メールメンバーへ登録することで
AWS のベストプラクティスを毎月無料でお試しいただけます

筆者紹介

大渕 麻莉

アマゾン ウェブ サービス ジャパン合同会社
機械学習ソリューションアーキテクト。

組込みソフトウェア開発から画像処理アルゴリズム開発を経てクラウドに到達し、2019
年にアマゾン ウェブ サービス ジャパン合同会社に入社。主に製造業のお客様の機械学習導入・運用の技術サポートを担当。
脳内 CPU の半分が猫のことで占められており、視界に入るすべての生き物がうちの猫に見えるという日々を過ごしている。

AWS を無料でお試しいただけます

AWS 無料利用枠の詳細はこちら ≫
5 ステップでアカウント作成できます
無料サインアップ ≫
ご不明な点がおありですか?
日本担当チームへ相談する