見出し画像

Amazon SageMaker Canvasを使ってイヌとネコを分類してみた

みなさんこんにちは!
SOMPOシステムズのクラウドエンジニアです。

みなさんはイヌ派ですか?ネコ派ですか?
どっちも派の方もいらっしゃるかもしれませんが、私はイヌ派です!
(ネコちゃんも好きですが、ネコカフェでネコパンチ+ひっかく攻撃されます。)

今回は日々の業務の合間にお勉強も兼ねて(癒しも兼ねて)、AWSの機械学習関連のサービスでイヌネコ画像の分類モデルを作ってみました!


はじめに

機械学習(マシンラーニング)について米粒並みの知識、かつインフラ系のクラウドエンジニアなのでPythonコードもど素人……
ということで、今回はノーコードで画像分類モデルが構築できるAWSサービスのAmazon SageMaker Canvasを使ってやっていきます!


Amazon SageMaker Canvasの特徴

簡単にAmazon SageMaker Canvas(以下Canvas)の特徴をご紹介します。

・ノーコードマシンラーニング
ソースコードの記述が不要で短期間での開発が可能

・すぐに使える基盤モデル
学習済みの機械学習モデルをすぐに利用可能
機械学習モデル:Claude 2、Amazon Titanなど

・マシンラーニングライフサイクル全体をサポート
データ準備、データの探索、カスタムモデルの構築、予測の生成と自動化、リアルタイムエンドポイントへのモデルのデプロイをサポート

つまり、Canvasは誰でも簡単に機械学習ができるサービスなのです!

Canvas用ユーザ作成

それでは画像分類モデルを作っていきましょう!
まずはCanvasを利用するために、専用のドメインを作成をします。

SageMakerのトップページから
[Canvas > SageMakerドメインを作成]をクリックします。

ドメインを作成

今回はお試しで利用するため、[クイックセットアップ]を選択しました。

クイックセットアップ

完了までに2-3分かかりります。

ドメイン作成完了!

作成したドメインでCanvasとStudioが使えるようになります。

CanvasとStudioが起動できるようになりました

データセットの準備

今回使用する画像を用意します。
Canvasは最低2種類の素材(ラベル)に各25枚の画像が必要ですので、ひたすらフリー画像でイヌネコ写真を集め(癒されて)ました。

集めた画像は以下のように3つのフォルダに分けています。
・cats
・dogs
・予測用
「cats」と「dogs」フォルダは学習用で、「予測用」は最後のテストに使う画像が入っています。

catsフォルダ
dogsフォルダ
予測用(ためしにイラストも)

これらの画像をCanvasへセットしてきます!
Canvas起動後のHomeから
[Data Wrangler > Create > Image]をクリックします。

画像のデータセットを作成

データセット名を入力します。
今回はイヌネコの分類なので「animals」にしました。

データセット名入力

[Select folders]を選択し、先ほどの「cats」と「dogs」フォルダをアップロードし、[Create dataset]をクリックします。
※フォルダ毎アップロードすると、フォルダに入っている画像にフォルダ名のラベルがつきます。

学習用の画像をアップロード

数分すると作成したデータセットが「Ready」になります。
これでデータセットを使うことができるようになりました!

データセットの中身を確認すると、「cats」フォルダ内にあった画像全てに「cats」というラベルがついています。

モデルの構築

それではようやく本題の画像分類モデルの構築を行っていきます!

Canvas起動後のHomeから
[My Models > + Create new model]をクリックします。

モデルを作成

モデル名を入力します。
今回はデータセット名に合わせて「animals-model」としました。
また、モデルのタイプで画像分類ができる[Image analysis]を選択します。

モデル名を入力

分類モデルで使用するデータセットを選択します。
今回は先ほど作成したデータセット「animals」を選んでいます。

分類に使うデータセットを選択

モデルの構築をしていきます。
2種類ありますが、今回は[Quick build]を選択しました。

QuickとStandardの違いは以下となっています。
・Quick build:速さ > 精度(15-30分で完了)
・Standard build:速さ < 精度(2-5時間で完了)

モデルを構築

20分程度でモデルの構築が完了しました!
72.7%の確率で正しく予測できるモデルのようです。

~おまけ~
[Standard build]でモデルを構築したら、81.8%の精度のものができました。

モデルの予測

画像分類モデルが構築できたので、実際に予測してみましょう!
予測用にとっておきの柴犬を用意しました。

笑顔の柴犬

モデル構築後の画面から[Predict]をクリックします。

予測を開始!

[Import Image]から予測用の画像をアップロードし、[Create dataset]をクリックします。

「shiba.jpg」をアップロード

数分で結果が出ました!
イヌが85%で予測できましたね。

試しに、いらすとやの画像でも予測してみます。
こたつ付きなのでちゃんと判定してくれるでしょうか、、、?

数秒で結果が出ました。
ネコの可能性が72%、イヌが28%と先ほどの柴犬の写真には劣りますがちゃんとネコと判定してくれました!

満足するまで予測をしたら、必ずログアウトして終了しましょう。

Canvas利用のセッション時間やモデルのトレーニング、モデルを使用した予測に対して課金されますので、ログインしっぱなしは危険です!
詳細はAWSの公式サイトで確認してください。

また、今回構築したもので不要なリソースは削除することをお勧めします。
・SageMaker Canvas用ドメイン([管理者設定 > ドメイン])
・モデル / エンドポイント設定 / エンドポイント([推論])
・S3バケット(S3バケット名「sagemaker」で検索)

さいごに

Amazon SageMaker Canvasを初めて使用してみましたが、みなさんも感じているように、とても簡単に画像分類モデルが作成できました!

今回作成した画像分類モデルは、空港の顔認証システム、ECサイトの画像分類、在庫管理、製品の異常検知など、多くの場面で活用されています。

今後はPythonコードや機械学習の知識を深めて、業務で活用できるようなモデルを作りたいな~と思っています。

#エンジニア #AWS #Sagemaker Canvas #機械学習 #マシンラーニング #画像分類