ひとことで言うと
画像と動画を投げると、写っているもの・顔・テキスト・不適切コンテンツを、ラベルと確信度スコアの配列で返すサービスです。ML の知識は要らず、S3 のオブジェクトか直接渡したバイト列を対象にします。
要するに、空港の手荷物X線です。装置がやるのは「何が入っていそうか」と「どれくらい確からしいか」を出すところまで。通すか止めるかの線引きは運営側の仕事で、Rekognition ではそれが MinConfidence と、確信度が微妙な帯を人間に回す設計にあたります。装置は「違法かどうか」を判定しません——公式も、モデレーション API は不適切コンテンツの網羅的なフィルタではなく、CSAM のような違法コンテンツの検出もしないと明記しています。
なぜ生まれたか
公式の説明が珍しく率直で、そのまま試験の考え方になります。UGC のモデレーションを人手だけでやると、品質か速度のどちらかが破綻する。かといってユーザーからの通報を待つ運用は、ブランド毀損が起きてから動くことになります。
Rekognition が解いたのは「機械に全部やらせる」ことではなく、人間が見る量を減らすことです。公式は、ML でフラグ済みの全体の1〜5%程度を人間モデレーターがレビューする形になる、と書いています。この「機械で絞り、人間は残りだけ」という分業がそのまま Amazon A2I との統合になっています。
| 従来の不便 | Rekognition が引き受けた部分 | 残る自分の仕事 |
|---|---|---|
| 全件を人間が見る(コストと速度が破綻) | ラベル付けと確信度スコアの算出 | 「どのラベルを何%で落とすか」のポリシー |
| 通報ベースの事後対応 | アップロード時点での同期判定(画像) | 判定と投稿フローの接続 |
| 自社ドメイン固有の判定が甘い | Custom Moderation のアダプター(自前画像で追加学習) | アノテーションと再学習の反復 |
| 微妙な判定の押し付け合い | A2I への引き渡し(HumanLoopConfig) | 人間に回す条件と、レビュワーの手配 |
何に使うか
| 用途 | 使う API・機能 | 関連ドメイン |
|---|---|---|
| 画像のモデレーション(同期) | DetectModerationLabels | D3 |
| 画像のモデレーション(非同期・バッチ) | StartMediaAnalysisJob / GetMediaAnalysisJob | D3 |
| 保存済み動画のモデレーション | StartContentModeration / GetContentModeration(非同期) | D3 |
| 判定精度の自社データへの寄せ込み | Custom Moderation(プロジェクト+アダプターを学習し DetectModerationLabels に渡す) | D1・D3 |
| 微妙な確信度を人間に回す | HumanLoopConfig で A2I のフロー定義 ARN を渡す | D2・D3 |
| 画像・動画のメタデータ化(検索可能なライブラリ) | ラベル検出・テキスト検出・セレブリティ認識 | D1 |
| 本人確認・なりすまし対策 | 顔比較・Face Liveness(印刷写真・ディープフェイク注入への対策) | D3 |
| 自社固有の物体(ロゴ・製品) | Rekognition Custom Labels | D1 |
| 安全管理 | PPE(保護具)検出 | D1 |
試験でどう問われるか
Rekognition は D3 の「画像・動画側の安全弁」として出ます。 AIP-C01 は生成AIの試験なので、モデレーションの話は Bedrock Guardrails に引き寄せられがちですが、Guardrails が見るのはテキストの入出力です。マルチモーダルなアプリで「ユーザーがアップロードした画像」を止めたい要件が来たら、そこは Rekognition の担当になります。
| 問われ方 | 正解に寄る条件 | 引っかけの選択肢 |
|---|---|---|
| 生成AIアプリでユーザー投稿画像を検閲したい | 対象がテキストではなく画像・動画 → Rekognition の DetectModerationLabels | Bedrock Guardrails(テキストの入出力フィルタ)/Comprehend(テキストの PII・感情) |
| 誤検出も見逃しも許されない審査 | 機械で絞り、確信度が中間の帯だけ人間へ → HumanLoopConfig + A2I のフロー定義 | 「閾値を上げて自動化」だけの案/全件を人間レビューに回す案(コスト要件と衝突) |
| 人間に回す条件をどう書くか | フロー定義の ConditionType に ModerationLabelConfidenceCheck(ラベル名と確信度の範囲)または Sampling(RandomSamplingPercentage) | Rekognition 側のパラメータで人間レビューを制御する案(条件はフロー定義側) |
| 保存済み動画の判定 | 動画は非同期のみ → StartContentModeration → GetContentModeration | DetectModerationLabels に動画を渡す案(画像用) |
| 「自社サービス特有の不適切画像を取りこぼす」 | Custom Moderation のアダプターを自前画像で学習し DetectModerationLabels に渡す | Custom Labels(用途が違う。ロゴ・製品など自社固有の物体検出用)/基盤モデルのファインチューニング |
| 誤検出が多すぎる/少なすぎる | MinConfidence を調整(50%未満は偽陽性が増え、50%超は偽陽性が減る=再現率と適合率のトレードオフ) | 「ラベルの階層を L3 に固定して細かく見る」(公式推奨は L1 か L2 で運用し、L3 は特定概念の除外に使う) |
1問拾える境目: MinConfidence を指定しないときの既定は 50% です。「閾値を設定していないので全ラベルが返る」という選択肢は誤りで、50%未満の検出は落ちています。加えて、返るラベルには TaxonomyLevel(1・2・3)が付き、L1 とその配下の L2 が一緒に返ります。「Explicit Nudity で足りるか、Graphic Male Nudity まで見て絞るか」という粒度の選択がそのまま設問になります。
実務でどう使うか
- A2I 連携は同一リージョンに揃える必要があります。 Rekognition 側のリソースとフロー定義を別リージョンに置くと通りません
- フロー定義の
HumanLoopRequestSourceは文字列が固定です。画像モデレーションならAWS/Rekognition/DetectModerationLabels/Image/V3。ここを間違えると、条件を書いても人間ループが起きません HumanLoopNameはリージョン内で一意かつ小文字。 バッチ処理で連番を振るとき、大文字が混ざって落ちる定番の事故です- Mechanical Turk に流すなら
DataAttributesのContentClassifiersが必須です。PII を含まない旨・アダルトコンテンツを含まない旨の申告なしにはパブリックワークフォースへ送れません GetContentModerationの集計は既定がTIMESTAMPSです。「動画のどの区間が不適切か」を出したいならSEGMENTSを指定します。これを知らないと、1本の動画に対して大量のタイムスタンプ行を自前で畳む羽目になります- Custom Moderation のアダプターには寿命があります。 ステータスに
DEPRECATEDとEXPIREDが存在し、学習済みアダプターを恒久資産として IaC に固定する設計は前提が崩れます
「Rekognition が OK と言ったから安全」は成立しません。公式が明示的に、モデレーション API は不適切コンテンツの網羅的なフィルタではなく、CSAM のような違法コンテンツの検出も行わないと書いています。最終的な適合性の判断は利用者側という前提で、通報経路と人間の判断を残した設計にします。
取り違えやすいもの
| 迷う相手 | 切り分けの一言 |
|---|---|
| Bedrock Guardrails | Guardrails はテキストの入出力を検閲する。画像・動画の中身は Rekognition。マルチモーダルなアプリでは両方要る |
| Amazon Comprehend | Comprehend はテキストの実体抽出・PII・感情。モダリティが違うだけで、役割は近い(前処理の検閲層) |
| Amazon Textract | Textract は文書からの構造化抽出(キーバリュー・表)。Rekognition のテキスト検出は看板・画像内の文字の検出であって帳票理解ではない |
| Rekognition Custom Labels | 自社固有の物体・ロゴ・製品を検出する。不適切コンテンツの精度改善は Custom Moderation のアダプターのほう。名前が似ていて別物 |
| Amazon A2I | Rekognition は判定してスコアを出す側、A2I はそのスコアを条件に人間へ回す側。人間レビューの条件はフロー定義に書く |
| SageMaker AI で自前 CV モデル | 「ML の専門性なしに」「学習データなしに」と書いてあれば Rekognition。学習データとモデル管理の話が要件にあるなら SageMaker AI |
想起チェック
Q1. 生成AIチャットアプリで、ユーザーがアップロードした画像を検閲したい。Guardrails と Rekognition のどちらですか。
Rekognition です。Guardrails が扱うのはテキストの入出力で、画像・動画の中身は見ません。テキストと画像の両方を受けるアプリでは、両方を層として置きます。
Q2. 「確信度 90〜98% の画像だけ人間に見せたい」。この条件はどこに書きますか。
A2I のフロー定義です。CreateFlowDefinition の HumanLoopActivationConditions に ConditionType: ModerationLabelConfidenceCheck でラベル名と確信度の範囲を書き、DetectModerationLabels 側には HumanLoopConfig でそのフロー定義 ARN を渡すだけです。
Q3. `MinConfidence` を指定しなかったときの挙動は?
確信度 50% 以上のラベルだけが返ります。 50% を下回る値にすると偽陽性が増え(再現率が上がる)、上回ると偽陽性が減ります(適合率が上がる)。
Q4. 自社サービス特有の不適切画像の取りこぼしを減らしたい。Custom Labels と Custom Moderation のどちらですか。
Custom Moderation です。自前の画像にアノテーションしてアダプターを学習し、DetectModerationLabels に渡してモデレーション精度を上げます。Custom Labels はロゴや製品など自社固有の物体を検出する別機能です。