Прежде чем перейти к статье, хочу вам представить, экономическую онлайн игру Brave Knights, в которой вы можете играть и зарабатывать. Регистируйтесь, играйте и зарабатывайте!
Аммар Али вместе со своим другом Жаафаром Махмудом взяли золото каггла по созданию 3D-реконструкции. Их команда вошла в топ-10 победителей конкурсса Google Image Matching Challenge 2023. Аммар Али работает старший инженер-исследователь MTS AI и учится в аспирантуре ИТМО на факультете информационных технологий и программирования, его друг Жаафар тоже аспирант ИТМО, но учится на факультете систем управления и робототехники. В Image Matching от Google они принимают участие второй год подряд. В 2022-м вошли в топ-30. Для Аммара это далеко не первая победа в международном конкурсе. Мы решили узнать у него подробности - какое решение принесло им золото Image Matching Challenge 2023, и как вообще победить на международных соревнованиях по ИИ.
— Аммар, поздравляем тебя с победой. Расскажи немного о конкурсе.
— Google Image Matching Challenge проходит ежегодно, начиная с 2019-го. В этом году конкурс длился два месяца с 11 апреля по 12 июня. Целью было создать 3D-реконструкцию объекта по датасету из фотографий. Честно говоря, для меня это было немного сложнее, чем в прошлом году, потому что требовались не только знания в области машинного обучения. Нам было нужно применить дополнительные алгоритмы, математическую оптимизацию структуры для построения 3D-реконструкции, где до сих пор специализировались на Slam в целом в робототехнике. В конкурсе я отвечал за часть задач, связанную с искусственным интеллектом, а Жаафар занимался оптимизацией и настройкой алгоритмов.
— Какое решение вы предложили?
— Наш способ решения задачи включал в себя целый набор инструментов. Мы создали нейросеть, которая анализировала изображение, ракурс объекта и поворачивала его, если это требовалось. Далее нам нужно было собрать как можно больше пар изображений. Обычно для таких задач разработчики используют все возможные пары. Но в данном соревновании это невозможно из-за временных рамок. У нас было максимум девять часов на то, чтобы решение было доступно для всего набора данных. Итак, мы находили пары изображений с наибольшим совпадением ракурса и расположения объекта на фото, чтобы извлечь из них сам объект. Таким образом, мы рассчитывали поворот и перемещение изображений, а после этого строили облако точек. Для этого мы создали поисковую систему, которая находит наилучшее соответствие предыдущему изображению. За этим следует извлечение объектов из изображения в качестве локального дескриптора и их сопоставление. Итак, мы находим общие точки и соединяем их. И это только ML-часть. После этого за дело брались математические алгоритмы, такие как настройка пакета оптимизации и BMW. На этом этапе главная сложностью заключалась в следующем: на каждом изображении было несколько соединенных между собой точек. И нам нужно было найти правильный поворот, чтобы мы могли построить наше облако точек, а затем выполнить триангуляцию с корректировкой лучей. Так что эта часть больше похожа на множество инструментов. Это не ml, это больше похоже на математику и оптимизацию.
— Скажи, какие способы решения этой задачи у вас не сработали?
— В течение двух месяцев мы каждый день могли отправлять по пять вариантов решения задачи. При этом отправляли не результат, а код, который запускался на платформе организаторов. Код должен был работать в течение девяти часов. Мы перепробовали огромное количество методов, которые в итоге не привели нас к успеху. Например, мы тестировали pixel-perfect-sfm. На бумаге он давал хорошие результаты и, казалось бы, усилил наш пайплайн, но при проверке не сработал. Помимо этого, мы тестировали самые современные методы выделения признаков для плотного сопоставления, но безуспешно. Мы попробовали некоторую фильтрацию по ключевым точкам, метод суперклея. И это тоже не сработало.
— Ты знаком с решениями, которые предложили другие команды? Как ты их оцениваешь?
— Честно говоря, самое лучшее решение предложили участники из Китая. Они создали принципиально новую архитектуру, которая позволяла улучшить результаты. Они действительно сделали свою работу на отлично. Какой-то другой участник использовал, например, оптимизацию с использованием математики для того, чтобы достичь результатов. Мы в свою очередь стали лучшими участниками, которые использовали только одну нейронную сеть.
— В каких соревнованиях по искусственному интеллекту ты участвовал раньше?
— За последние три года я выиграл семь международных конкурсов по машинному обучению в различных сферах. В том числе я победил в соревновании, организованном при поддержке NASA. Там нужно было рассчитать индекс солнечного ветра, используя данные из космоса, и создать модель предсказания электромагнитных штормов в поле Земли. Далее был конкурс, где требовалось создать поисковую систему для спасения китов, которым угрожает опасность из-за станции “Стик”.
Также я выиграл четыре конкурса AI Journey. В 2021 году это было соревнование по компьютерному зрению. Участники создавали алгоритмы, способные распознавать знаки на железной дороге при отправлении поезда. В 2022-м я одержал победу сразу в нескольких конкурсах: AI4Talk, AI4Biology, FusionBrain. Подробнее о них можно узнать здесь. На этих соревнованиях мы создавали модели speech-to-text, text-to-speech для редкого языка, используемого в России, разрабатывали классификатор бактерий по спектральной информации. Еще один конкурс был посвящен созданию мультимодального приложения, способного решать 12 различных задач, включая Math Question Answering, Test Question Answering, Visual Question Answering, Image generation, Image captioning, Optical character recognition
Помимо этого, я выиграл хакатон, организованный компанией Evraz. Он не связан с соревнованиями AI Journey. Здесь мы разрабатывали систему обнаружения опасности для сотрудников, работающих на заводе. И это только конкурсы, в которых я победил, тех, где я участвовал, наберется гораздо больше.
— Какие рекомендации ты бы дал тем, кто хочет не просто принять участие в международных конкурсах по искусственному интеллекту, а победить?
— Самое главное — начать и не бояться. Не думать, что участие в конкурсе — нечто невероятно сложное. Вы можете сделать участие в конкурсах чем-то вроде хобби, потому что соревновательный дух — это очень здорово. Лучше подавать заявку на участие в самом начале кампании: так у вас будет больше времени на подготовку решения. И конечно, старайтесь совершенствовать его каждый день, чтобы в итоге оказаться одним из сильнейших. А что насчет уровня знаний, который требуется для участия в соревнованиях по искусственному интеллекту, то здесь, чтобы быть уверенным в своих силах, лучше выбрать конкурс, который соответствует вашей специальности.
Если кому-то хочется участвовать в соревнованиях по нескольким направлениям, то это тоже вариант. Правда, придется потратить гораздо больше времени на то, чтобы читать статьи, совершенствоваться в различных сферах ИИ, и принимать участие в различных конкурсах.