У нас была задача отсортировать профили людей по возрасту и полу. Нам нужно было сегментировать базу потенциальных клиентов для запуска тестовых рекламных компаний, для каждой рекламной компании мы подбирали индивидуальные видео которые лучше всего подошли бы людям определенного возраста и пола.
Если вам интересны такие темы и вы хотите и дальше видеть новые публикации и развитие данного модуля, то просим вас поставить нам звездочку ⭐ на Github!
Ссылка на модуль: https://github.com/mowshon/age-and-gender
После анализа доступных библиотек, мы нашли интересный репозиторий на Github: https://github.com/davisking/dlib-models
Автор Davis E. King @davisking, он же создатель замечательной библиотеки dlib, предоставил уже натренированную модель на несколько тысяч лиц людей. Но, вот беда… код написан на C++ а рабочей альтернативы на Python мы не нашли.
Модель для предсказывания возраста (dnn_age_predictor_v1.dat)
Первоначальный источник для создания модели пришел из документа Z. Qawaqneh: «Глубокая сверточная нейронная сеть для оценки возраста на основе модели VGG-Face». Тем не менее, наши исследования привели нас к значительным улучшениям в CNN модели, что позволило нам оценить возраст человека, превосходящего существующие результаты, с точки зрения точности результата.
Есть вопросы по Python?
На нашем форуме вы можете задать любой вопрос и получить ответ от всего нашего сообщества!
Python Форум Помощи
Telegram Чат & Канал
Вступите в наш дружный чат по Python и начните общение с единомышленниками! Станьте частью большого сообщества!
Чат
Канал
Паблик VK
Одно из самых больших сообществ по Python в социальной сети ВК. Видео уроки и книги для вас!
Подписаться
Таким образом, эта модель является определителем возраста, использующим архитектуру ResNet-10, и обучается с использованием частного набора данных из примерно 110 тыс. различных изображений людей с комментарием в виде их возраста.
Эта модель прогнозирования возраста предоставляется компанией Cydral Technology бесплатно и распространяется по лицензии Creative Commons Zero v1.0 Universal.
Ссылка на скачивание: https://github.com/davisking/dlib-models/blob/master/age-predictor/dnn_age_predictor_v1.dat.bz2
Сервис How Old
Данный сайт является разработкой компании Microsoft. Он использует машинные алгоритмы для определения возраста человека по фото онлайн. Сканирование осуществляется по форме лица, анализируется, форма носа, рта, положение глаз, бровей и ушей. При этом разработчики делают акцент на том, что сервис не позволяет точно узнать необходимые параметры. Он сделан с целью развлечь пользователей.
Сервис представлен не только в виде веб-версии, но и мобильным приложением. При первом использовании, чтобы пользователь убедился в работоспособности программы, будут представлены шаблоны фотографий людей, которые можно просканировать. Далее следует пошаговая инструкция, как пользоваться веб-версией How Old, т.к. мобильная используется только на iOS и привязана к американскому iTunes.
Инструкция:
- переходим на веб-сайт how old;
- далее на главной странице щелкаем по вкладке «Use Your Own Photo»;
- откроется окно проводника, где требуется выбрать нужное фото;
- после этого начнется процесс анализа объекта и результат будет показан во всплывающем окне. Мы взяли для примера фотографию 23 летней модели Джелены Хадид, а результат получился 29 лет. Протестировав работу ресурса, в нашем случае, программа показывала не совсем точные данные, погрешность была +-3-7 лет.
Как удалить свою страницу или полностью приложение Телеграм
Также можно посмотреть фотоинструкцию ниже:
Модель для определения пола человека по лицу (dnn_gender_classifier_v1.dat)
Эта модель является гендерным классификатором, обученным с использованием частного набора данных из примерно 200 000 различных изображений лиц, и она была сгенерирована в соответствии с определением сети и настройками, заданными в «Минималистической модели на основе CNN для прогнозирования пола по изображениям лиц«. Даже если набор данных, использованный для обучения, отличается от того, который использовался Г. Антиповым, результаты классификации по оценке LFW в целом схожи (± 97,3%).
Эта гендерная модель предоставляется бесплатно компанией Cydral Technology и распространяется по лицензии Creative Commons Zero v1.0 Universal.
Ссылка на скачивание: https://github.com/davisking/dlib-models/blob/master/gender-classifier/dnn_gender_classifier_v1.dat.bz2
Распознавание возраста по фотографии
— www.log-in.ru
Исследователи в США сообщают, что создана новая компьютерная программа по распознаванию возраста человека путем анализа лиц на фотографиях. Она способна оценивать возраст человека по тому, как он выглядит.
Специальный софт был разработан командой Иллинойского Университета.
«Измерение возраста – очень сложная процедура», говорит доктор Томас Хуанг, руководитель проекта. «Если использовать лицо как показатель возраста, то мы действительно можем определить истинный возраст, или возраст, на который человек выглядит».
Исследователи обучили свой компьютер специальному алгоритму, используя изображения 1600 людей, по 5 фотографий на каждого. В целом было использовано 8000 фото. Возраст людей на фотографиях варьировал от года до 93 лет.
Хуанг не сообщал компьютеру, на что надо обращать внимание. Компьютер исследовал лица и использовал свою программу, чтобы определить те черты, которые лучше всего отображают истинный возраст человека.
Анализ серых тонов
Одним из признаков, который рассматривал компьютер, является шкала серых тонов. Если, например, анализировать фотографию размером 100х100 пикселей, то каждый из 10 000 пикселей имеет свой оттенок серого.
Сравнивая, насколько данная точка светлее или темнее по сравнению с другими, программа вычисляет реальный возраст индивида.
«Возраст у женщины, пользующейся косметикой, получится ниже», говорит Хуанг. «Более ровная текстура кожи будет распознана как более молодая».
Компьютер также смотрит на форму лица. Относительное положение глаз, носа, ушей, форма рта, все это меняется со временем и может помочь определить возраст.
«Если принять реальный возраст человека за истину, то точность довольно низкая», говорит Хуанг. «Но если ограничить возраст десятью годами, то точность составляет около 80%».
Форма, положение, цвет и текстура помогают в определении не только возраста, но также этноса, пола, и даже эмоций. Все это Хуанг изучает с помощью компьютера.
«Мы более точны в распознавании пола, около 90%», — говорит Хуанг. «Также результат в 90% получился при распознавании положительных эмоций, таких как улыбка. Негативные эмоции, такие как удивление, не настолько легко определить».
Компьютерное распознавание возраста по фотографии — не просто академический эксперимент в информатике. Несколько компаний на самом деле заинтересовано в использовании этого софта.
Не вдаваясь в подробности, Хуанг заявляет, что программа по распознаванию лица может быть полезна, скажем, для компаний, продающих фастфуд, которые хотят знать, сколько молодых людей покупает определенный вид сэндвичей; или для компаний по продаже одежды, которые могли бы показывать различную рекламу для каждого входящего в их магазин.
«Если можно определить пол и возраст покупателя, то можно изменить и рекламу на дисплее», говорит Хуанг. «Для молодежи возможно лучше показывать один рекламный ролик, а для зрелых людей – другой».
Переменные биометрические показатели
«Программы для распознавания лица могли бы быть также полезны в целях безопасности», — говорит доктор Джонатан Филипс, сотрудник Национального Института Стандартов и Технологий, который разрабатывает данный софт.
Переменные биометрические показатели, такие как возраст или пол (противопоставляя постоянным биометрическим показателям, таким как отпечатки пальцев или узор вен на ладони) могли бы быть использованы как вспомогательный защитный показатель к PIN коду для удостоверения личности в банкоматах или на входах в здания.
Для чего бы ни была использована эта программа, ожидайте увидеть ее в деле через несколько лет. Система может быть встроена в камеры слежения для съемки изображений и последующей их обработки с помощью соответствующего софта.
Хуанг и Филипс пытаются удостовериться в том, что нет необходимости в дополнительном оборудовании, таком как камеры или специальное освещение.
Единственная сложность в работе программы Хуанга, это то, что она лучше всего работает, когда лицо смотрит в камеру. Фотографии сбоку делают более сложным распознавание возраста, пола, этноса или эмоций. Хуанг работает над усовершенствованием программы, чтобы добиться возможности считывать лица людей с разных углов.
Главный тест для программ, распознающих возраст, — это то, насколько хорошо они могут распознавать возраст по сравнению с людьми.
Хуанг считает, что его программа может сравниться в точности определения возраста с человеческим глазом. Филипс говорит, что люди очень хорошо могут определить возраст своих друзей и любимых, но затрудняются в определении возраста незнакомцев.
«Мы все время это делаем», говорит Филипс. «Когда люди изобретают что-то новое, они хотят, чтобы это принесло пользу. Если компьютер будет точнее человека в определении возраста, эмоций и т.д., то это сделает общение компьютеров с людьми более позитивным».
Перевод: Никонов Владимир
Статью подготовили:
Никонов Владимир, Дмитрий Трость
Cтатьи о природе, изобретениях, архитектуре, иллюзиях…
Перенос C++ кода на Python
Изначально, @davisking предоставил два C++ файла которые показывали как работать с натренированными им моделями:
- dnn_gender_classifier_v1_ex.cpp
- dnn_age_predictor_v1_ex.cpp
Они выводили результат сразу в консоль, но вот использовать код в рабочем проекте даже на C++ было крайне неудобно. Используя pybind11 мы имеем возможность применить код на C++ в нашем коде на Python. Мы не будем акцентироваться долго на pybind11, но если вы хотите ознакомиться с ним, то рекомендуем статью: Создаем С++ Python расширения с помощью pybind11
Как определить возраст без сервисов
Все вышеперечисленные ресурсы работают со следующими параметрами, с помощью которых формируется конечный результат:
- морщины. В 20 лет неровности кожи не так заметны, как в 30 лет. В 50 лет морщины выражены намного сильней. Программа учитывает данные особенности и формирует конечный результат;
- алгоритмы, по которым идет сканирование в основном основаны на анализе серых тонов. Допустим, если исходный размер фото не более 100 пикселей, то каждый из 10 000 будет иметь свой оттенок, от самого светлого, до темного. Программа начинает сравнивать несколько пиксели темнее и светлее друг от друга и определяет параметры возраста;
- также сравниваются размеры лица, положение носа и глаз, форма рта и ушей. Программное обеспечение учитывает данные особенности, так как они в течении жизни человека существенно меняются;
- если женщина пользуется большим количеством косметики, то узнать количество лет программным методом трудно, так как текстура кожи будет иметь небольшое количество изъянов.
Сервисы и программы для быстрого перевода текст с изображения или фотографии
Используя информацию указанную выше, можно попробовать самому узнать количество лет по фото. Это достаточно сложно, но вполне реально.
Установка age-and-gender на Ubuntu & Debian
Рекомендуем любые новые проекты и тестирование модулей делать в виртуальном окружении, этим самым вы не засорите свой системный интерпретатор ненужными модулями. Первым делом создаем виртуальное окружение и активируем её.
Shell
1 2 | python3 -m venv venv source venv/bin/activate |
Устанавливаем необходимые зависимости:
Shell
1 | sudo apt install cmake libjpeg-dev g++ build-essential libfreetype6-dev |
Скачиваем файлы с github и выполняем установку:
Shell
1 2 3 | git clone [email protected]:mowshon/age-and-gender.git cd age-and-gender python setup.py install |
В папке example есть тестовый файл example.py запустив которого вы увидите как скрипт определил возраст членов семьи Билла Гейтса.
Python
1 2 | cd example/ python example.py |