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

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

〜後編:Amazon SageMaker を使った機械学習モデルの作成

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

Author : 大渕 麻莉

 はじめに

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

本シリーズの前編、中編の記事で、Amazon SageMaker Ground Truth というサービスを使って、写真に写っているのがタマとミケのどちらなのかをラベリングし、その結果を使って Amazon Rekognition Custom Labels で猫を見分ける機械学習モデルを作成する方法をご紹介しました。みなさまの猫さんをうまく見分けることはできましたでしょうか ?

最終回となる今回は、前編でラベリングした結果を教師データとして、今度は Amazon SageMaker というサービスを使って、「うちの猫を見分ける機械学習モデル」を作る方法をハンズオン形式でご紹介したいと思います。教師データを作る際にみなさま自身の猫さんの画像を使っていただくと、みなさま専用の猫分類モデルをお作りいただけます。

ひきつづき今回も、こちらのタマとミケを見分けることを目標にします。写真には、どちらか一方の猫しか写っていないという想定にします。

機械学習で猫の写真を分類するモデルを作る場合、以下のような 3 ステップで行います。前編では、『ステップ 1:画像を準備する』と『ステップ 2:画像にラベルをつける』の部分をご紹介し、中編では『ステップ 3:モデルを学習させる』のAmazon Rekognition を使う方法をご紹介しました。今回は機械学習プロジェクトのためのマネージドサービスである 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 SageMaker とは

Amazon SageMaker は、すべての開発者やデータサイエンティストが機械学習モデルをすばやく構築、学習、デプロイできるようにするフルマネージドサービスです。Amazon SageMaker は機械学習の各プロセスの大変な部分を開発者の代わりに行うため、開発者は機械学習モデル開発のコアな部分に注力することができます。Amazon SageMaker をもっと知りたい方は、こちらの記事がおすすめです。

前回は Amazon Rekognition Custom Labels を使って、プログラムを一切書かずに猫を見分ける機械学習モデルを作りました。Amazon SageMaker を使うと、機械学習モデル開発をより柔軟な環境で行うことができます。たとえば、モデルの学習や推論に使用するインスタンスタイプやインスタンスの数を指定したり、使用するアルゴリズムを自由に選んだりすることが可能です。Amazon SageMaker では、Tensorflow や PyTorch などの一般的なフレームワークでモデルを開発することもできますが、今回は簡単に機械学習を使うために Amazon SageMaker に用意されている画像分類の「ビルトインアルゴリズム」を使って猫を見分けてみます。Amazon SageMaker には画像分類以外にも以下のようなビルトインアルゴリズムがあります。

 Amazon SageMaker で猫を見分けるモデルを作る

それでは、前編で Amazon SageMaker Ground Truth で作成した教師データを使ってモデルを作っていきましょう。

Amazon SageMaker のコンソールにアクセス

Chrome か Firefox で AWS マネジメントコンソールにアクセスして、サービス検索窓に sage を入力すると、Amazon SageMaker が候補に出てくるのでクリックします。

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

Amazon SageMaker のコンソールが表示されたら、リージョンをバージニア北部(N. Virginia)にします。これは、Amazon SageMaker Ground Truth で作成したラベリング結果の output.manifest ファイルや、学習に使用する画像が保存されている S3 バケットと同じリージョンにするということです。前編でバージニア北部を使用したので、今回もバージニア北部を使用します。

ノートブックインスタンスの作成

Amazon SageMaker では、機械学習モデル開発環境として「ノートブックインスタンス」を使用することができます。左側のメニューから「ノートブックインスタンス」をクリックします。

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

「ノートブックインスタンスの作成」をクリックします。 

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

ノートブックインスタンスの設定をしていきます。
まずはノートブックインスタンス名を記入します。今回は「cat-handson」としました。

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

アクセス許可と暗号化のセクションの IAM ロールでは、「新しいロールの作成」を選択します。

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

IAM ロールを作成する画面では、「任意の S3 バケット」を選択して、「ロールの作成」をクリックします。

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

以上の設定が終わったら、「ノートブックインスタンスの作成」をクリックします。ステータスが InService になるまで数分待ちます。こちらの図のように InService になったら、アクションの 「Jupyter を開く」 をクリックします。(「JupyterLab を開く」ではありません)

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

Jupyter ノートブックのダウンロード

こちらの図のような Jupyter 環境がブラウザの新しいタブで開いたら、右上にある 「New」 をクリックし、出てきたメニューの一番下にある 「Terminal」 を選択します。

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

すると、ブラウザの新しいタブでこのようなターミナルが開きます。

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

ここで、以下のコマンドを実行して、Jupyter ノートブックをダウンロードします。

