ちょっと話題の記事

Amazon RekognitionのImage Moderationの精度を試してみた

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

本日Amazon RekognitionにImage Moderationが追加されました。速報は以下ブログをご覧ください。

Image Moderationについて

Image Moderation(DetectModerationLabels)は、画像にアダルトコンテンツが含まれているかどうかを判断するAPIです。分類のカテゴリは大きく二つ、明示的(Explicit Nudity)か暗示的(Suggestive)です。

明示的(Explicit Nudity)のカテゴリには以下の5つの子カテゴリがあります。

  • Nudity ... ヌード
  • Graphic Male Nudity ... 男性のヌード画像
  • Graphic Female Nudity ... 女性のヌード画像
  • Sexual Activity ... 性的な行為
  • Partial Nudity ... 部分的なヌード

ラベルがか暗示的(Suggestive)のカテゴリには以下の3つの子カテゴリがあります。

  • Female Swimwear Or Underwear ... 女性の水着または下着
  • Male Swimwear Or Underwear ... 男性の水着または下着
  • Revealing Clothes ... 衣服が露わになっている

APIの戻り値のうちParentNameを確認することで明示的または暗示的のどちらのカテゴリなのかが判別つきます。またNameを確認することで子カテゴリが分かります。

やってみた

さて、上記カテゴリに対する判定の精度について試してみました。

が!公序良俗的に、または著作権的に、画像そのものをここに記載することは厳しいので、「こんな画像を使ったらこんな判定になりました」というのをお伝えできればと思います。

明らかな女性の裸の画像

{
    "ModerationLabels": [
        {
            "Confidence": 63.13351821899414,
            "Name": "Explicit Nudity",
            "ParentName": ""
        },
        {
            "Confidence": 63.13351821899414,
            "Name": "Graphic Female Nudity",
            "ParentName": "Explicit Nudity"
        },
        {
            "Confidence": 55.100440979003906,
            "Name": "Nudity",
            "ParentName": "Explicit Nudity"
        }
    ]
}

明示的であり、女性のヌードであると判定されました。正確です。

明らかな男性の裸の画像

{
    "ModerationLabels": [
        {
            "Confidence": 80.22523498535156,
            "Name": "Explicit Nudity",
            "ParentName": ""
        },
        {
            "Confidence": 80.22523498535156,
            "Name": "Graphic Male Nudity",
            "ParentName": "Explicit Nudity"
        }
    ]
}

明示的であり、男性のヌードであると判定されました。こちらも正確ですね。

雲竜型で土俵入りする千代の富士

{
    "ModerationLabels": [
        {
            "Confidence": 57.75239562988281,
            "Name": "Explicit Nudity",
            "ParentName": ""
        },
        {
            "Confidence": 57.75239562988281,
            "Name": "Nudity",
            "ParentName": "Explicit Nudity"
        }
    ]
}

明示的なヌードであると判定されましたが、57%と低い数値になっています。ただ性別は判定出来なかったようです。

リングインするWWEのステーシー・キーブラー

{
    "ModerationLabels": [
        {
            "Confidence": 73.96198272705078,
            "Name": "Suggestive",
            "ParentName": ""
        },
        {
            "Confidence": 73.96198272705078,
            "Name": "Female Swimwear Or Underwear",
            "ParentName": "Suggestive"
        }
    ]
}

リングコスチュームが水着または下着と判定されました。WWEは露出が高めなので正確に判定できています。

ストリートファイター5のララ

{
    "ModerationLabels": [
        {
            "Confidence": 68.5932846069336,
            "Name": "Suggestive",
            "ParentName": ""
        },
        {
            "Confidence": 68.5932846069336,
            "Name": "Female Swimwear Or Underwear",
            "ParentName": "Suggestive"
        }
    ]
}

ララも露出が高めのキャラクターであるため、水着または下着と判定されました。アニメーションや漫画などの判定も問題無いようです。

お風呂に入っているしずかさん

No moderation labels detectedでした。アダルトコンテンツとは判定しなかったようです。

さいごに

他にも幾つかアニメのキャラクターや人物の画像などを試してみましたが、単に露出が高いもののテレビ放送されているようなものではNo moderationになることが多く、明らかに猥褻なものは全て判定することが出来ました。この判定だけで全てのフィルタリングが出来るわけではありませんが、一助にはなるかと思います。今後はさらに多くのカテゴリが増えていくかもしれませんね。楽しみにしています。