20
0
0
Скопировать ссылку
Telegram
WhatsApp
Vkontakte
Одноклассники
Назад

Как мы создали нейросеть для определения возраста

Время чтения 5 минут
Нет времени читать?
Скопировать ссылку
Telegram
WhatsApp
Vkontakte
Одноклассники
20
0
0
Нет времени читать?
Скопировать ссылку
Telegram
WhatsApp
Vkontakte
Одноклассники

Меня зовут Фёдоров Роман, и в нейробизнесе я с 2020 года. Я прошел путь от проектного менеджера до операционного управленца, и мой опыт включает более 500 успешных проектов, от небольших заказов до многомиллионных решений, где я выступил главным инициатором рабочих процессов, их непосредственным участником. Сегодня я хочу поделиться историей, как мы в NeuroCore создали нейросеть для распознавания возраста, которая нашла свое применение в ретейле, маркетинге и других отраслях. 

Как мы создали нейросеть для определения возраста

Машинное зрение в ретейле: от распознавания объектов до анализа возраста

К нам нередко поступают любопытные запросы, и один из них касался именно разработки нейросети, которая может отличить совершеннолетнего человека от несовершеннолетнего. К слову, никакими готовыми наработками по распознаванию возраста мы на тот момент не обладали, но тема нас увлекла. В этой статье я расскажу, как происходил сбор датасета, зачем в него попали аниме-девочки и обезьяньи морды и какие результаты мы в итоге получили.

Почему бизнесу это важно

Нейросети, определяющие возраст, дают множество преимуществ:

  • В ретейле они помогают соблюдать законодательство при продаже алкоголя, табака или ограниченной продукции.
  • В рекламе обеспечивают доступ только для 18+ аудитории.
  • В системах контроля — от клубов до казино — снижают очереди и повышают безопасность.
  • На онлайн-платформах поддерживают безопасность и модерацию контента.

Эти решения не только уменьшают риски и оптимизируют процессы, но и улучшают пользовательский опыт.

Сбор датасета

Любая нейросеть для видеоаналитики (или компьютерного зрения) нуждается в большом объеме данных для обучения. Нужно четко понимать, какой искусственный интеллект планируется создавать. Если открытые базы готовых данных отсутствуют либо не совпадают с вашим запросом, без собственной разметки и формирования датасета не обойтись.

В нашем случае заказчик обозначил очень узкую цель — распознать совершеннолетних. Для этого потребовалось собрать два набора данных:

  1. Обучающий датасет с фотографиями людей разных возрастов.
  2. Обобщающий датасет, в котором оказались фотографии аниме-персонажей и обезьян.

Чем шире и необычнее подборка, тем лучше обобщающая способность нейросети. Чем более разнообразные образы мы «скармливаем» алгоритму, тем точнее он впоследствии определяет цель, даже если сталкивается с обстоятельствами, не встречавшимися на этапе обучения.

Разнообразие данных усиливает обобщающую способность: модель лучше справляется с шумом, вариациями освещения и нештатными входящими данными. Мы специализируемся на сложных задачах видеоаналитики, где требуется глубокая экспертиза в данных. Например, в одном проекте мы собирали датасет с имитацией оружия для распознавания угроз, а в другом фиксировали уличные инциденты для анализа поведения. 

Что такое обобщающая способность нейросетей? Представьте: вы учите компьютер отличать кошек от любых других объектов. Показав ему десятки или сотни фотографий котов, вы обучите компьютер видеть ключевые признаки кошки. Однако, если вы добавите снимки собак, птиц и рыб, компьютер научится общим паттернам распознавания всех животных и лучше выделит уникальные характеристики кошек. Аналогичным образом мы расширяем «кругозор» нашей нейросети, погружая ее в самые разные примеры.

Тестирование модели

Когда требуется понять, насколько эффективна нейросеть, распознающая возраст, мы погружаемся в тесты. Этот этап показывает, правильно ли мы выбрали подход к разработке с самого начала.

  • Визуальные отчеты. Алгоритм автоматически строит графики по итогам каждого теста. Это удобно: вся команда разработчиков видит, что пошло не так и где ожидаются потенциальные баги.
  • Мониторинг продакшен-серверов. Мы следим за загрузкой процессора, сетевой активностью, использованием оперативной памяти и диска, а также за метриками API.
  • Автотест из 23испытаний. Он каждые 15 минут запускается через GitLab Pipeline schedules, результаты фиксируются в Prometheus/Grafana, а в Телеграм уходит уведомление, если что-то пошло не так.

