NRIネットコム社員が様々な視点で、日々の気づきやナレッジを発信するメディアです

注目のタグ

    ゼロから始める AWS 生活 ~ Amazon Rekognition をさわってみた ~

    はじめに

    皆さんこんにちは!2025年度新入社員の 福井晃貴 です!
    配属から3カ月が経ち、少しずつ業務に慣れてきたものの、まだまだ学ぶことが多い毎日です。
    配属先では 、Java × Spring Boot での開発に日々奮闘しています!

    今回アプリケーションエンジニア歴1年未満の自分が、AWSのハンズオンを通して感じたこと・学んだことについて共有したいと思います。

    AWSを実際にさわってみようと思った背景

    今年7月、Netcom の新人全員で「AWS Certified Cloud Practitioner」を受験する機会があり、そこで初めて AWS に座学で触れました。勉強を通してサービスの概要は何となく理解できたものの、正直「VPC?」「IAM? それって何?」という状態で、実際の具体的なイメージはあまり掴めませんでした。

    資格取得はもちろん価値あることですが、せっかく学んだ知識を“肩書き”で終わらせるのではなく、手を動かして体感し、自分の血肉にしてこそ、本当の意味があるのではと感じました。

    実際にハンズオンしてみた ~ Amazon Rekognition ~

    一概には言えませんが、実際ハンズオンしてみるのって結構ハードルが高いですよね......私はそうでした。 私の場合、特に次の2つの理由で敷居が高く感じていました。

    ①リソースの消し忘れによる高額請求
    知識が浅いままハンズオンを進めて、もし意図しない請求が来たらどうしよう……と不安でした。

    ②環境構築の壁
    IAMロールの設定などで「これ本当に正しくできてる?」という疑念が拭えず、手を動かすのに躊躇していました。

    そこで私は、この「不安感」を少しでも軽減するために、まず Amazon 公式の初心者向けハンズオン動画に取り組みました。(下記参照)
    https://aws.amazon.com/jp/events/aws-event-resource/ pages.awscloud.com

    AWSのマネジメントコンソールはしばしば UI 変更があるため、動画と同様の UI を追うことに若干苦戦しますが、上記に着手することでリソースの削除など幅広く学習できたので、おススメです!

    さて、次は実際に"自分の手"でハンズオンしてみよう!
    ということで、今回 Amazon Rekognition というサービスを使ってみました~。

    ここからが本番!いよいよ AWS の世界へーー!

    Amazon Rekognition とは

    AWS(Amazon Web Services)の画像・動画分析サービスです。既に数千万枚以上の画像データで機械学習されており、特殊な用途でなければ追加の学習なしで画像や動画を分析できます。

    Amazon Rekognition は、画像と動画の分析機能を持つサービス群の総称で、主に二つのサービスから構成されています。

    Amazon Rekognition Image
    画像を対象に分析を行うサービス

    Amazon Rekognition Video
    動画やストリーミングビデオを対象に分析を行うサービス

    現在身近な活用例は少ないですが、今後、画像・動画分析の可能性を広げる強力なツールになりそうですね。

    docs.aws.amazon.com

    機能面の違い

    「Amazon Rekognition Image 」と「Amazon Rekognition Video 」には、共通機能と固有機能があります。 その一例をご紹介します。

    🔹共通機能
     ・ 顔分析
     ・テキスト検出
     ・有名人の認識
     ・有害コンテンツの検出

    🔸固有機能(Amazon Rekognition Image)
     ・顔の比較
     ・顔の検索
     ・カスタムラベル

    🔸固有機能(Amazon Rekognition Video)
     ・時間軸ラベル検出
     ・人物の動線検出
     

    さまざまな機能があり、ユースケースに応じて柔軟に活用できるのが魅力ですね!

    料金体系

    一番気になるところですよね~。
    どちらのサービスも従量課金制で、使った分だけコストが発生します。ただし具体的な料金には違いがあります!

    • Amazon Rekognition Image
      画像一枚当たり「USD 0.0013 (約2円)」
      ⚠️単一画像に対する複数の API 実行は、複数画像の処理としてカウントされるため注意が必要

    • Amazon Rekognition Video
      動画1分あたり「USD 0.013(約20円)」
      ⚠️ショット検出など一部機能によっては料金が変わるため注意が必要
       

    なお、一年間の無料利用枠も用意されているので、初めて触る際はそちらを活用すると安心です! ※枚数や時間に制限があるため注意しましょう。

    ユースケース

    では、実際に Amazon Rekognition がどのような場面で活用されているのかを見てみましょう。
    さまざまな分野で利用されていますが、主なユースケースを以下に挙げます。

    • Amazon Rekognition Image
      不適切画像モデレーション , OCR(文字認識) , 顔認識による本人確認 など

    • Amazon Rekognition Video
      動画ラベリング, 店舗内の顧客行動分析 など

     

    今回のハンズオンでは....
    下記二つのハンズオンにチャレンジしてみました!

    🪶Amazon Rekognition Imageの「画像モデレーション」

    🪶Amazon Rekognition Videoの「動画ラベリング」
     

    Amazon Rekognition Imageによる画像モデレーション

    まずは Amazon Rekognition Image の機能のひとつ、画像モデレーション を触ってみました。
    実際にコンソール画面から操作し、「どんな分析ができるのか」を確認していきます。

    そもそも画像モデレーションとは?

    画像モデレーションとは、画像の中に含まれる不適切または不快なコンテンツを自動的に検出し、その判定結果を信頼度スコアとして返してくれる機能のことです。

    画像モデレーションの分析フロー(商用利用可能な画像を使用)

    JPEG または PNG 形式の画像をアップロードするだけで、分析処理が自動的に実行され、分析結果は各検出ラベルに対してラベル名と信頼スコアが付与された JSON形式 で出力されます。この時アップロードする画像は、必ず商用利用可能なフリー素材を選定しましょう。

    信頼スコア

    ここで信頼スコアという概念が少し抽象的で難しいですよね...。
    詳細に見てみましょう。

    JSONの結果を見てみると、「この画像には武器が写っている可能性が非常に高い(99.7%の自信)」と示しています。 このように信頼スコアとは、Amazon Rekognitionの"自信メーター"のようなもので、信頼度が高いほど「確信が強い」、低いほど「判断に迷っている」状態を表します。

    ただ、信頼スコアはあくまで「確率的な推定値」なので最終的なコンテンツの"適切/不適切"の判断はユーザー側で行う必要があります。

     

    アップロードするだけで不適切コンテンツを検出できるなんて、驚くほど手軽ですね!
     

    運用を見据えて実現したいこと

    便利な一方で、実際に運用することを考えると次のようなことを実現したいと考えました。

    • 不適切コンテンツ検知時のリアルタイム共有がしたい

    • 分析結果の一元管理をしたい

    • 分析結果の確認を自動化したい
       

    これらを踏まえて、次に自動化・効率化できるようなアーキテクチャ設計に挑戦してみました!
     

    画像モデレーションの自律運用基盤設計

    先述した運用上の課題に対して、今回画像アップロードをきっかけに自動でモデレーション分析を行い、結果をSlackへ通知する仕組みを実装してみました。

    画像モデレーションの自律運用基盤設計

    分析フロー

    ①ユーザーが Amazon S3 に画像をアップロードすると、S3イベント通知によってAWS Lambda関数が自動的に起動します。

    ②AWS Lambda 関数は Amazon Rekognition の提供する API の一つである DetectModerationLabels を呼び出し、画像に不適切なコンテンツが含まれていないか分析します。

    ③分析が完了すると、Slack が提供する機能である Incoming-Webhook 経由で Slack へ通知を送信するため、不適切なコンテンツが検出された場合には即座にアラートを受け取ることができ、迅速な対応が可能になります。

    ④分析後の結果は JSON 形式で Amazon S3 に保存されるため、過去の分析履歴なども一元管理できます。また分析の実行状況やログは Amazon CloudWatch に出力されるため、リアルタイムでAWS Lambdaの処理過程を確認できます。
     

    Slackの通知パターン
      Slack の通知はAWS Lambda 内で3パターン設計しました。

    • ① 適切コンテンツの場合

    • ② 不適切コンテンツの場合

      検出されたラベル情報を付加して通知します。

    • ③ エラーハンドリング

      Lambda 内でエラーが発生した場合(例:画像ファイル名が英数字以外など)に通知を送信します。

     

    信頼スコア閾値による柔軟なフィルタリング設計

    分析結果は Amazon S3 に JSON 形式で保存され、AWS Lambda のコードを通じて ユーザー側で信頼スコアの閾値を自由に設定できる仕組みを実装しました。さらに、コンソール出力では確認できなかった status や timestamp といったメタ情報も JSON に付与しています。

    少し複雑ですよね、、実際に閾値設定の違いによる判定例を見てみましょう!

    • 閾値 70 の場合

      信頼スコアが 70 を超えるラベル(例:「Weapons」)が検出され、status は「不適切」と判定されます。

    • 閾値 99.8 の場合

      信頼スコアが99.8 未満のラベルはすべて除外され、status は「適切」として判定されます。

    このように、信頼スコアの閾値を調整することで、ユーザーは不適切・適切の判断基準を柔軟にコントロール可能です。運用ポリシーや利用シーンに応じて、フィルタリングの精度を自在に設計できる点が大きな特徴です。

     

    この仕組みにより、 「検知 → 通知 → 管理」までの一連の流れを自動化し、 人手を介さずにモデレーション分析の効率化と一元管理を実現できました!!    

    Amazon Rekognition Videoによる動画ラベリング

    動画ラベリングの分析フロー

    次に、Amazon Rekognition Video を使った「動画ラベリング」をコンソール上で試してみました。
    この機能は、動画内のラベル(物体・シーンなど)を非同期で自動検出してくれるものです。
    静止画の分析と同様に、動画をアップロードするだけで分析が実行されるため、手軽に試せます。

    ただコンソール画面から実施する場合、分析可能な動画の長さは最大1分という制約があることが分かりました。 短い動画の分析には便利ですが、長時間動画のラベリングや継続的な処理には不向きです。

    そこで、 より長い動画にも対応できる、動画ラベリングの自動処理アーキテクチャを設計してみました!

    長時間動画ラベリング

    まず動画を分析するには、分析対象である動画を準備する必要があります! (この動画の準備が結構大変でした.....。)

    今回使用した動画サンプル

    • 長さ: 3分 , 30分 , 1時間の三種類

    • 解像度:1920×1080

    • 形式:MP4

    • フレームレート:30fps

    今回使用した動画サンプルは、商用利用可能なフリー素材を選定しました。
    しかし、長時間のフリー動画は入手できなかったため、数秒単位の短い動画を動画結合ソフトウェア(ffmpeg)で複数回結合し、まず3分の動画を作成しました。この際、解像度や形式、フレームレートを統一することで、解析時のエラーや不整合を防止しています。さらに、この3分動画を同様の手順で連結し、30分動画・1時間動画を作成しました。

    長時間動画ラベリングのアーキテクチャ

    長時間動画ラベリングのアーキテクチャ

    分析フロー

    ①Amazon S3 に動画をアップロードするとS3イベントをトリガーにAWS LambdaがAmazon Rekognitionの非同期解析ジョブを開始し、動画内のラベルやオブジェクトを検出します。

    ②ジョブ完了後、Amazon SNS が Lambda に通知を発行し、別の Lambda が結果を収集して Apache Parquet形式で Amazon S3 に保存します。

    ③その後、AWS Glueがデータをカタログ化し、Amazon Athena で SQL クエリによる分析が可能となり、最終的に CSV 形式でエクスポートできるといったフローになります。

    このように、長時間動画の動画解析からデータ分析までを完全にサーバレスで実現できました!!

    JSON形式 VS Apache Parquet形式

    JSON 形式とApache Parquet 形式の比較

    今回の分析結果の保存形式には、JSON 形式ではなく Apache Parquet 形式 を採用しました。 Apache Parquet 形式は、JSON 形式と異なり列指向のデータ構造を持つため、クエリ実行時に必要な列だけを読み込むことができます。これにより、分析処理を非常に高速実行できます。

    また、スキャン対象のデータ量が減ることで、Amazon Athena での分析コストを大幅に削減できるという利点もあります。 今回のように長時間動画を扱うケースでは、分析データのサイズが膨大になるため、大規模データ分析に適したApache Parquet形式の採用が効果的でした。

    JSON 形式は扱いやすい形式だが、大量データ分析では Apache Parquet 形式の方が高速かつ低コストで効率的!

    長時間ラベリング結果を可視化してみよう!

    次に Amazon Athena でクエリを実行し、結果をCSVファイルとして取得したので分析してみました。本来であれば Amazon QuickSight を用いて可視化を行いたかったのですが、今回は Excel を使用して手軽にデータの分析・可視化を行いました。

    長時間動画でもラベルの精度は維持されるのか?
    動画の長さごとに上位10件の検出ラベルを比較してみました。

    いずれの動画長でも上位ラベルに大きな変動は無く、1時間動画でも高い検出精度が維持されていることが確認できました!
     

    各動画長での総ラベル検出数の比較

    次に、各動画長での総ラベル検出数を比較しました。
    当初は、「動画の長さが10倍になれば検出ラベル数も10倍になるだろう」と予想していましたが、実際には比例関係が見られず、非線形的な増加を示しました。この結果から、個人的には Amazon Rekognition側で処理コストや精度維持のために、重複ラベルの制御や検出間隔の最適化により、検出頻度を間引いている可能性があると考えています。ただし、現時点では具体的な原因は特定できていないので、今後の検証課題として残ります。

    まとめ

    画像モデレーションの自律運用基盤設計
    検知から即時通知までを自動化し、分析結果の統合管理を実現する仕組みを構築

    長時間動画ラベリング

    • 検出精度維持の確認
      上位ラベルの変動具合から、長時間動画でもオブジェクトの認識精度が維持されている。

    • 総検出ラベルの非線形性
      個人的には Amazon Rekognition側で重複ラベルの制御や検出間隔の最適化が行われている可能性があると考えるが、詳細な原因究明は今後の課題です。

    最後に

    AWS のハンズオンを通じて、資格勉強で得た断片的な知識を体系的な理解へと少しずつですが、深めることができました!今後、私の本業はアプリケーションエンジニアなので、ハンズオンで得た学びを実務の課題解決に活かしていく視点を持ち続けたいと思います!

     

     

    執筆者:福井 晃貴 2025年度入社のアプリケーションエンジニア
      Japan AWS Jr. Championを目指してます!