Overview

AWS Rekognition은 딥 러닝 기반의 이미지, 동영상 분석 서비스입니다. Rekognition API를 사용하면 서비스에서 객체, 사람, 텍스트, 장면 및 동작을 식별하고 부적절한 콘텐츠를 탐지할 수 있습니다. Rekognition은 딥 러닝 기술을 기반으로 하고 있기 때문에 지금 이 순간에도 새로운 데이터를 통해 끊임없이 학습하고 있고, AWS에서도 새로운 레이블과 얼굴 인식 기능을 추가하고 관리합니다.

이번에는 AWS S3 Bucket에 업로드한 이미지로 이미지 분석 결과를 볼 수 있는 예제 사이트를 통해, Rekognition과 친해지는 시간을 갖도록 하겠습니다. 저는 예제 사이트를 개발하기 위해 PHP 프레임워크인 CodeIgniter 3, MAMP, Bootstrap을 사용했습니다.

1. AWS Rekognition SDK 설치하기

01

1-1) AWS Rekognition 사이트에 접속해 Download SDKs 를 클릭합니다.


02

1-2) AWS 에서 제공하는 다양한 언어의 SDK를 확인할 수 있습니다. 저는 PHP를 사용할 것이므로 PHP 의 Install 을 클릭하겠습니다.


03

1-3) AWS SDK 를 설치할 수 있는 방법은 여러가지가 있습니다. 이 중에서 저는 Composer를 이용해 설치했습니다.


curl -sS https://getcomposer.org/installer | php
php -d memory_limit=-1 composer.phar require aws/aws-sdk-php



04

1-4) 짠! 짧은 명령어 2줄로 SDK 설치가 완료되었습니다 :)



2. AWS S3 Bucket 에 업로드된 이미지를 분석하기

05

2-1) 여기에 임의로 만든 예제 사이트가 있습니다. [이미지 선택] 과 [S3에 이미지 업로드하기] 를 통해 이미지 파일을 등록하면, 백단(Back-end) 에서는 해당 파일을 특정 S3 Bucket 에 업로드 한 후 Rekognition 에게 이미지 분석을 요청하도록 짜여있습니다. 관련 코드는 아래와 같습니다.

{
    "Image": {
        "S3Object": {
            "Bucket": "bucket",
            "Name": "input.jpg"
        }
    },
    "MaxLabels": 10,
    "MinConfidence": 80
}



06

위의 코드 블록은 AWS Rekognition 개발자 안내서에 나와있는 예제 포맷이고, 아래의 코드는 예제 포맷을 PHP 에서 요청할 수 있는 방식으로 코딩한 것입니다.


detectLabels 메소드 를 이용해 분석할 이미지가 저장되어 있는 S3 Bucket 과 이미지의 Name 을 전달해줍니다.

1) MaxLabels : 응답 받을 최대 Label 수
2) MinConfidence : Label 에 대한 최소 신뢰성 



여기서 Label 이란 ‘이미지에서 발견되는 객체, 장면 또는 개념’ 이라고 생각하면 됩니다. 예를 들어 해변에 있는 사람들을 촬영한 사진에는 ‘사람’, ‘물’, ‘모래’ (객체) 및 ‘해변’ (장면) 그리고 ‘야외’ (개념) 등이 Label 이 될 수 있습니다. 자, 우주 사진을 한 번 분석해볼까요?

07


array(3) {
    ["Labels"]=>
    array(8) {
      [0]=>
      array(2) {
        ["Name"]=>
        string(9) "Astronomy"
        ["Confidence"]=>
        float(96.8987350464)
      }
      [1]=>
      array(2) {
        ["Name"]=>
        string(5) "Earth"
        ["Confidence"]=>
        float(96.8987350464)
      }
      [2]=>
      array(2) {
        ["Name"]=>
        string(5) "Globe"
        ["Confidence"]=>
        float(96.8987350464)
      }
      [3]=>
      array(2) {
        ["Name"]=>
        string(11) "Outer Space"
        ["Confidence"]=>
        float(96.8987350464)
      } ...
    }



Rekognition이 업로드한 우주 사진을 분석하여 정확히 연관된 Label들만 반환한 것을 확인할 수 있습니다. 이 Label을 가지고 이미지 태그를 간단하게 구현했습니다.

08
참 쉽죠 ?




Conclusion

이번 시간에는 AWS Rekognition 을 이용하여 기본적인 이미지 분석을 해보는 시간을 가져봤습니다. 다음 시간에는 ‘얼굴 감지 및 분석’ 기능을 응용하여 Collection 을 생성해보고, 얼굴 검색을 해보는 시간을 갖겠습니다.


참고

  1. 놀라운 무료 이미지 · Pixabay
  2. 핀터레스트 스타일 레이아웃 만들기 (masonry) - 생활코딩
  3. 이미지에서 레이블 감지 - Amazon Rekognition


김우경 대리 | R&D 개발1팀
kimwk@brandi.co.kr
브랜디, 오직 예쁜 옷만