Нередко в компанию NeuroCore обращаются с необычными запросами. Одним из таких нестандартных проектов стала разработка нейросети, включающей алгоритмы распознавания возраста, а именно — идентификации совершеннолетних. Какими-либо наработками в этой области мы не обладали, но темой исследования определенно заинтересовались. О том, как мы собирали датасет и почему там оказались фото аниме-девочек и обезьян — читай в новой статье от NeuroCore.
Нейросетевой полисмен — технологии будущего.
С точки зрения пользы, нейросеть определяющая совершеннолетний человек или нет – может быть полезна для следующих случаев:
Бизнес
- Розничная торговля: Розничные магазины могут использовать эту нейросеть для контроля за продажей товаров, ограниченных по возрасту, таких как алкоголь, табак, или определенные категории игр и фильмов.
- Реклама и маркетинг: Компании могут использовать эту нейросеть для таргетированной рекламы, ограничивая показ рекламных материалов только совершеннолетним пользователям.
Безопасность
- Контроль доступа: Нейросеть может использоваться для контроля доступа в ограниченные зоны, где требуется верификация возраста, например, в ночных клубах или казино.
- Онлайн безопасность: В онлайн-среде нейросеть может использоваться для проверки возраста пользователя при регистрации на определенных ресурсах или при пользовании определенными сервисами.
Социальные сети и онлайн-платформы
- Модерация контента: Нейросеть может быть применена для автоматической модерации контента, например, чтобы обнаруживать неподходящий контент, который может быть доступен только совершеннолетним пользователям.
Польза от внедрения такой нейросети включает повышение безопасности и обеспечение соблюдения возрастных ограничений в различных областях, снижение риска нарушений законодательства и улучшение опыта пользователей. Нейросеть также может сократить необходимость ручной проверки возраста в различных сценариях бизнеса, что повысит эффективность и снизит операционные издержки.
Сбор датасета
Практически в любом проекте по созданию нейросети первым и основополагающим этапом является сбор датасета. Исключениями являются только те проекты, база данных для которых уже собрана и лежит в открытом доступе. Но это явно был не наш случай, потому что клиент обозначил очень узкую и конкретную спецификацию готового продукта. А значит нашим первым шагом было формирование подходящей базы данных, на которых будет производиться тренировка модели. Для выполнения задачи мы собрали два набора данных:
- Обучающий датасет, где были фото людей разных возрастов;
- Обобщающий датасет, в который вошли фото обезьян и аниме-девочек.
Стоп, аниме-девочки и обезьяны?
Да, ты прочитал правильно. Добавление разнообразных изображений, включая аниме-девочек и обезьян, позволяет нейросети расширить контекст для обучения. Подобная вариативность обучающих образов улучшает обобщающую способность модели.
[Что такое обобщающая способность нейросетей?
Давайте представим, нам нужно научить компьютер различать, на какой картинке есть кошка, а на какой нет. Мы показываем ему много фотографий с кошками и без них. Таким образом формируется базовый алгоритм распознавания, благодаря которому компьютер учится понимать, как выглядит кошка, и может определять есть ли этот объект на новых фотографиях. Теперь, если мы добавим в обучающий набор фотографии не только кошек, но и других животных, таких как собаки, птицы или даже рыбы, компьютер распознавать общие черты других животных и использовать этот опыт, чтобы точнее определять наличие кошек на новых фотографиях.]
В целом составление специфических датасетов не является чем-то новым для нашей компании, и мы не боимся браться даже за самые необычные проекты. Почитать про то, как мы устроили филиал бойцовского клуба ради сбора данных можно в нашей статье.
Тестирование модели
Второй этап разработки — тесты. По факту это момент, когда становится ясно верный ли подход к реализации проекта был избран изначально. Процесс тестирования мы решили оформить в виде визуальных отчетов. Скрипт автоматически генерировал полученные результаты в графики, благодаря которым команда разработчиков могла наглядно увидеть все итоговые данные, необходимые для исправления багов.
Также важной частью разработки проекта является мониторинг продакшн-серверов. Подобная практика позволяет оперативно обнаруживать и устранять возникающие проблемы. В рамках мониторинга мы отслеживаем не только основные метрики, такие как загрузка процессора, сетевая активность, использование оперативной памяти и диска, но и работоспособность API.
Для диагностики API мы разработали автотест, состоящий из 23 испытаний. Такая многоступенчатая проверка покрывает основную функциональность нашего API, и для удобства использования весь набор упакован в контейнер. С помощью GitLab Pipeline schedules этот модуль запускается каждые 15 минут. Результаты тестов, включая время их выполнения, через PushGateway передаются в Prometheus/Grafana. Это позволяет нам мониторить успешность прохождения тестов и скорость работы API. В случае, если тесты перестанут завершаться или время их выполнения значительно увеличится, мы получим уведомление в Telegram.
Изначально мы использовали один Telegram канал для получения уведомлений о состоянии тестов на dev-сервере и продакшн-сервере. Однако впоследствии мы решили разделить эти каналы. Тесты на dev-сервере могут прекратить выполняться из-за разработки и внедрения новых функций, что является нормальным процессом и не требует незамедлительной реакции. В то же время, если тест на продакшн-сервере не проходит, это требует оперативного вмешательства разработчиков.
Таким образом, генерируются следующие графики:
- Матрица конфузий с промежутками 5 лет (в абсолютных значениях);
- Матрица конфузий с промежутками 5 лет (нормализованная);
- График Реальный возраст — Предсказанный возраст.
[Что такое матрица конфузий?
Матрица конфузий - это инструмент, используемый в области машинного обучения и статистики для оценки производительности модели классификации. Она показывает, какие классы предсказываются правильно, а какие - ошибочно. Матрица конфузий помогает анализировать результаты классификации и определять, где модель делает ошибки. Она состоит из строк и столбцов, где каждая строка соответствует реальному классу, а каждый столбец - предсказанному классу. Это позволяет визуально оценить производительность модели и выявить ее слабые стороны.]
В отчете Allure можно увидеть, сколько раз модель правильно определила совершеннолетнего/несовершеннолетнего, сколько раз модель ошиблась, а также сколько фотографий из тестового набора не было принято (из-за низкого качества фотографий, наличия на ней нескольких лиц, отсутствия на фотографии человека). Причем эти данные программа представляет отдельно по совершеннолетним и отдельно по несовершеннолетним. Так мы видим, что, согласно отчетам, нейросеть успешно прошла 1820 тест-кейсов, то есть продемонстрировала свою эффективность на 80,32%.
[Для чего используется Allure?
Отчеты Allure - это визуальные отчеты о результатах тестирования, которые помогают понять, какие тесты прошли успешно, а какие нет. Они предоставляют подробную информацию о каждом тесте, включая шаги, которые были выполнены, и ошибки, которые возникли.
Сами отчеты тут могут быть тонко настроены, добавляя к тест-кейсам дополнительные метаданные: теги, метки или описания. Это позволяет структурировать отчеты в соответствии с потребностями команды разработчиков, что в итоге улучшает понимание результатов тестирования.]
Таким образом мы имеем информацию по каждому тестовому кейсу: тестовую фотографию, реальный возраст, предсказанный возраст, либо причину по которой возраст не был предсказан. Также можно сделать выборку по тестовым кейсам, которые фейлились при предыдущем прогоне теста, но успешно прошли сейчас, либо наоборот. Это позволяет видеть, с какими данными у нас проблемы и в какую сторону новые настройки меняют поведение модели.
Результаты
А вот так выглядит матрица конфузий, если ее визуализировать:
Если затрудняешься её читать, то свайпай картинку вправо.
Грубо говоря, общая ячейка для столбцов возраста – это предсказание, которое дала наша нейросеть. Чем ближе показатель к 100%, тем лучше она справилась. Но т.к. у нас стояла задача предсказывать совершеннолетие, а не точный возраст, то задача была успешно выполнена. Теперь мы можем структурировать полученные выводы:
- Ни один младенец не был определен, как совершеннолетний
- Из группы 5 — 9 лет, нейросеть также никого не определила как совершеннолетнего
- Из группы 10 — 14 лет, совершеннолетними определилось 0,8% + 1,6% + 0,8% = 3,2%;
Процесс тестирования — важный процесс, и требует наличия определенных компетенций: понимания метрик и предметной области системы. Один и тот же продукт можно тестировать разными методами, используя различные инструменты, но стоит подметить, по нашему скромному мнению, это в любом случае очень увлекательно и интересно.
Современные технологии продолжают расширять границы возможного, и нейросети, способные точно определять возраст человека, представляют собой яркий пример таких достижений. Адаптивно обученная для анализа изображений нейросеть может продемонстрировать достаточно высокую точность и надежность в определении возрастных характеристик. Это открывает широкие перспективы для её применения в различных областях, от здравоохранения и маркетинга до безопасности и развлечений.
В процессе разработки мы из раза в раз убеждаемся, что подбор и использование больших объемов данных, а также продвинутых алгоритмов машинного обучения позволяет достигать впечатляющих результатов. Однако, важно помнить о необходимости этичного использования таких технологий, учитывая вопросы конфиденциальности и возможные социальные последствия.
Взаимодействие человека с "умными" технологиями становится все более глубоким и плодотворным, и мы с оптимизмом смотрим на будущее, где нейросети будут играть ключевую роль в создании более комфортного и адаптивного мира.
Если хочешь поиграться с нейросетью определения возраста и узнать сколько визуально тебе лет – на нашем сайте данная нейросеть предоставлена в онлайн-версии. Загруженные фотографии хранятся на серверах временно и удаляются спустя несколько часов, так что можешь не переживать о конфиденциальности своих данных.
Если хочешь такую нейросеть для своего бизнеса или хочешь заказать концептуально новый продукт – оставляй заявку на нашем сайте и мы обязательно что-нибудь придумаем!
Чтобы следить за свежими новостями нашей компании, подписывайся на наш Телеграмм-канал и сообщество VK.