Amazon Rekognition에서 개와 튀김을 구별하는 앱을 만들어 보았습니다.

소개



1.「개가 튀김으로 보인다」



라는 재료가 2014년 정도로 유행했습니다.


2. 「Not Hotdog」의 유행



2017년의 5월 정도에 「Not Hotdog」라고 하는, 파니인 화상 해석 어플리가 유행했습니다.
Not Hotdog on the App Store - iTunes - Apple
전 자료


3. 「Amazon Rekognition」의 탄생



Amazon Rekognition이라는 심층 학습 기반의 이미지 인식 API 서비스가 시작되었습니다.
예를 들어 핫도그 이미지를 업로드하면 이미지를 구문 분석하고 이미지에 핫도그가 있음을 반환합니다.


4.라는 것으로



개와 튀김을 구분하고 싶은 사람들을 위해 이미지 분석 응용 프로그램을 만들기로 결정했습니다.

사전 준비



· Identity Pool ID 생성



New Identity Pool로 이동하여 마법사에 따라 Identity Pool ID를 만듭니다.
하기 사이트에 상세한 해설이 실려 있으므로, 이쪽을 참고로 해 주세요.
[Amazon Cognito] Cognito를 배포하는 방법이 더 쉬워졌습니다! | Developers.IO

· IAM 정책 연결



생성한 ID에 AmazonRekognitionFullAccess 정책을 연결합니다.

Android 앱 만들기



1. 라이브러리 추가



AmazonRekognition의 SDK를 Android에서 사용하는 경우 최소한 이러한 Dependencies가 필요합니다.
compile 'com.amazonaws:aws-android-sdk-core:2.4.4'
compile 'com.amazonaws:aws-android-sdk-rekognition:2.4.4'
compile 'com.amazonaws:aws-android-sdk-cognito:2.4.4'

2. AmazonRekognitionClient 만들기



이런 식으로 만듭니다.
사전 준비로 작성한 Identity Pool ID 및 Region으로 적절히 대체하십시오.
    CognitoCachingCredentialsProvider credentialsProvider = new CognitoCachingCredentialsProvider(
            getContext(), // Context
            IDENTITY_POOL_ID, // Identity Pool ID
            Regions.US_EAST_1 // Region
    );
    amazonRekognitionClient = new AmazonRekognitionClient(credentialsProvider);

3. 이미지 만들기



이 예에서는 Bitmap을 imageBytes로 변환합니다.
(더 스마트한 방법이 있을지도)
        ByteBuffer imageBytes = null;
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        bitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos);
        imageBytes = ByteBuffer.wrap(baos.toByteArray());

4. API 요청 작성



※withImage에는 new Image()를 건네줄 필요가 있습니다. 이제 몇 시간 빠졌습니다.
자세한 설명은 아래 Stack Overflow를 참조하십시오.
java - How can I DetectFaces in Amazon Rekognition AWS with Android Studio? - Stack Overflow
        DetectLabelsRequest request = new DetectLabelsRequest().withImage(new Image().withBytes(imageBytes)).withMaxLabels(10).withMinConfidence(77F);
        DetectLabelsResult result = amazonRekognitionClient.detectLabels(request);
        List<Label> labels = result.getLabels();

5. 완성



개와 튀김을 구분하는 앱이 생겼습니다.




6. 끝



AmazonRekognitionSDK for Android에 대한 설명은 이상입니다.

이번에 작성한 데모 앱은 아래에서 다운로드 가능합니다.
not dog - Google Play의 Android 앱

Github에서 소스의 전체 텍스트를 공개하고 있으므로, 괜찮으시면 여기도 참조하십시오.
Identity Pool ID 부분을 대체하면 AmazonRekognition을 사용해 볼 수 있습니다.
unoemon/notdog: Realtime dog or not dog classification!

좋은 웹페이지 즐겨찾기