前回試したAmazon Rekognitionには、画像に不適切な内容が含まれるかチェックする機能が搭載されています。
今回もNode.jsからRekognitionを利用するコードを書いてみます。SDKを利用してRekognitionへ画像を送ると0〜100の間でどの程度けしからんか判定してくれます。
最終的なソースコード
最終的なコードを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%けしからん画像と判定されたことになります。
参考ページ
このブログを応援する
お寄せいただいたお気持ちは全額サーバ代や次の記事を執筆するための原資として活用させていただいております。この記事が参考になった場合などぜひご検討ください。
同じカテゴリの記事
- [AWS] ECRにDockerイメージをプッシュする
- [AWS] S3へMIMEタイプを自動判定しながらアップロードする – Node.js
- [AWS] Serverless FrameworkでS3にファイルが追加されたらLambdaを起動する
- [AWS] CloudFrontのオリジンを動的に変更する – Lambda@Edge + Node.js
- [AWS] Serverless FrameworkでLambdaをArm64対応する
- [AWS] CloudFront+S3オリジンでindex.htmlを省略する – Lambda@Edge + Node.js
- [AWS] CloudFrontでBASIC認証を行う – Lambda@Edge + Node.js
- [AWS] Comprehendで日本語の感情分析を行う