드레:
코딩 뿌시기
드레:
전체 방문자
오늘
어제
  • 분류 전체보기 (268)
    • Python (74)
      • Python 기초 (42)
      • Numpy (8)
      • Pandas (22)
    • Machine Learning (31)
      • Machine Learning (1)
      • Deep Learning (27)
    • AWS (22)
      • RDS (3)
      • EC2 (9)
      • Lambda (8)
      • S3 (2)
    • MySQL (24)
    • Git (8)
    • Streamlit (12)
    • REST API (22)
    • Java (24)
    • Android (36)
    • Debugging (15)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • fine tuning
  • volley
  • rest api
  • aws s3
  • 네이버 API
  • 액션바
  • EC2
  • Lambda
  • Retrofit2
  • Streamlit
  • Python
  • API
  • 깃이그노어
  • Ann
  • JWT
  • Callback
  • 안드로이드 스튜디오
  • Transfer Learning
  • CNN
  • 서버리스
  • github
  • GET
  • 딥러닝
  • pandas
  • serverless
  • Java
  • tensorflow
  • AWS Lambda
  • AWS
  • flask

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
드레:

코딩 뿌시기

API서버 - AWS Rekognition을 사용한 Object Detection API
REST API

API서버 - AWS Rekognition을 사용한 Object Detection API

2023. 1. 13. 00:09

1. Rekognition

  • AWS에서 제공하는 딥 러닝 기반 시각 분석 서비스
  • 기계 학습을 통해 이미지 및 비디오 분석 자동화
  • 기계 학습 모델 및 인프라를 구축하지 않고도 사전 훈련되었거나 사용자 지정 가능한 API 제공
  • 예) 레이블 탐지, 얼굴 비교 및 검색, 얼굴 탐지 및 분석, 텍스트 탐지 등등
  • 문서: https://aws.amazon.com/ko/rekognition/

 

 

 

2. IAM 사용자 권한 수정

 

rekogniton을 사용할 수 있게 IAM 사용자 권한을 추가한다.

 

 

 

3. 객체 탐지 API 코드

 

from flask import request
from flask_restful import Resource
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 한다.

        # rekognition 서비스를 이용할 수 있는지
        # 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)
        print(response)    

        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

 

config.py 파일

class Config :
    # AWS 관련 키
    ACCESS_KEY = IAM 사용자 access key
    SECRET_ACCESS = IAM 사용자 secret access key

    # S3 버킷
    S3_BUCKET = 버킷명
    # S3 Location
    S3_LOCATION = 'https://버킷명.지역명.amazonaws.com/'

 

 

4. 포스트맨으로 테스트

 

사용한 이미지

 

 

포스트맨 테스트 결과

 

 

원숭이 99.54%, 호랑이 96.64% 라는 결과가 나왔다.

다음으로 높게 예상한 label은 바로 동물원, 95.84%였다.

'REST API' 카테고리의 다른 글

네이버 오픈API 활용 - 뉴스 검색 API  (0) 2023.01.13
API서버 - 클라이언트에게 받은 이미지와 텍스트를 DB에 저장하는 API  (0) 2023.01.13
API서버 - @jwt_required(optional=True)를 이용한 분기 처리  (0) 2023.01.10
API서버 - Flask 쿼리스트링(Query String)을 사용한 API  (0) 2023.01.06
Flask - PROPAGATE_EXCEPTIONS에 대한 이해  (0) 2023.01.06
    'REST API' 카테고리의 다른 글
    • 네이버 오픈API 활용 - 뉴스 검색 API
    • API서버 - 클라이언트에게 받은 이미지와 텍스트를 DB에 저장하는 API
    • API서버 - @jwt_required(optional=True)를 이용한 분기 처리
    • API서버 - Flask 쿼리스트링(Query String)을 사용한 API
    드레:
    드레:

    티스토리툴바