この記事は「2025 Japan AWS Jr. Champions 夏のQiitaリレー」の43日目の記事です。
過去の投稿(リンク集)はこちらからご覧ください
【宣伝&リンク集】2025 Japan AWS Jr. Champions 夏のQiitaリレー
はじめに
こんにちは。この記事が Qiita初投稿 になります。
今回は、仕事もITも関係ない何気ない日常会話にてクラウド学習の意義を感じた場面があったので、
会話の中で出てきたサービスである
Amazon Rekognition Custom Labels を使った実装の紹介と、それを通じて感じた想いをまとめます。
背景
私はダイビングや登山、海外旅行が趣味で、友人とよく出かけます。
お互いに撮った写真はストレージサービスで共有していますが、先日の海外旅行での昼食中、友人からこんな一言が。
「写真が大量すぎて振り分けるのが面倒くさい…」
その瞬間、「これ、自分なら割と簡単に実装できるかも」と思いました。
AWSには、機械学習の専門知識がなくてもそれっぽい仕組みを短時間で作れるサービスがあります。
今回はその1つである Amazon Rekognition Custom Labels を使って、写真の自動振り分けを試してみます。
- 友人:SAPのアプリ開発やテストがメイン。クラウド・インフラ知識はほぼゼロ
- 私:数か月前にAWS全冠取得。その過程でRekognitionを知る(触ったことはなかった)
- AWS Jr. Championの活動投稿にも使えそうだったため初挑戦
実装してみた
Amazon Rekognition Custom Labels は、GUI操作だけで画像分類モデルを作れるサービスです。
今回は試験的に、私の趣味である以下2クラスで分類するモデルを作ります。
- 海(sea)
- 山(mountain)
実装のステップ
- S3の作成 / トレーニング・テストデータ配置
- プロジェクトの作成
- データセットの作成
- モデルのトレーニング
- モデルの評価
- 使ってみる
① S3の作成 / トレーニング・テストデータ配置
学習用データをS3に置きます。基本設定はデフォルトでOK
学習用フォルダ構成
dataset/
train/
sea/
mountain/
test/
sea/
mountain/
- 各ラベルごとにサブフォルダを作成し、その中に画像を格納
- 今回は1ラベルにつきトレーニングデータ50枚、テストデータ20枚を用意。
- 構図・環境にバリエーションを持たせると精度UP
実運用を想定したフォルダ構成例
incoming/
classified/
sea/
mountain/
unknown/
-
incoming/
:新規アップロード写真 -
classified/
:推論結果ごとの格納先 -
unknown/
:信頼度が低い、または未分類の写真
② プロジェクトの作成
プロジェクトとは
データセット・モデル・評価結果などをまとめて管理する単位。
手順
③ データセットの作成
データセットとは
モデル学習用の画像群。トレーニング用とテスト用に分けて登録します。
手順
-
今回はトレーニングデータとテストデータを既に分けてS3に格納しているため、「トレーニング+テストデータセットを使用」を選択
-
トレーニングデータを格納したS3のURIを入力して「フォルダ名に基づいて自動ラベル付与」にチェック(チェックを付けると、フォルダ名がそのままラベルになる)
-
バケットポリシーが表示されるので、①で作成したS3バケットにバケットポリシーを設定)
-
テストデータも同様に作成
④ モデルを作成・トレーニング
-
完了後に指標が表示されます。
⑤ 実際に使ってみた
作成したモデルをCLIから呼び出します。
今回はインドネシアと沖縄で撮影した以下写真を推論させてみました。
(テスト・トレーニングに使っていない画像)
aws rekognition detect-custom-labels --project-version-arn "arn:aws:rekognition:ap-northeast-1:xxxxxxxxxxxx:project/Nature-Photo-Labeling/version/Nature-Photo-Labeling.2025-08-13T23.51.33/1755096682406" --image "{\"S3Object\":{\"Bucket\":\"rekognition-photo-label-bucket\",\"Name\":\"incoming/Image - 2025-08-14T003106.207.jpg\"}}" --region ap-northeast-1
結果:
- 1枚目 →
mountain
(93.09%) - 2枚目 →
sea
(80.43%)
良い感じにラベリングしてくれています。
拡張アイデア
実際にストレージに上げて全部自動でラベリングするには、こんな感じのアーキテクチャを考えました。
ストレージサービスのWebhookやAPIと統合して、AWS側はLambdaでRekognition APIを呼び出してラベリングを行うイメージです。
- ストレージサービスのWebhook等でアップロード検知
- Lambda+API Gatewayでモデルを開始、推論実行
- 推論結果に応じてS3へ自動振り分け
- S3イベント通知からLambda起動、ストレージサービスのAPIを呼び出して写真を格納
今回感じたこと
AIが台頭している今、プログラミング知識がなくても「それっぽいもの」を作れる環境は整っています。
でも、「どう作るのか」や「どのサービスを使えばいいのか」を知らなければ、そもそも作る発想すら出てこない、というのを友人との会話で痛感しました。
資格勉強は、深い実装スキルだけでなく「なんとなく知っている技術の引き出し」を増やしてくれると思っています。
その結果、
- 想像の幅が広がる
- 「こんなことが自分でもできる」という発想に至る
という効果があります。
特にクラウドやインフラを専門としない人がクラウドを学ぶことで、業務や趣味に活かせる新しい発想や効率化の方法を思いつくきっかけになると感じました。
- 今は専門知識がなくても「それっぽいもの」を作れる環境がある
- でも「何を使えば作れるか」を知らないと発想が出ない
- 資格勉強はその「発想の種」を増やす
まとめ
- Rekognition Custom Labelsなら初心者でも短時間で分類モデルが作れる
- 実務・趣味の自動化に応用可能
- 資格勉強は「作れる発想」を持つための土台になる