AWS распознавание лица в приложении Android - PullRequest
1 голос
/ 24 февраля 2020

Я пытаюсь создать приложение Android , которое может отправлять изображения, снятые камерой на планшете Android, в AWS Rekognition. Предполагается, что изображения будут напрямую отправлены в AWS Rekognition сервис без необходимости S3 bucket . Саму картинку не нужно сохранять в облаке. Только метаданные лица должны храниться в коллекции AWS. После этого конечная цель - дать человеку возможность снова захватить его лицо, и AWS говорит, что в коллекции есть совпадение с предыдущим лицом.

На inte * много информации rnet. Но в большинстве случаев AWS предлагают рамки Amplify. И я действительно не знаю, нужно ли это в таком простом случае.

Я уже выполнил все шаги в AWS CLI (и эти работы), но мне не удалось выполнить эти шаги в Android studio. Ниже я опишу шаги, которые я сделал в CLI AWS. Я сделал бы эти шаги в Android Studio, но я не профессионал в программировании этого языка. (Я уже собрал коллекцию в AWS CLI.)

Сначала я индексирую лицо, которое можно найти по AWS в изображении. В моем AWS коде CLI я использую S3 в качестве примера. Предполагается, что я могу отправить изображение непосредственно в AWS Rekognition. Это действие нужно выполнять только если кто-то специально нажмет кнопку. Итак, сделав снимок и отправив его в AWS Rekognition на index face в определенной c коллекции.

aws rekognition index-faces --image '{"S3Object":{"Bucket":"bucketName","Name":"picture1.jpg"}}' --collection-id "collectionName" --max-faces 1 --quality-filter "AUTO" --detection-attributes "DEFAULT" --external-image-id "picture1.jpg"

Затем, когда пользователь pu sh еще одну кнопку, нужно снова сделать снимок и отправить ее на AWS Повторное распознавание на поиск коллекцию по изображению , которое было отправлено. Мне уже удалось это с помощью следующего AWS кода CLI. Также должно быть намерение отправить изображение непосредственно на AWS без необходимости S3. AWS возвращает совпадение с лицом, которое уже есть в коллекции.

aws rekognition search-faces-by-image --image '{"S3Object":{"Bucket":"bucketName","Name":"picture.jpg"}}' --collection-id "collectionName"

Опять же, я не профессионал в Android студии, поэтому было бы очень хорошо, если бы у кого-то было довольно легко решение. Также было бы очень хорошо, если бы кто-то мог сказать мне, действительно ли необходима платформа Amplify. Заранее спасибо!

1 Ответ

2 голосов
/ 24 февраля 2020

Вам не нужно использовать Amplify, вы можете использовать Rekognition через AWS Java SDK .

Для достижения той же функциональности, которую вы получаете с CLI , вы можете сначала проиндексировать лица в коллекции, используя IndexFacesRequest , или вы можете предвидеть это go и создать коллекцию вручную через CLI, если это одноразовая операция.

Чтобы выполнить поиск лиц коллекции по image , вам просто нужно изменить следующий фрагмент кода, чтобы передать изображение в кодировке byte-64 вместо URL-адреса S3. Полная документация по searchFacesByImage() методу здесь .

AmazonRekognition client = AmazonRekognitionClientBuilder.standard().build();
SearchFacesByImageRequest request = new SearchFacesByImageRequest().withCollectionId("myphotos")
        .withImage(new Image().withS3Object(new S3Object().withBucket("mybucket").withName("myphoto"))).withMaxFaces(5).withFaceMatchThreshold(95f);
SearchFacesByImageResult response = client.searchFacesByImage(request);
...