[AWS] Rekognitionで”けしからん”画像か判定する

  • このエントリーをはてなブックマークに追加
  • LINEで送る

前回試したAmazon Rekognitionには、画像に不適切な内容が含まれるかチェックする機能が搭載されています。

今回もNode.jsからRekognitionを利用するコードを書いてみます。SDKを利用してRekognitionへ画像を送ると0〜100の間でどの程度けしからんか判定してくれます。

- Sponsored Link -

最終的なソースコード

最終的なコードをGitHub上にアップしました。サンプル画像はBANされちゃう可能性があるので残念ながらつけることができませんw 画像検索するなどして各自でご用意ください。

前提

前回のお話

理屈や実行環境は前回とほぼ同じです。まずはこちらの内容をざっくりご覧ください。

準備

前回と同様にIAMを設定、.envにIAMのアクセスキーIDとシークレットなどを記載、Node.js用のプロジェクトを作成してください(今回はcanvasモジュールは利用しません)

実際に解析してみる

クライアント

前回との違いは呼び出すメソッドがdetectLabels()から.detectModerationLabels()になり、一部パラメーターの指定が変わるだけです。

detectModerationLabelsは画像内の「けしからん」箇所を複数見つけてその一覧を返してくれます。20行目のMinConfidenceにはどの程度「けしからん」か0〜100の数値を指定します。確実性の低い物は返さない足切り(フィルタリング)が行えます。

const AWS = require('aws-sdk')
const fs = require('fs')

// .envの内容を環境変数化
require('dotenv').config()

// IAM設定
AWS.config.update({
  accessKeyId: process.env.AWS_ACCESS_KEY_ID,
  secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY,
  region: process.env.AWS_REGION
})

// Rekognitionに渡す値を準備
const client = new AWS.Rekognition();
const params = {
  Image: {
    Bytes: fs.readFileSync('sample.jpg')   // 解析対象の画像データ
  },
  MinConfidence: 60
}

// Rekognitionで解析
client.detectModerationLabels(params, (err, response) =>{
  // エラー時
  if (err) {
    console.log(err, err.stack)
  }
  //解析結果を表示
  else {
    const str = JSON.stringify(response, null, 2)
    console.log(str)
  }
})

レスポンス

レスポンスはJSONで返ってきます。Nameにどういった理由でけしからんか、Confidenceは的中率のようなものですね。100に近いほど確実にけしからん画像と言えます。

{
  "ModerationLabels": [
    {
      "Confidence": 99.85330200195312,
      "Name": "Explicit Nudity",
      "ParentName": ""
    },
    {
      "Confidence": 99.85330200195312,
      "Name": "Illustrated Explicit Nudity",
      "ParentName": "Explicit Nudity"
    }
  ],
  "ModerationModelVersion": "4.0"
}

この例だと99%けしからん画像と判定されたことになります。

参考ページ

コメント

感想やご質問などお気軽にどうぞ。広告が表示されている場合は下にスクロールしてください。投稿にはSNSへのログインが必要です。

このブログを応援する

お寄せいただいたお気持ちは全額サーバ代や次の記事を執筆するための原資として活用させていただいております。この記事が参考になった場合などぜひご検討ください。

PayPal(ペイパル)
PayPalで300円支払う
※金額は任意で変更できます。
※100円でも泣いて喜びますw
※住所の入力欄が現れた場合は「no needed」を選択ください
これまでのご協力者さま
- Sponsored Link -