반응형
해당 포스팅은 사용자로부터 파일을 받아서 Rekognition을 이용한 객체 탐지 기능만을 설명합니다.
유저로부터 받은 파일의 이미지가 무엇인지 인공지능이 구별하는 기능입니다.
유저로부터 파일을 받는 방법은 이전 포스팅에서 확인 가능합니다.
https://luvris2.tistory.com/206
Rekognition
- 딥 러닝 기반 시각 분석 서비스
- 기계 학습을 통해 이미지 및 비디오 분석 자동화
- 기계 학습 모델 및 인프라를 구축하지 않고도 사전 훈련되었거나 사용자 지정 가능한 API 제공
- 예) 얼굴 비교 및 검색, 얼굴 탐지 및 분석, 텍스트 탐지, 유명 인사 인식 등등
boto3
파이썬용 AWS 소프트웨어 개발 킷
Amazon S3, EC2, DynamoDB 등 AWS 서비스와 쉽게 통합
boto3 라이브러리 설치 및 호출
# boto3 설치
pip install boto3
# boto3 호출
import boto3
파이썬으로 객체 탐지 API 구현하기
Visual Studio Code
메인 파일 : app.py
- 기능 : API 구축, 환경변수 설정, 리소스 경로 생성
from flask import Flask
from flask_jwt_extended import JWTManager
from flask_restful import Api
from ref.config import Config
from resources.rekognition import ObjectDetectionResource
# API 서버를 구축하기 위한 기본 구조
app = Flask(__name__)
# 환경변수 셋팅
app.config.from_object(Config) # 만들었던 Config.py의 Config 클래스 호출
# JWT 토큰 생성
jwt = JWTManager(app)
# restfulAPI 생성
api = Api(app)
# 경로와 리소스(api코드) 연결
api.add_resource(ObjectDetectionResource, '/object_detection')
if __name__ == '__main__' :
app.run()
추가 리소스 파일 : rekognition.py
- 기능
- 사용자로부터 업로드 받은 이미지 파일의 객체를 구분
- 기능 설계
- 클라이언트로부터 이미지 파일을 reqeust의 key(filename)로 받음 : request.args['filename']
- boto3.client('rekognition') : rekognition을 이용하여 객체 탐지 객체 생성
- 접속 지역, 액세스 키, 시크릿 키 설정
- client.detect_labels() : 객체 탐지 수행
- 버킷명, 이미지파일 이름, 최대 분류 갯수 설정
- 참고사항
- 비공개 사항 : Config
- Config : S3의 액세스키와 시크릿키 내포
- 비공개 사항 : Config
from flask import request
from flask_restful import Resource
import boto3
from ref.config import Config
class ObjectDetectionResource(Resource) :
# 객체 탐지 API
def get(selft) :
# 1. 클라이언트로부터 데이터 받기
filename = request.args['filename']
# 2. rekognition을 이용하여 object detection
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)
return {
"result" : "success",
"label" : response["Labels"]
}, 200
POSTMAN - API 객체 탐지 테스트
GET - http://127.0.0.1:5000/object_detection
Params - KEY(filename) : VALUE(파일이름)
- 이미지
- 객체 탐지 결과
그렇습니다 파이리는 캥거루 입니ㄷ..
반응형