Amazon Rekognitionのコンテンツモデレーション機能を使ってみた
データアナリティクス事業本部 機械学習チームの鈴木です。
画像に対してAmazon Rekognitionのコンテンツモデレーション機能を使ってみたので、使い方や印象をまとめました。
この記事の内容
コンテンツモデレーションは、画像などのコンテンツが適切かどうかをチェックするための作業です。
サービスの運営では、意図しないコンテンツを自サイトに掲載してしまったような場合に、サイトの印象が影響を受けてしまったり、法規制に違反してしまったりすることがあるかもしれません。
例えばAmazon Rekognitionのコンテンツモデレーション機能は、画像および動画に対してそのようなことがないようにするチェックを効率化することに役立ちます。
Amazon Rekognitionのコンテンツモデレーション機能については、DevelopresIOでは過去にもいくつか記事が書かれていました。
今年の5月に画像と動画に対するコンテンツモデレーションの精度が向上したアナウンスがあったので、改めてどのような感じで使えるのか確認してみました。
Amazon Rekognitionのコンテンツモデレーション機能について
DetectModerationLabelsアクションを使ってラベル付けします。
ラベルの種類は、以下の開発者ガイドの『Using the image and video moderation APIs』ページのうち、Label Categories表を確認すると分かります。
まずはこの表に自分が検出したいラベルがあるのかを確認するとよさそうです。
アクション実行時には、MinConfidence
値を調整可能です。このラベルにより、ラベル検出時の最小の信頼度を指定できます。デフォルトは50%ですが、これ以上下げてしまうと誤検出の可能性が高くなってしまうため、推奨はされていません。
コンテンツモデレーションのための機能の料金は、東京リージョンでは記事執筆時点で画像1枚あたり0.0013USDからです。1USDあたり140円とすると、1画像あたり0.19円程度です。
ご興味があれば、後ほど紹介するAWSコンソールのデモ画面で気軽に試してみるのがよいと思います。
使ってみた
AWSコンソール
Amazon Rekognitionのコンソールより、デモ
> 画像の節度
から利用できます。ドラッグアンドドロップで非常に簡単に画像をアップロードして確認できました。
以下はコンソールから確認できたサンプルの画像です。画像はぼかしがされるので安心して結果を確認できます。海岸沿いで水着の人が写っている画像のため、それにあった結果が表示されています。
AWS CLIから
rekognitionのdetect-moderation-labels
で実行できます。なお、AWS SDKから利用することも可能です。
AWS CLIの場合、手順としては以下のようになります。
- S3に画像をアップロードする。
- 手順1でアップロードした画像を指定して、
detect-moderation-labels
を実行し、レスポンスを確認する。
あるバケットにrekognition/sample.png
というキーで画像をアップロードし、MinConfidence
値を60にしたときの実行は以下のようにできました。
aws rekognition detect-moderation-labels --image "S3Object={Bucket=画像をアップロードしたバケット名,Name=rekognition/sample.png}" --min-confidence 60
レスポンスの形式は、開発者ガイドのDetectModerationLabelsのページのレスポンスの構文から確認できます。
考察
ラベルの判定基準について
デモ画面で画像に対してラベル付けを試す中で、「ユーザー側の想定しているユースケースと、Amazon Rekognitionのラベル付け結果が合致するか」は重要な印象を受けました。
例えば、サンプル画像にあるようなSuggestive
な画像はかなり直感通りに検出され、Violence
はある程度露骨な画像が必要に印象を受けました。
Violence
ラベルは、「格闘技の試合で流血した選手が互いに戦っている」とか「中世の騎士の格好をした人が剣で戦っている」くらいの画像までいくと、Graphic Violence Or Gore
やWeapon Violence
とラベル付けされました。自分が検出したい画像や動画が、ラベル付けの基準に入るかどうかは試してみる必要があります。
また、過去のブログで試しているように、「拳銃」や「日本刀」が大きく写った画像に対してAPIを実行すると、武器としてViolence
のラベルを提案してくれました。
一方で、子供向けのおもちゃの武器の画像であれば、試した限りではラベルは付きませんでした。ECサイトに掲載する画像についてラベルづけする際はかなり有効そうです。
なお、武器は大きく写っていないといけないかというとそういうわけでもなく、例えば映画のワンシーンでよくあるような「銃を構えた人」の画像であれば、Violence
のラベルを提案してくれる印象でした。当然ですが、写っている物体の種類にも依存すると考えられます。
APIからラベル付けしたい画像をデモ画面で検証してみて、自サービスでより効果を発揮しそうか肌感を掴むとよいかもしれません。
ラベル付け性能の向上の工夫について
APIを使ったラベル付け性能の向上に、「対象となる部分を切り出す」「画像を鮮明にする」といった一般的な画像分類・物体検出に対するアプローチは有効だと思います。
例えばSuggestive
にラベル付けされる画像は、比較的直感とあっていたことを書きましたが、もちろん対象が小さく写っているとラベル付けされないケースがありました。
具体的には、夏場のニュース番組であるような「ビーチに大勢の人が小さく映っている画像」であればラベルが付かないものの、何人か人のところだけ切り抜いたものでAPIを実行するとSuggestive
にラベル付けできるというような工夫です。
Rekognitionでは物体検出も可能なため、下記ブログのように画像に写った物体を検出し、どの部分かを取得することが可能です。どの部分に写っているかが分かれば切り抜きは容易です。
また、確実に位置を確認しなくても、全体画像に加えてランダムに何箇所か切り抜いてそれらについてもラベル付けをするような工夫でもよいかもしれません。
加えて、Amazon Augmented AI(A2I)を使うことで、簡単に人間によるレビューの環境を整えることも可能です。
A2IとRekognitionの連携については、以下のSageMakerのデベロッパーガイドを参照ください。
また、以下のリソースのDeep Dive Seriesにビデオがあります。
最後に
Amazon Rekognitionのコンテンツモデレーションの機能の利用方法の概要と考察でした。
AWSコンソール・AWS CLI共に非常に簡単に利用できたので、ぜひ自環境で試してみて、サービスに取り入れられそうかをご確認頂ければと思います。
参考になりましたら幸いです。