Вас когда-нибудь заинтриговали беспилотные автомобили и лежащие в их основе алгоритмы? Этот пост позволяет вам погрузиться глубже, используя Набор данных для самостоятельного вождения автомобилей Udacity, предоставленный Roboflow.

YOLOv5

YOLO - Y ou O nly L ook O nce - это семейство объектов. архитектуры и модели обнаружения, предварительно обученные на наборе данных COCO. YOLOv5 🚀 представляет собой открытое исследование Ultralytics методов искусственного интеллекта видения будущего.

YOLOv5 быстр как молния. Он обеспечивает ультрасовременное обнаружение объектов с последними тестами скорости 1666 FPS на COCO согласно отчетам. YOLOv5 также удивительно точен. Все это, в сочетании с тем фактом, что YOLOv5 намного меньше по размеру, делает YOLOv5 одной из лучших архитектур для самоуправляемых автомобилей, если не лучшей.

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

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

Шаги

Мы рассмотрим шаги, необходимые для обучения YOLOv5 на Udacity Self Driving Car Dataset.

Вы можете сослаться на этот блокнот Google Colab и следовать за ним.

Чтобы обучить наш детектор, мы делаем следующие шаги:

  • Подготовка набора данных
  • Установите зависимости YOLOv5
  • Загрузите набор данных по обнаружению объектов для самостоятельного вождения автомобиля из Roboflow
  • Настройте файлы YAML для обучения
  • Обучение модели
  • Оцените производительность
  • Визуализируйте данные обучения
  • Выполнение вывода на тестовых изображениях

Подготовка набора данных

Мы будем использовать Набор данных Udacity Self Driving Car, который доступен в наборах данных Roboflow Public Object Detection.

Набор данных содержит 97 942 метки для 11 классов и 15 000 изображений. Есть 1720 нулевых примеров (изображения без объектов на дороге). В 11 классов входят автомобили, грузовики, пешеходы, сигнальные машины и велосипедисты.

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

Установите зависимости YOLOv5

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

Google Colab поставляется с предустановленным ускорителем графического процессора, который позволяет нам ускорить обучение. Обязательно настройте эти параметры перед началом и импортируйте необходимые зависимости.

Скачать набор данных из Roboflow

Используя Roboflow, вы можете загрузить набор данных, создать бесплатную учетную запись и загрузить свой набор данных в свою рабочую область в качестве проекта. После аннотирования, применения необходимых шагов предварительной обработки и дополнения загрузите фрагмент кода в формате YOLOv5 PyTorch. Я изменил размер всех изображений до 416 x 416 пикселей и увеличил шум на 5%, чтобы модель лучше обучалась.

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

Настройте файлы YAML для обучения

Для обучения модели YOLOv5 нам понадобятся два файла YAML.

Первый YAML, который нужно указать:

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

Этот наш YAML выглядит так:

Второй YAML - указать всю конфигурацию модели. Сетевая архитектура этого может быть изменена, и также необходимо указать правильное num_classes.

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

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

  • img: определить размер входного изображения
  • партия: определить размер партии.
  • эпохи: укажите количество эпох обучения.
  • data: укажите путь к файлу YAML
  • cfg: укажите конфигурацию модели
  • веса: укажите собственный путь к весам.
  • name: названия результатов
  • nosave: сохранить только последнюю контрольную точку
  • cache: кешируйте изображения для более быстрого обучения.

Оцените производительность

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

Визуализируйте данные обучения

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

Выполнение вывода на тестовых изображениях

Теперь возьмем обученную модель и сделаем вывод на тестовых изображениях. Мы используем веса, которые были созданы при обучении модели для вывода.

Давайте визуализируем наши результаты:

Заключение

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

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

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