Примеры студенческих проектов /

Распознавание марки и модели автомобиля по фотографии

Участники проекта

Алексей Артамонов

Алексей Артамонов

Выпуск 2014

Вадим Лебедев

Константин Фёдоров

Константин Фёдоров

Выпуск 2014
Валерия Черненко

Валерия Черненко

Выпуск 2014

Руководитель

Дмитрий Качмар

Дмитрий Качмар

Яндекс

О проекте

Задача проекта — распознавание марки и модели автомобиля по фотографии. Почему мы хотим это сделать? У нас есть большой датасет с фотографиями автомобилей, кажется, что никто до нас подобной задачей не занимался, так почему бы и нет? Для чего это нужно? Например, можно уточнять и дополнять объявления о продаже автомобилей, распознавая марку и модель авто. Или сделать мобильное приложение, которое подскажет, что это за машина припаркована на улице. Или не подскажет :)

Участники проекта

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

  • Вадим — с направления CS — занимался анализом статей, посвященных компьютерному зрению и машинному обучению
  • Алексей — с направления DM — обрабатывал изображения с помощью различных фильтров и искал ключевые элементы на изображениях
  • Валерия — с направления SE — готовила датасеты с автомобилями и изучала алгоритмы сегментации изображений
  • Константин — с направления SE — объединял все программные наработки и алгоритмы в единую систему

Решение задачи

Сначала мы решили использовать стандартный подход в поиске объекта на изображении: выделение дескрипторов (специфичных областей изображения), инвариантных относительно поворота, сдвига и масштабирования. 

Самые известные алгоритмы, которые используются в подобных целях — это SURF/SIFT/ASIFT. Но достаточно быстро мы поняли, что различия в освещении, морфологии поверхностей, падающие тени, да и просто различная степень немытости многих машин не позволяет нам однозначно находить и эффективно применять дескрипторы.

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

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

Тогда мы решили использовать подход «разделяй и властвуй»: разбить задачу на несколько более простых подзадач и решить их по отдельности:

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

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