Amazon Web Services ブログ

Amazon Rekognition のカスタムモデレーションを利用して独自のモデルで不適切なコンテンツを検出

画像や動画などのコンテンツを自社サービスのユーザーに共有・公開するとき、肌の露出が多い画像や暴力的な画像など、不適切なものを取り除きたい場面は多くあります。特に、ユーザーが生成したコンテンツを他のユーザーに公開するときや、生成 AI が作成したコンテンツを広く公開するときには、コンテンツの品質を担保することは重要です。しかし、画像や動画の確認を全て人力で行うのは、コンテンツの量が膨大になるほど時間がかかってしまいます。そんなときに、Amazon Rekognition のモデレーション機能を使えば、不適切なコンテンツを検出できます。

このブログでは、Amazon Rekognition カスタムモデレーションを用いて、モデレーション機能を自身のワークロードにカスタマイズする方法をご紹介します。ユースケースやカスタムモデレーション機能の利用方法、実際に試してみた際の精度をご紹介します。

Amazon Rekognition のカスタムモデレーションとは?

Amazon Rekognition は、機械学習を使用して画像や動画の分析を行えるサービスです。物体やシーンの検出、人の顔の検出や比較、動画におけるシーンや動線の分析など、様々な分析にお使いいただけます。そのなかでもモデレーション機能は、画像や動画に含まれる不適切なコンテンツを検出するものです。こちらのページにあるように、検出対象となるのは肌の露出や暴力などのカテゴリーです。検出時にはカテゴリーのタグが付加されるので、ニーズに応じて不適切なカテゴリーのコンテンツを選択的に検出できます。

なお、Amazon Rekognition のモデレーション機能には、2024 年 2 月にアップデートがありました。新しい検出対象のラベルが追加されたほか、モデルの精度が向上し、アニメーションやイラスト付きのコンテンツを識別する新しい機能が導入されました。2024 年 2 月時点では、新しい検出対象のラベルは英語版のドキュメントにまとめられています。

Amazon Rekognition の基本的な機能は、自身でモデルを用意しなくても分析対象のデータさえ用意すれば利用できます。しかし、追加学習用のデータを用意すれば、自身のワークロードのためのカスタマイズもできます。そのなかでもカスタムモデレーションは、不適切なコンテンツの検出を自身でカスタマイズできる機能です。

Amazon Rekognition ユースケース

Amazon Rekognition のカスタムモデレーションが使えるユースケースとして、管理者が直接作成したものでない画像が広く公開されるアプリケーションが考えられます。具体的には下記のような例が挙げられます。

  • ユーザーが投稿した画像を他のユーザーが閲覧できる
    • ソーシャルネットワーキングサービスの投稿
    • ユーザー登録時のアイコン
  • 生成 AI が生成した大量の画像をユーザーに公開・配布する
    • 生成 AI を利用したゲームやエンターテインメント
    • AI による画像変換プラットフォーム

このようなときに、広くユーザーに公開されるのが望ましくないコンテンツには下記のような例があるでしょう。もちろん、何を公開していいかはユースケースにも依存します。

  • 有名キャラクターなど著作権・肖像権を侵害するコンテンツ
  • 性的なコンテンツや暴力的なコンテンツ
  • タバコやアルコールなど対象年齢や見せ方によっては倫理的に不適切となりうるコンテンツ
  • 競合他社のロゴなど自社製品として望ましくないコンテンツ

ここからは、このそれぞれについて、Amazon Rekognition をどのように利用できるか紹介していきます。

性的なコンテンツや暴力的なコンテンツ

このようなコンテンツは、Amazon Rekognition のデフォルトのモデレーション機能を用いれば検出できます。しかし、デフォルメされたイラストや、独特なタッチで描かれたイラストなど、コンテンツによっては Amazon Rekognition が十分な精度で検出できないかもしれません。この場合の対応策は大きく 2 種類考えられます。1 つ目は、検出のしきい値を下げる方法です。Amazon Rekognition のモデレーションでは、モデルがどれくらいの確度で不適切なコンテンツだと予想した場合にラベルを付与するかのしきい値を、自身で決めることができます。このしきい値を下げたうえで、検出されたコンテンツは人力で二重に確認するという方法が取れます。そして 2 つ目の方法が、カスタムモデレーションの利用です。デフォルトの機能でうまく検出できなかった画像を入力して学習させることで、モデルをカスタマイズできます。

タバコやアルコールなど対象年齢や見せ方によっては倫理的に不適切となりうるコンテンツ

タバコやアルコールも Amazon Rekognition のデフォルトのモデレーション機能の検出対象に含まれます。しかし、場合によっては常に対象のコンテンツを規制したくないこともあるでしょう。その場合には、デフォルトのモデルを利用しつつ、モデレーション機能の検出のしきい値を上げることが解決策になることもあるでしょう。しかし、低いしきい値で検出されるものが規制したいものであるとは限りません。そのような場合には、特定のケースだけを規制するために、カスタムモデレーションによるモデルのカスタマイズが使えます。

有名キャラクターなど著作権・肖像権を侵害するコンテンツ

不特定のコンテンツの著作権侵害に対応したい場合は、Amazon Rekognition のモデレーション機能では対処できません。ただし、具体的なユースケースによっては Amazon Rekognition の他の機能が使える可能性はあります。例えば、特定のキャラクターを検出して公開を防止したい場合は、Amazon Rekognition のカスタムラベル機能を用いれば解決できます。これは、検出対象オブジェクトのラベル付き画像を用意して、Amazon Rekognition の物体検出機能をカスタマイズするものです。また、肖像権の侵害を防ぎたい場合には、Amazon Rekognition の顔検出機能を用いることができます。さらに、有名人の顔検出をしたい場合は、Amazon Rekognition の有名人認識機能が役に立ちます。

なお、Amazon Bedrock 上のモデル Amazon Titan Image Generator が生成した画像で著作権の請求が生じた場合は、Amazon は上限なしの知的財産補償を提供します。Amazon Rekognition とは直接関係ないですが、Amazon Titan Image Generator を利用する場合は参考にしてください。

競合他社のロゴなど自社製品として望ましくないコンテンツ

この例は、有名キャラクターの映り込みを防ぐ例と似ています。不特定のコンテンツの検出は難しいですが、対象となるコンテンツを絞れば検出は可能です。ロゴなど特定のオブジェクトを検出したい場合はカスタムラベルを利用すれば検出でき、風景など画像全体にわたって検出したい場合はカスタムモデレーションが利用できます。

Amazon Rekognition カスタムモデレーションを使ってみる

この章では、Amazon Rekognition カスタムモデレーションの使い方をご紹介すると同時に、実際に使ってみた際の精度を確認します。今回は架空のシナリオとして、A 国におけるギャンブル規制を想定してみます。A 国では違法なギャンブルとして、「ゆで玉子を見せてそれが固茹でか半熟か当てる」という「たまごギャンブル」が流行っています。そこで、A 国のあるサービスでは、このギャンブルを想起させる画像は規制したいと考えています。もちろん一般的にはそのようなギャンブルは存在しないので、Amazon Rekognition のデフォルトのモデレーション機能では「たまごギャンブル」は規制対象になっていません。そこで、このブログでは Amazon Rekognition カスタムモデレーションを利用して「たまごギャンブル」を検出することにします。
今回は「たまごギャンブル」に関係する画像として、ゆでたまごを不適切なコンテンツとして検出します。ゆでている途中や殻を剥く前の生玉子も、今回の検出の対象となります。一方で、割った生玉子や目玉焼きなど、「たまごギャンブル」とは直接関係ない画像は、検出対象ではありません。実際の画像の例は、このあとの「画像の準備」の項でお見せします。

画像の準備

まずは画像を準備します。用意する画像についての推奨事項は Amazon Rekognition のデベロッパーガイドに書かれています。モデレーション機能をカスタマイズする前に、Amazon Rekognition のカスタマイズしていないデフォルトのモデレーション機能を用い、検出精度を確認してください。このとき、本当は検出対象としたいのにデフォルトの機能では検出できなかった画像を、「偽陰性」の画像と呼びます。逆に、本当は検出してほしくないのにデフォルトの機能で検出されてしまった画像を、「偽陽性」の画像と呼びます。高い精度を得るためには、偽陽性と偽陰性の画像を含めて、下記の条件を満たすような画像データセットを準備することが推奨されています。

  • デフォルトで偽陽性が出る画像をトレーニング用に 20 枚以上
  • デフォルトで偽陰性が出る画像をトレーニング用に 50 枚以上
  • テスト用の画像を 20 枚以上
  • デフォルトで誤った予測が出る画像だけでなく正しい予測が出る画像も用意する

今回は、デフォルトでは不適切なコンテンツの検出に失敗する偽陰性の画像に焦点を当てます。そのため、デフォルトで偽陰性が出るような「たまごギャンブル」関係の画像 70 枚以上と、ギャンブルと関係ないただの玉子の画像を登録しておきます。一方で、今回の「たまごギャンブル」のシナリオでは、デフォルトで偽陽性の画像は存在しません。そのため、偽陽性の画像は用意しません。

用意した画像の登録方法は複数ありますが、今回は Amazon S3 にバケットを作成してデータを入れておきます。下記は検出対象の画像例です。

ギャンブルに使われるゆで玉子を作っている画像

ディーラーがゆで玉子を取り出している画像

一方で、割った生玉子や目玉焼きは、今回のギャンブルとは関係ありません。下記が関係ない画像の例です。

生玉子

目玉焼き

プロジェクトの作成

Amazon Rekognition カスタムモデレーションでは、カスタム内容ごとに「アダプター」を定義します。そして、複数のアダプターは 1 つのプロジェクト内で管理できます。したがって、まずはプロジェクトを作成します。Amazon Rekognition カスタムモデレーションの画面において、下の画像の「プロジェクトを作成」をクリックします。

