Учимся видеть: самый простой автомобильный классификатор

Трудно занимает день, невозможно - неделю

- Канье Вест

Вступление

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

Американские водители ежедневно проводят за рулем чуть меньше часа. [Министерство транспорта США]

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

Начнем

В этой части статьи я собираюсь создать очень простой классификатор обнаружения автомобилей с использованием Python и OpenCV. Существует множество различных методов обнаружения и классификации объектов, и я собираюсь уделить особое внимание использованию каскадов Хаара. Однако сама классификация каскадов Хаара будет очень кратко рассмотрена в этой статье.

Давайте договоримся об использовании Python 3 и установим пакеты opencv-python и numpy. Для обработки нам также понадобятся кадры с видеорегистратора. Вот фрагмент кода, который станет хорошей базой для приложения:

Этот код открывает окно с первым кадром видеозаписи с видеорегистратора. Отличная работа!

Каскадный классификатор Хаара

Обучение собственному классификатору Haar Cascade требует времени, терпения и немалых теоретических знаний. Более того, ему нужен набор данных отрицательных и положительных образцов в высоком разрешении. Хорошо, что из-за популярности компьютерного зрения и автономных транспортных средств в Интернете есть множество предварительно обученных классификаторов. Вот тот, который я собираюсь использовать. Фактически, мы собираемся подробно обсудить каскады Хаара, когда перейдем к оптимизации.

Вот полный пример кода:

Он будет воспроизводить наше видео в новом окне, рисуя прямоугольники над обнаруженными автомобилями.

Продолжение следует…

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