Сначала у нас был единый телеграм-канал для уведомлений о состоянии dev-сервера и продакшен-сервера. Но мы быстро поняли: когда тесты падают на dev, это может быть нормой из-за новых фич, а вот если ошибка на продакшен-сервере — будем реагировать молниеносно. Именно поэтому каналы разделили.

Матрицы конфузий и отчеты Allure

В результате тестов формируются:

  • матрица конфузий с промежутками 5 лет в абсолютных значениях;
  • нормализованная матрица конфузий с промежутками 5 лет;
  • график «Реальный возраст — Предсказанный возраст».

Что такое матрица конфузий? Это таблица, наглядно показывающая, куда «сместились» прогнозы модели: сколько раз она угадала класс, а сколько ошиблась. Строки обычно отображают реальный класс, а столбцы — предсказанный. Для задач по распознаванию возраста так легко увидеть, где именно модель допустила неточность. Спойлер: в конце статьи вы увидите матрицу конфузий по этому проекту 🙂

В отчете Allure можно увидеть, сколько раз нейросеть правильно определила совершеннолетних/несовершеннолетних, а где дала сбой: например, низкое качество фото, несколько лиц на одном снимке, отсутствие человека в кадре. По итогам тестирования нейросеть успешно справилась с 1820 тест-кейсами, что соответствует 80,32% точности.

Для чего используется Allure? Allure-отчеты визуализируют результаты тестов. Они дают подробное описание по каждому тестовому шагу и позволяют разработчикам оперативно понимать, где именно вернулась ошибка. Дополнительные метаданные (теги, описания) помогают структурировать тестовую документацию, а значит, упрощают анализ.

Все эти детали позволяют анализировать каждый отдельный сбой: мы видим реальный возраст, предсказанный возраст и причину пропуска. Можно сделать срезы: какие случаи «падали» в предыдущем запуске, но вдруг стали зелеными сейчас. Или наоборот. Такой подход помогает нам своевременно улучшать модель и повышать точность распознавания возраста.

Результаты

Матрица конфузий наглядна: если число в ячейке близко к 100%, значит, модель хорошо определила возрастную группу. Но основная задача была отсеивать несовершеннолетних и не давать им «18+». И вот некоторые итоги:

  • Ни одного младенца нейросеть не признала совершеннолетним.
  • В группе 5–9 лет отсутствуют ложные «18+».
  • В группе 10–14 лет в 3,2% случаев модель ошиблась и назначила «18+».

Итоги тестирования

Тестирование — это ключевой этап, позволяющий оценить реалистичность и пригодность разработанной модели для выполнения поставленных задач. Конкретно для нашей модели, распознающей возраст, результаты оказались следующими:

  • Мы проводили автотесты каждые 15 минут на серверах, результаты которых фиксировались в системах мониторинга.
  • Алгоритм результативно преодолел 1820 из 2265 тест-кейсов, что составило 80,32% качества распознавания.

Особая задача, стоявшая перед нашей командой, заключалась в том, чтобы минимизировать количество ошибок именно в возрастной категории 15–18 лет. Вот как модель справилась с этой группой: в 4,3% случаев возраст был предсказан неверно. Это немного выше общего среднего значения. Эти ошибки были связаны в основном с качеством снимков и неоднозначностью внешнего вида некоторых тестируемых (например, подростки с нехарактерным для их возраста макияжем или стилем одежды). Мы продолжаем совершенствовать эту зону модели благодаря дополнительным данным.

Вывод

На финальном этапе проектирования система была внедрена в сети партнеров, торгующих товарами возрастного ограничения. Что это изменило?

  • Сокращение времени проверки паспортов на кассах на 45%.
  • Снижение количества штрафов на 22% по сравнению с ручной проверкой.
  • Повышение отзывов — клиенты отметили ускорение операций и меньшее число конфликтов в случаях неверного определения возраста сотрудником.

Этот кейс по распознаванию возраста — лишь один пример, подробнее о наших подходах к видеоаналитике можно узнать на сайте или в телеграм-канале. В мире, где технологии эволюционируют быстрее, чем мы успеваем адаптироваться, видеоаналитика на базе ИИ становится не просто инструментом, а настоящим катализатором трансформации бизнеса. Мы в NeuroCore строим как раз такие системы, которые становятся мостами между сырыми данными и реальными результатами для бизнеса.

Комментарии0
Тоже интересно
Комментировать
Поделиться
Скопировать ссылку
Telegram
WhatsApp
Vkontakte
Одноклассники