続いて、プロジェクト名とアダプター名を決めます。

その後、モデルのカスタマイズに利用する画像をアダプターに登録します。今回は、先ほど Amazon S3 にアップロードした画像を利用します。「S3 バケットから画像をインポートする」を選択したあと、該当バケットの URI を入力します。

最後に、テストデータの提供方法を選びます。「自動分割」を選択すると、アップロードした画像を自動でトレーニングデータとテストデータに分けてくれます。今回はこちらの自動分割を選択します。ここまでできたら、「プロジェクトを作成」をクリックします。

画像のラベルづけ

続いて、画像にモデレーションのためのラベルを付加します。この作業は Amazon Rekognition の UI 上で進められます。今回は、ゆでたまごに関係する画像にはすべて「Gambling」のタグをつけていきます。

一方で、ゆでたまごには関係ない画像には「Safe」の画像をつけていきます。今回、割った生玉子は規制の対象外です。

モデルのトレーニング

上記で登録したラベルは、ドラフト状態になっている間は保存されていません。「ドラフトを保存」をクリックして
保存します。その後、「アダプターをトレーニング」をクリックします。

遷移後の画面で再度「アダプターをトレーニング」を押し、トレーニングを開始します。なお、この画面でトレーニングの際の「信頼度のしきい値」を変更することもできます。信頼度のしきい値を高く設定してトレーニングすると、不適切な画像を敏感に検出する代わりに、適切な画像も誤って検出してしまう可能性が上がります。つまり、トレーニング後の偽陰性が減り、代わりに偽陽性が増えやすくなります。今回はデフォルトの 50 のままで進めます。今回は、130 枚の画像を登録して 22 分でトレーニングが終了しました。

アダプターの精度確認

トレーニングが終わったら、アダプターの精度を確認してみましょう。アダプターの詳細画面で、あらかじめ登録したテスト画像に対する精度を確認できます。

この画面では、偽陽性と偽陰性それぞれの改善率が書かれています。この改善率は、カスタムしていないデフォルトのモデレーション機能による検出精度と比較した際のものです。今回のアダプター作成の目的は、Rekognition のベースモデルで偽陰性が出る「たまごギャンブル」の画像を陽性として検出したいというものでした。ですので、偽陽性は元々存在せず、偽陽性の改善率が 0% なのは問題ありません。一方、偽陰性の改善率が 5% と低くなっていることは問題です。「ラベルごとのパフォーマンス」の欄を見ると、ギャンブルのラベルがついている画像 21 枚のうち 20 枚は検出できていません。

このように精度が低い際の解決策として、画像をより多く用意し再度トレーニングすることが考えられます。しかし、場合によっては、このアダプターのままでも精度を上げられる方法があります。それは、信頼度のしきい値の変更です。今回は偽陰性を検出したいので、トレーニングの際の信頼度のしきい値を上げるか、テストの際の信頼度のしきい値を下げることによって、偽陰性となる画像をより敏感に検出できます。試しにアダプターの詳細画面で信頼度のしきい値を 45% に下げると、「偽陰性の改善」の項が一気に上がります。なお、これでも偽陰性が改善されていない画像は残っています。また、現実的な問題では、アダプターにより偽陽性のデータが増えることもあるかもしれません。そのような場合は、適切に予測できなかった画像のデータを重点的に増やしてトレーニングし直せば精度が上がると考えられます。

アダプターの利用

学習したアダプターは、CLI や SDK 経由で利用できます。利用方法はブログ「Announcing Rekogniton Custom Moderation: Enhance accuracy of pre-trained Rekognition moderation models with your data」Amazon Rekognition のドキュメントの DetectModerationLabels の項を参考にしてください。今回は、撮影した画像をランダムに 2 つに分け、それぞれアダプターに入力する画像と入力しない画像としています。前者の画像が 130 枚あるのに対して後者の画像は 52 枚です。この後者の画像で精度を確認してみます。下記は、検出する際の信頼度のしきい値を 45% とした際の結果です。基本的にはうまく分類できていますが、一部、ギャンブルに関するのにアダプターによって関係ないと判定されている画像があります。このような場合は、信頼度のしきい値の変更もしくはアダプターの再学習で対応します。

本ブログでは、Amazon Rekognition のカスタムモデレーション機能についてご紹介してきました。本機能の使い道について議論したうえで、「たまごギャンブル」という架空のシナリオに基づいて実際にカスタムモデレーション機能を利用する方法をご紹介しました。なお、今回の「たまごギャンブルのシナリオ」はひとつの例で、データセットの特性や実際の状況などによって精度は変わります。ユーザーや生成 AI が生成したコンテンツをサービスに組み込むことが増えている昨今、コンテンツのモデレーション機能の必要性は高まっていると考えられます。ぜひ皆様も本機能を試していただけますと幸いです。