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

Мотивация проекта

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

Начало работы

  1. Поиск нужных данных

Я нашел отличный источник данных на Kaggle, в котором было более четырехсот аннотированных изображений номерных знаков автомобилей.

2. Поиск подходящей модели

Чтобы точно и эффективно обнаруживать номерные знаки с высокой скоростью, я решил использовать алгоритм YOLOv5 от ultralytics, поскольку алгоритмы YOLO известны своей скоростью и эффективностью благодаря их единственному прямому проходу через модель для обнаружения объекта (как следует из названия — вы Только один раз посмотреть)

3. Предварительная обработка данных

Основная проблема с аннотациями заключалась в том, что они были аннотированы в формате Pascal-VOC, который был несовместим с YOLO, поэтому мне пришлось преобразовать их в формат, совместимый с YOLO, с помощью следующего кода.

4. Создание обучающих, проверочных и тестовых наборов

Поскольку данные теперь совместимы с YOLO, нам необходимо создать обучающие, проверочные и тестовые наборы для обучения, настройки и оценки модели, используя следующий код.

5. Обучение модели

Поскольку данные теперь разделены, нам нужно обучить модель. Для этого мы используем реализацию ultralytics yolov5. Следующий код для обучения модели вдохновлен поездом ultralytics yolov5 по пользовательской документации данных.

6. Выбор лучшей модели

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

7. Создание базы данных

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

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

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

8. Создайте веб-интерфейс для жителей, чтобы зарегистрироваться

Чтобы аутентифицировать членов жилого общества, мы можем создать простой веб-интерфейс, в котором секретарь общества может заполнить данные после аутентификации документов. Для создания веб-интерфейса я использовал Flask, выбор шаблонов HTML и CSS остается за пользователем, я включил ссылку на репозиторий этого проекта на github в конце этой статьи, чтобы читатели могли обратиться к коду. .

9. Выполните определение номерного знака

И теперь, чтобы обнаружить номерные знаки, мы можем загрузить модель из концентратора факела, указать пользовательские веса и определить номерные знаки из кадра с помощью OpenCV. Чтобы прочитать текст с изображения номерного знака, мы можем использовать различные доступные библиотеки OCR, лично я предпочитаю использовать EasyOCR для этой цели. Код для реализации обнаружения объекта приведен ниже.

Гитхаб-репозиторий

Kaggle Notebook для обучения модели



Будущие перспективы проекта, над которым я сейчас работаю:

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

Предложения и исправления приветствуются.

Пожалуйста, отметьте репозиторий на github, проголосуйте и прокомментируйте на kaggle, если вам понравилась моя работа.

Обо мне:

Я Аюшман Джайн, начинающий специалист по данным, получаю степень бакалавра в области науки о данных.

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