이미지가 S3에 저장되면 Amazon Rekognition의 이미지 분석이 자동으로 수행됩니다.
12879 단어 AmazonRekognitionAWS
저장된 이미지로 이미지 분석을 그대로 실시해 얼굴 분석과 부적합한 이미지인지 판정해 보자.
한편 이 기사는 며칠 전 노트에 기고한'결혼식에서 LINE Bot과 이미지 해석으로 여흥을 남겼어요.의 기술적 보완 기사다.
Amazon Rekognition 정보
Amazon Rekognition은 API를 통해 이미지 분석과 애니메이션 분석을 쉽게 활용할 수 있는 AWS 서비스다.
물체 식별(이미지에 나타난 것이 무엇인지), 얼굴 분석, 안전한지 여부에 대한 이미지 분석, 이동선 검사와 OCR 등을 할 수 있다.
구조
다음 그림은 오른쪽 부분만 소개하는 LINE Bot이 포함된 구성도입니다.
S3 -> Lambda
저장 후 자동으로 처리되는 부분은 AWS의 구조에 맡깁니다.Lambda 이미지를 저장하는 S3에 트리거를 추가합니다.
Lambda에서 Rekogition 호출
Rekognition에서 Python을 호출하는 샘플이 많지만 개인적으로 node를 쓰는 데 익숙해졌습니다.js의 샘플을 소개합니다.
S3에 저장된 객체의 경우 세그먼트와 키만 지정하면 됩니다.또 지정Attributes
하면 감정 데이터가 포함된 데이터를 얻을 수 있다(SDK의 참고는여기..
기본적으로 만화를 참조하지만 아래 코드로 호출할 수 있다(node8.10).const params = {
Image: {
S3Object: {
Bucket: bucket,
Name: key
}
},
Attributes: ["ALL"]
};
try {
// Detect face using rekognition
const data = await rekognition.detectFaces(params).promise();
// use data...
}
호출 detectModerationLabels 은 적합하지 않은 그림이 있는지 검사할 수 있습니다.
Webhook으로 결과를 전달할 소스 코드 포함
DynamoDB에 저장하면 그렇게 결과를 저장하면 되지만 상기 보도된 Bot에서는 웹훅에 결과를 알려야 하기 때문에 이 내용을 포함하는 전체 코드를 소개합니다.const aws = require('aws-sdk');
const rekognition = new aws.Rekognition();
const https = require('https');
exports.handler = async (event, context) => {
//console.log('Received event:', JSON.stringify(event, null, 2));
// Get the object from the event
const bucket = event.Records[0].s3.bucket.name;
const key = decodeURIComponent(event.Records[0].s3.object.key.replace(/\+/g, ' '));
const paths = key.split('/');
const rekognitionParams = {
Image: {
S3Object: {
Bucket: bucket,
Name: key
}
},
Attributes: ["ALL"]
};
try {
// Detect face using rekognition
const data = await rekognition.detectFaces(rekognitionParams).promise();
var json = JSON.stringify(data);
// Send result to webhook
var result = await new Promise((resolve, reject) => {
var options = {
hostname: 'example.com',
path: '/webhook/',
method: 'POST',
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
'Content-Length': Buffer.byteLength(json)
}
};
var req = https.request(options, function(res) {
res.setEncoding('utf8');
res.on('data', function (body) {
console.log(body);
resolve('Success');
});
}).on('error', function(e) {
reject(e);
});
req.write(json);
req.end();
});
console.log(result);
} catch (err) {
console.log(err);
const message = `Error detecting face ${key} from bucket ${bucket}.`;
throw new Error(message);
}
};
특히 S3에 저장된 이미지에 대해 Amazon Rekognition의 호출은 매우 간단합니다.최근의 업데이트 정밀도가 더 높아진 것 같아서 이미지 서비스를 제공하는 사람은 반드시 시도해 보아야 한다.
이 글은 nifty 그룹 Advent Calendar의 첫날 보도입니다.
다음날@motaHack.기대해주세요!
Reference
이 문제에 관하여(이미지가 S3에 저장되면 Amazon Rekognition의 이미지 분석이 자동으로 수행됩니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/kiwi26/items/94fed1c570a7aadb6067
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
const params = {
Image: {
S3Object: {
Bucket: bucket,
Name: key
}
},
Attributes: ["ALL"]
};
try {
// Detect face using rekognition
const data = await rekognition.detectFaces(params).promise();
// use data...
}
const aws = require('aws-sdk');
const rekognition = new aws.Rekognition();
const https = require('https');
exports.handler = async (event, context) => {
//console.log('Received event:', JSON.stringify(event, null, 2));
// Get the object from the event
const bucket = event.Records[0].s3.bucket.name;
const key = decodeURIComponent(event.Records[0].s3.object.key.replace(/\+/g, ' '));
const paths = key.split('/');
const rekognitionParams = {
Image: {
S3Object: {
Bucket: bucket,
Name: key
}
},
Attributes: ["ALL"]
};
try {
// Detect face using rekognition
const data = await rekognition.detectFaces(rekognitionParams).promise();
var json = JSON.stringify(data);
// Send result to webhook
var result = await new Promise((resolve, reject) => {
var options = {
hostname: 'example.com',
path: '/webhook/',
method: 'POST',
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
'Content-Length': Buffer.byteLength(json)
}
};
var req = https.request(options, function(res) {
res.setEncoding('utf8');
res.on('data', function (body) {
console.log(body);
resolve('Success');
});
}).on('error', function(e) {
reject(e);
});
req.write(json);
req.end();
});
console.log(result);
} catch (err) {
console.log(err);
const message = `Error detecting face ${key} from bucket ${bucket}.`;
throw new Error(message);
}
};
Reference
이 문제에 관하여(이미지가 S3에 저장되면 Amazon Rekognition의 이미지 분석이 자동으로 수행됩니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/kiwi26/items/94fed1c570a7aadb6067텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)