cd SageMaker; wget https://d1.awsstatic.com/Developer%20Marketing/jp/magazine/sample/cat-classifier.3ecffbf1a9224b094348fa0945886047cbf53d17.ipynb -O cat-classifier.ipynb

こちらのようなログが表示されていれば、ノートブックのダウンロードは成功です。ターミナルのタブを閉じて、Jupyter のファイルブラウザのタブに戻りましょう。

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

こちらの図のように、先ほど空っぽだったところに「cat-classifier.ipynb」が追加されました。「cat-classifier.ipynb」をクリックしてノートブックを開きます。ファイルがない場合、一つ前の手順に戻り、ターミナルをもう一度開き、コマンドを実行してノートブックをダウンロードしてください。

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

Jupyter ノートブックの実行

この図のようなノートブックが開きます。いくつかみなさまの環境に合わせて変更が必要ですが、こちらを上から順番に実行していくと、猫を見分ける機械学習モデルを作ることができます。

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

<注意>

作ったばかりの新しい AWSアカウントを使用する場合など、ノートブック実行中に ResourceLimitExceeded というエラーが出ることがあります。その場合は サポートセンター から 「ケースの作成」 をクリックしたのち 「サービス制限の緩和」を選択し、以下の設定でケースを作成します。

  • 制限タイプ: SageMaker
  • リージョン: 米国東部(バージニア北部) ※実際に使用するリージョンを選択してください
  • リソースタイプ: 学習実行時にエラーが出た場合は「SageMaker のトレーニング」、推論時にエラーが出た場合は「SageMaker のホスト」
  • 制限: 使用するインスタンスタイプ
  • 申請理由の説明: ハンズオンで使用するため、など

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

みなさまの環境に合わせて変更が必要な箇所はこちらです。そのほかは、ノートブックに記載されている解説を見ながら実行していくだけです。

1. 初期設定

Amazon SageMaker Ground Truth でラベリングした結果の output.manifest が保存されている S3 パスや、ラベリングジョブ名など、みなさま独自の情報をはじめに設定します。

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

2. 推論画像の準備

学習させた画像分類モデルを使って猫の写真を見分ける際にどの写真を使うかは、みなさまのお好み次第です。お好きな写真を使って推論してみてください。

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

かわいい猫の写真で癒されつつ楽しんでいただけたら幸いです。
ノートブックを全て実行し終わったら、またこの記事に戻ってきて、リソースの削除を行ってください。

 リソースの削除

使用したリソースの中には、削除しない限り課金が続くものがあります。料金をゼロにするためには、以下のリソースの削除を行います。
Amazon SageMaker の推論用エンドポイントの削除
 
Amazon SageMaker コンソールの左側のメニューから「エンドポイント」をクリックし、削除したいエンドポイントを選択します。上にある「アクション」から「削除」を選択するとエンドポイントを削除することができます。

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

Amazon SageMaker のノートブックインスタンスの停止と削除

ステータスが InService になっているノートブックインスタンスをいきなり削除することはできないため、ノートブックインスタンスを停止させ、その後削除します。ノートブックインスタンスは停止の状態から再度起動させることが可能ですが、一旦削除してしまうと同じノートブックインスタンスを使用することはできず、保存していたデータなども全て削除されますのでご注意ください。

Amazon SageMaker コンソールの左側のメニューから「ノートブックインスタンス」をクリックし、削除したいノートブックインスタンスを選択します。上にある「アクション」から「停止」を選択し、ノートブックインスタンスのステータスが Stopped になったら再度「アクション」から「削除」を選択するとノートブックインスタンスを完全に削除することができます。
 

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

S3 バケットの削除

このハンズオンでは、「sagemaker-us-east-1-[AWS Account ID]」 という名前のバケットが作成されます (バージニア北部以外のリージョンを使われた場合は、us-east-1 の代わりにそのリージョン名となります)。S3 のバケット一覧画面で、以下の手順を行なってください。

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

Amazon SageMaker Ground Truth で作成したバケットも不要であれば同様の手順で削除します。

 さいごに

今回は、Amazon SageMaker を使って猫を見分ける機械学習モデルを作る方法をご紹介しました。ハンズオンでは画像分類のビルトインアルゴリズムを使用しましたが、そのほかのビルトインアルゴリズムや機械学習フレームワークを使ってモデルを学習する方法などを知りたい場合は、こちらの GitHub リポジトリにあるサンプルノートブックが便利です。Amazon SageMaker には、機械学習をこれから始める方でも、やり込んでいる方でも便利にお使いいただける機能がたくさん用意されているので、これを機会にぜひ使ってみていただければ幸いです。 


🐱参考情報

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 ステップでアカウント作成できます
無料サインアップ ≫
ご不明な点がおありですか?
日本担当チームへ相談する