Създаването на уеб приложение за разпознаване на лица, на час
Казва Деуан Sabaratnam, разработчик с 30-годишен опит
Миналия уикенд, обръщане чрез Amazon Web Services, забелязах една нова услуга, наречена «Rekognition». Предположих, че е печатна грешка (признаване -. Английски признаване), но това привлече вниманието ми. Интересувам се от: какъв вид услуга? Amazon използва за добавяне на нови услуги за своята платформа с тревожна редовност, както и че бях пропуснал.
Преди това съм работил технология за разпознаване на лицето, като се използват библиотеки на трети страни, както и Microsoft Face API. но всички опити да се създаде подобна молба не е било успешно. Но, гледайки към документацията «Rekognition», аз осъзнах, че API AWS всъщност е много лесен за използване. Аз веднага отиде да работи.
Имах нужда от проста уеб страница, която ще позволи да направите снимка с камерата на моя IMAC и извършва разпознаване на снимки. По-специално, бих искал да се определи потребителят седи пред компютъра.
Amazon Rekognition услуга ви позволява да създадете една или повече колекции. Колекция - набор от вектори за лични снимки, които искате да запазите.
Забележка: Услугата поддържа снимка и им JSON-представителство.
След създаването на колекцията, можете да направите снимка на обект, за сравнение на свойствата на файлове, запазени в и да се върне най-близкото съвпадение. Звучи просто, нали? В интерес на истината, на развитието на потребителската част на уеб страницата, за да изтеглите данни от камерата, за да отнеме повече време от написването на данни за предоставяне на признаване.
Като цяло, на уеб страницата ви позволява да създавате или изтривате събиране на лични данни на Amazon, изтегляне на нови данни от снимки в колекцията си и сравни нови снимки към съществуваща колекция, за да намерим. И тъй като все повече функции, аз добавя към тази демонстрация Amazon Поли услуга. че след признаването на снимки страница приветства потребителя.
За гръб, аз използвах Ruby библиотека Синатра. че може да направи цялата работа с помощта на AWS. Аз често се използва Синатра (всъщност Padrino случай) в своите проекти, както и силно препоръчвам тази платформа.
Забележка: Amazon Rekognition предлага първо да изтеглите оригиналните снимки, които използва приложния програмен интерфейс на Amazon S3, и след това да ги обработи. Исках да се избегне тази ненужна стъпка и вместо да изпрати снимките си директно на API, аз в крайна сметка успя да направи.
Успях да направим същото и с техния поздрав Поли. Вместо това, за да спаси аудио в MP3-файл и да го играят, аз бях в състояние да се кодира MP3 данни директно в маркера
Аз бях публикувал целия код за този проект на моята страница на GitHub. Чувствайте се свободни да се използва и да го модифицирате. По-долу ще се опитам да обясня на кода по-подробно.
Писане на приложението
Създаване на потребителски AWS IAM
След като сте създали акаунта AWS, първото нещо, което трябва да направим - да създадете потребител Amazon IAM (Identity Управление Access), която има право да използва Rekognition услуга. Също така ви молим да добавите Amazon Поли.
В конзолата за Amazon, кликнете върху "Услуги" в горния ляв ъгъл, след това изберете "на IAM". В лявото меню, изберете "Потребители". Трябва да видите списък на съществуващите потребители на IAM, които сте създали в конзолата, ако го е направил в миналото.
Кликнете върху "Добавяне на потребител" в горната част на списъка, за да добавите нов потребител IAM.
Дайте името на потребителя и се уверете, че сте избрали елемента «програмен достъп», тъй като ще се използва IAM да се обадите на API.
Следват настройките на разрешения. Уверете се, че сте кликнете на третия площада на екрана с надпис «Прикрепете съществуващите политики директно». След това в полето за търсене на «филтър: Тип на правилата» въведете «rekognition». Изберете «AmazonRekognitionFullAccess» от списъка, като поставите отметка до него.
След това променете филтъра за търсене на «Поли» и поставете отметка до «AmazonPollyFullAccess».
Сега това IAM достатъчно разрешения на Amazon Rekognition и Amazon Поли. Кликнете «Следваща: Преглед» в долния десен ъгъл.
Тази страница е важно. Запис на ключове AWS Ключови и AWS тайни, които вие сте определили за тази страница, защото ние трябва да ги включим в приложението по-долу.
Това е единственият път, когато ще бъде показан на ключовете, така ги и CSV файл от тази страница на сигурно място, съхранява.
Изтегляне на код
Сега, изтеглете примерен код от страницата ми GitHub. така че можете да го промените, ако е необходимо. Свали кода във вид на ZIP-файл или да го skloniruyte във вашата работна директория.
Първото нещо, което трябва да направите - е да се създаде файл с име .env в работната директория и въведете тези две линии чрез замяна на клавишите за Amazon IAM на вашите:
С помощта на приложението
Много уеб страницата е доста проста. Би трябвало да видите на изображението стрийминг в горната част на екрана, която е канал с уеб камерата си.
Първо, създаване на колекция, като кликнете на линка в долния ляв ъгъл на страницата. Това ще създаде празен събиране на сървърите на Amazon за съхранение на вашите изображения. Забележка: Името по подразбиране за тази колекция - faceapp_test. но можете да го промените в кода faceapp.rb (линия 17).
След като сте създали повече от един човек във вашата база данни, можете да поискате от случаен човек да седи в предната част на камерата и натиснете "Сравни изображения". Ако този човек вече е добавена към колекцията на екрана трябва да видите името му.
Моля, имайте предвид, че по обичайния начин на работа Amazon Rekognition е да качва снимки в Amazon S3 Bucket, и след това го обработва от там, но бих искал да заобиколи тази стъпка и всъщност изпращат данните директно на снимките Rekognition като поток от байтове, кодиран в Base64. За щастие, AWS-SDK за Ruby ви позволява да използвате и двата метода.
разбор код
На първо място, нека да погледнем на HTML-страницата:
Това задава JPEG библиотека Камера за показване на канала на екрана и да се справят с качване на изображения.
add_to_collection () функция улавя изображения от камерата, а след това пише крайната точка / качите заедно с потребителското име като параметър. Функцията проверява дали сте или не сте въведете името, което искате да е уникален идентификатор на данните.
изтегляне функция проверява обаждането и се показва съобщение за успешното приключване или неуспеха.
compare_image (функция) се нарича, когато кликнете върху "Сравни изображението." Той улавя рамка от камерата и предава данните на пост- / за сравнение. Тази крайна точка ще се върне грешка или структура JSON, съдържащ ID (наименование) на откритите повърхности и процент сходство.
Ако човек съвпада с данните от колекцията, функцията ще изпрати името на лицето, установено в / реч. Крайната точка е Amazon Поли услуга за трансформиране на поздрава в MP3 файл, който може да бъде възпроизведен на потребителя.
Amazon Поли услуга връща поздрав под формата на двоичен поток MP3, така че ние приемаме входно-изходен поток, той криптира в Base64 формат и място, както и оригиналните кодирани препратки към тагове
Прибл. Транс. Можете да научите за уеб аудио повече, прочетете нашата поредица от статии на тази тема.
И накрая, в JS-файл приложения имат функция greetingTime (). Той решава дали да се каже "добро утро / следобед / вечер" в зависимост от времето на деня потребителя.
Сега погледнете кода Ruby: