Около 6 лет назад я участвовал в создании прикольного сервиса на основе ML. Мы делали облако для матчинга фотографий с мероприятий и участников этих мероприятий.
Работало это так: компания загружала пачку фотографий с мероприятий (например, корпоративов или конференций), а участникам на основании их аватарок подгружались только те фотографии, на которых они присутствуют.
Прикольно, что сейчас такой функционал есть практически в любом хранилище фото, но тогда это было диковинкой.
Давайте рассмотрим, как это работало под капотом:
1/ Компания загружала фотографии, которые с помощью opencv и
numpy превращались в матрицы и тензоры с числами.
2/ Далее на каждой фотографии мы искали лица с помощью dlib или аналогичных библиотек.
3/ После этого каждое найденное лицо подавалось на вход
сверточной нейронной сети (как сейчас помню - я использовал SphereFace
CNN) и на выходе получался уникальный вектор-эмбеддинг из 512 чисел.
4/ Далее мы снижали размерность получившегося вектора с помощью
метода главных компонент PCA, чтобы с ним было проще работать.
5/ Шаги 1-4 мы проделывали и с аватарками пользователей.
6/ Далее мы решали задачу
многоклассовой классификации. 1 пользователь = 1 аватарка = 1 класс. Нам нужно каждое найденное лицо отнести к конкретному классу. Это будет эквивалентно «о, этот чувак нашелся на этой фотографии!».
Алгоритм классификации мы придумали свой, модифицировали классический KNN. Метрики качества были стандартные - ROC/AUC, F1, precision и прочее.
В итоге такая цепочка
«фотографии → обработка CNN → снижение размерности PCA → многоклассовая классификация» позволяла участникам мероприятий заходить в кабинет и сразу после регистрации видеть свои фотографии. Причем мы добились очень высокого качества!
Это живая иллюстрация применения ML в обычной жизни. Поэтому, когда в следующий раз в ВК увидите уведомление «кажется, мы нашли вас на этой фотографии» - знайте, под капотом там работает примерно такая же штука.
И, пользуясь случаем, делаюсь радостной новостью - мы запустили
новый курс «Инженер машинного обучения». Если вы хотите освоить профессию ML-щика или освоить новые скиллы - обязательно записывайтесь, вам точно понравится!
🤘
А для подписчиков моего канала братский подгон - дополнительная
скидка 5% (помимо early birds цен на первый поток). Скидка по промокоду
andron5 действует до пятницы, 20 дек.
P.S. Пока писал пост, решил, что я точно проведу для студентов мастер-класс, где мы прям разберем решение этого кейса. Открыл свой код, захотелось снова в нем поковыряться)
P.P.S. Мы не только курс новый запустили, но и дизайн лендинга обновили, зацените!