[アドカレ2024]「SageMaker Canvas」を使ってノーコードでサンタクロース判別モデルを作ってみた

はじめに

お疲れさまです、寺井です。

ヤバい……。今年が終わる……………
12月って本当にあっという間に過ぎていきますね……😇

間もなくクリスマスです!!ということは…?
サンタが来るぞ~~~!!!🎅🎄✨️



でもやってきたのが本当にサンタクロースなのか、そうでないかを判別するのって結構難しいですよね??

というわけで、画像からサンタか否かを判別するモデルを作成してみることにします!!!💪

準備

トレーニング・テストデータの準備

「Kaggle」という機械学習を学ぶ人のためのプラットフォームがありまして、世界中のユーザーが提供する無料のデータセットをダウンロードしたりできます。
Kaggle: Your Machine Learning and Data Science Community

今回はここから、『IS THAT SANTA? (Image Classification)』という、データセットを使わせていただきます。
中には、トレーニング用・テスト用のサンタクロースの画像とサンタクロースではない画像が大量に用意されています。

サンタクロースデータセット『IS THAT SANTA? (Image Classification)』のリンク


このデータを、事前に「S3」にアップロードしておきます。

フォルダ構造はこんな感じです。

is_that_santa
├── test
│   ├── santa
│   └── not-a-santa
└── train
    ├── santa
    └── not-a-santa

SageMaker Canvasの準備

公式ドキュメントや、去年の今頃に書いた私のブログを参考にしていただき「SageMaker Canvas」を起動できる状態にしておきます。

参考:[アドカレ2023]「Amazon SageMaker Canvas」を使って「Amazon Bedrock」から使える基盤モデルを複数並べて俳句を作らせてみた - DENET 技術ブログ

参考:Amazon SageMaker Canvas の使用を開始する - Amazon SageMaker

やってみる

SageMaker Canvasの起動

「SageMaker Canvas」のページから、[Canvasを開く]

開くまで数分かかります。


データセットの作成

画面左メニューにある[Datasets]から[Import data]→[Image]

準備の際にアップロードした「S3」を選択して、データセットを作成
(元データのままだと枚数が非常に多いので、検証のため若干枚数を減らしたりしてます)

is_that_santa
├── test
│   ├── santa
│   └── not-a-santa
└── train           ←データセットとして指定したフォルダパスはココ
    ├── santa
    └── not-a-santa

「train」配下を学習させることで、あとから「test」配下の画像を使って、モデルのテストができます。

※注意:「S3」のキーに、使用できない文字列(半角スペースとか?)が入ってるとエラーで登録できないので注意が必要です。🙅
(ダウンロードしたものそのまま使ったらコケました…😔)
✕:is that santa
◯:is_that_santa

モデルの作成:Select(データセットの作成)

先ほど作成したデータセットを選択し、[Create a model]からモデルを作成

今回は画像の分類を行うので、[Image Analysis]を選択して作成

フォルダ構造のお陰でラベル分けされている状態になっています。
助かる~~~~~

モデルの作成:Build(モデルのビルド)

データに特に問題もなかったので、そのまま[Quick Build]

ビルド処理には大体10~20分ぐらいかかりました。

モデルの作成:Analyze(精度の可視化)

ビルドが完了すると、モデルのスコア(どれだけ正しく判別できるか)が見られるページに遷移します。

The model predicts the correct labels 85% of the time.

→今回のモデルは約85%の正確さを誇っているようです。この短時間でそれだけの精度が出せるならエエ感じな気がしますね

[Heatmap]を有効化すると、モデルがラベルを区別するために使用した領域が見えたりします。面白い

[Scoring]のタブからモデルの正確さなど様々な指標を見ることができ、[Advanced metrics]からは更に詳細なスコアが見られます。

『これは “混同行列”…ッッ!読める………読めるぞ…!!!!』

最近AWS認定の「AI Practitioner(AIF)」の勉強をしているお陰で、若干読み取ることができます。
ありがとうAIF……🙏

今回のケース “サンタか否か” を踏まえて、簡単に説明しておきます。

[青い領域](モデルの予測が正解しているケース)
・True Positive (TP)・・・サンタと予測して、実際にサンタだった
・True Negative (TN)・・・サンタではないと予測して、実際にサンタではなかった

[赤い領域](モデルの予測が不正解だったケース)
・False Positive (FP)・・・サンタと予測して、実際にはサンタではなかった
・False Negative (FN)・・・サンタではないと予測して、実際はサンタだった

今回は、サンタをサンタではないと予測してしまうこと(FN)が0だったようで、このお陰でサンタを取り逃がすことが無さそうです!
やったね!🤜🎅🤛

モデルの作成:Predict(実際に予測させる)

[Predict]へ進み、実際にテストデータ等を用いて、モデルに予測させてみます。
データセットを作成したときと同じように、「S3」から予測させるデータを選択します。

ほぼ100%の確率でサンタ判定できています!!👏👏👏

最新の「Nova Canvas」で作成した画像でも完璧👍️

全くサンタではない画像を与えたところ、こちらも無事 サンタではない と判断できていました。

ちょっとサンタっぽい場合は、若干サンタな気がしてるモデルちゃん可愛い。

感想・まとめ

さすが「SageMaker Canvas」!!
画像分類の機械学習モデルを、ノーコードで簡単に作成できちゃいました!!!

クリスマスまでにこのモデルを作成しておいて、サンタを判別できるようにしておきましょう✊️

では皆さん良いクリスマスを~~~🎄

返信を残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA