Amazon Rekognition
Amazon Rekognition 을 사용하면 애플리케이션에 이미지 및 비디오 분석을 쉽게 추가할 수 있다.
https://docs.aws.amazon.com/ko_kr/rekognition/latest/dg/what-is.html
Amazon Rekognition 란 무엇입니까? - Amazon Rekognition
기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다. Amazon Rekognition 란 무엇입니까? Amazon Rekognition Rekognition을 사용하면 애플리케
docs.aws.amazon.com
Flask 를 이용하여, Amazon Rekognition Api 를 개발할 것이다.
1. AWS 의 IAM 으로 이동하여 권한 추가
AWS 의 IAM 으로 이동하여서 권한 추가를 하여야한다.

권한 추가 버튼 클릭 - 기본 정책 직접연결 - AmazonRekognitionFullAccess 를 추가한다.

2. 코드 작성
vs code 로 이동하여서 S3 에 저장돼 있는 이미지를 객체 탐지 하는 API 코드를 작성한다.
S3 에 저장돼 있는 이미지를 객체 탐지하는 것이기 때문에, S3 에 이미지가 업로드 된 상태여야한다.
from flask import request
from flask_jwt_extended import jwt_required
from flask_restful import Resource
from mysql.connector import Error
from flask_jwt_extended import get_jwt_identity
from mysql_connection import get_connection
from datetime import datetime
import boto3
from config import Config
class ObjectDetectionResource(Resource) :
# S3에 저장돼 있는 이미지를
# 객체 탐지 하는 API
def get(self) :
# 1. 클라이언트로부터 파일명을 받아온다.
filename = request.args.get('filename')
# 2. 위의 파일은 이미 S3에 있다는 상황.
# 따라서 aws의 rekognition 인공지능서비스를
# 이용해서, object detection 한다.
# 리코그니션 서비스 이용할수 있는지
# IAM 의 유저 권한 확인하고, 설정해준다.
client = boto3.client('rekognition',
'ap-northeast-2',
aws_access_key_id=Config.ACCESS_KEY,
aws_secret_access_key = Config.SECRET_ACCESS)
response = client.detect_labels(Image={'S3Object':{'Bucket':Config.S3_BUCKET, 'Name' : filename}} , MaxLabels = 10 )
for label in response['Labels']:
print ("Label: " + label['Name'])
print ("Confidence: " + str(label['Confidence']))
print ("Instances:")
for instance in label['Instances']:
print (" Bounding box")
print (" Top: " + str(instance['BoundingBox']['Top']))
print (" Left: " + str(instance['BoundingBox']['Left']))
print (" Width: " + str(instance['BoundingBox']['Width']))
print (" Height: " + str(instance['BoundingBox']['Height']))
print (" Confidence: " + str(instance['Confidence']))
print()
print ("Parents:")
for parent in label['Parents']:
print (" " + parent['Name'])
print ("----------")
print ()
return {'result' : 'success',
'Labels' : response['Labels']}, 200
3. postman 으로 테스트
- GET 으로 설정
- 경로 연결 ('/object_detection')
- Params 에 KEY 와 VALUE 값 설정 ( VALUE 값에는 S3에 업로드 되어있는 파일명을 넣어주어야 한다.)

위 상태로 실행을 돌리면 아래처럼 결과값이 나온다.

'Flask' 카테고리의 다른 글
| 이미지 파일과 내용을 올리면 DB 에 저장하는 API (0) | 2023.01.13 |
|---|---|
| 종속성이 있는 라이브러리를 lambda layer 로 만드는 방법 (0) | 2023.01.12 |
| Serverless framework 를 Github Actions 를 이용하여 자동배포하기 (0) | 2023.01.12 |
| 로그인한 회원과 비로그인 회원 구분하여 데이터를 나타내는 API 설계하기 (0) | 2023.01.10 |
| Flask, Postman 에서 offset, limit 로 데이터 끊어서 가져오기 (1) | 2023.01.06 |