Маршрут и Обнаружение Транспортного средства в ROS Используя алгоритм YOLO v2 Глубокого обучения

То В этом примере показано, как использовать глубокие сверточные нейронные сети в ROS, позволило модели Simulink® выполнить обнаружение транспортного средства и маршрут. В этом примере, вы первое видео трафика чтения как вход и публикуют системы координат как sensor_msgs/Image сообщения к теме в сети ROS. Затем вы обнаруживаете транспортные средства и левые и правые контуры маршрута, соответствующие автомобилю, оборудованному датчиком в каждой системе координат, аннотируете входное изображение обнаружениями и публикуете их к теме в сети ROS. Наконец, вы генерируете оптимизированный код CUDA® для узла ROS из модели Simulink для обнаружения транспортного средства и маршрута.

Этот пример использует предварительно обученную сеть обнаружения маршрута от Обнаружения Маршрута, Оптимизированного с примером GPU Coder GPU Coder Toolbox™. Для получения дополнительной информации смотрите Обнаружение Маршрута, Оптимизированное с GPU Coder.

Этот пример также использует предварительно обученную сеть обнаружения транспортного средства от Обнаружения объектов Используя пример YOLO v2 Глубокого обучения Computer Vision Toolbox™. Для получения дополнительной информации смотрите, что Обнаружение объектов Использует Глубокое обучение (Computer Vision Toolbox) YOLO v2.

Этот пример иллюстрирует следующие концепции:

  • Смоделируйте преобразование видеокадров к изображению ROS в Simulink.

  • Смоделируйте приложение обнаружения маршрута в Simulink. Сначала видео трафика предварительно обрабатывается путем изменения размеров к 227 227 3 и умножения постоянным множителем 255. Это затем питается предварительно обученную сеть, загруженную в Predict блок из Deep Learning Toolbox™. Наконец, если левые и правые контуры маршрута обнаруживаются, параболические коэффициенты, чтобы смоделировать траектории контуров маршрута получены.

  • Смоделируйте приложение обнаружения транспортного средства в Simulink. Видео трафика обрабатывается предварительно обученным детектором YOLO v2. Эта сеть обнаруживает транспортные средства в видео и выводит координаты ограничительных рамок для этих транспортных средств и их оценки достоверности.

  • Сконфигурируйте модель Simulink для генерации узла CUDA ROS на серверной платформе.

  • Сгенерируйте исполняемый файл CUDA для модели Simulink, сконфигурированной для ROS.

Сторонние необходимые условия

Обзор

Этот пример использует три модели Simulink, которые каждый представлены как узлы ROS.. Следующая схема иллюстрирует их взаимодействие. rosImagePublisher узел читает необработанный видеофайл и преобразует данные о системе координат в изображение ROS. laneAndVechicleDetection узел выполняет маршрут и обнаружение транспортного средства и публикует снабженное аннотацией изображение. annotateImageDisplay узел отображает снабженные аннотацией изображения как видеопоток.

Загрузите видео в качестве примера

if ~exist('./caltech_washington1.avi','file')
    url = 'https://www.mathworks.com/supportfiles/gpucoder/media/caltech_washington1.avi';
    websave('caltech_washington1.avi',url);
end

Получите предварительно обученные сети обнаружения маршрута и транспортного средства

Функция загружает trainedLaneNet.mat и yolov2ResNet50VehicleExample.mat файлы, если они уже не присутствуют.

getVehicleDetectionAndLaneDetectionNetworks

Маршрут и обнаружение транспортного средства модель Simulink

laneAndVehicleDetection модель выполняет маршрут и обнаружение транспортного средства как показано. Когда изображения маршрута публикуются к теме /rawlaneimgs, модель запускает алгоритм обнаружения для них и публикует снабженные аннотацией изображения к различной теме. Для более подробного объяснения Лейна Детекшна, Вехикла Детекшна или Аннотации с помощью Ограничительных рамок Вехикла и подсистем Лейна Трэджектори, смотрите Лейна и Вехикла Детекшна в Simulink Используя Глубокое обучение.

Запустите симуляцию

Инициализируйте ведущее устройство ROS.

rosinit;

Откройте модели Simulink.

open_system('rosImagePublisher');
open_system('annotatedImageDisplay');
open_system('laneAndVehicleDetection');

Откройте диалоговое окно Configuration Parameters laneAndVehicleDetection модель. В Целевой панели Симуляции выберите ускорение GPU. В разделе Deep Learning выберите целевую библиотеку как cuDNN. В качестве альтернативы можно установить параметры с помощью следующих команд.

set_param('laneAndVehicleDetection','GPUAcceleration','on');
set_param('laneAndVehicleDetection','SimDLTargetLibrary','cudnn');
set_param('laneAndVehicleDetection','DLTargetLibrary','cudnn');

Первый показ модели, laneAndVehicleDetection и annotatedImageDisplay, путем выбора Run из от вкладки Simulation. Затем запуск rosImagePublisher, который начинает публиковать видеокадры к сети ROS. Каждый новый кадр принимается annotatedImageDisplay обновляется в окне Video Viewer.

Сгенерируйте и создайте модель Simulink

В панели Аппаратной реализации выберите Robot Operating System (ROS) for Hardware Board и задайте Поставщика Устройства и Тип устройства.

В панели Генерации кода выберите Language как C++ и включите, Генерируют код графического процессора.

set_param('laneAndVehicleDetection','TargetLang','C++');
set_param('laneAndVehicleDetection','GenerateGPUCode','CUDA');

В Генерации кода> Библиотеки> панель графического процессора Кода, включите cuBLAS, cuSOLVER и cuFFT.

set_param('laneAndVehicleDetection','GPUcuBLAS','on');
set_param('laneAndVehicleDetection','GPUcuSOLVER','on');
set_param('laneAndVehicleDetection','GPUcuFFT','on');

Чтобы сконфигурировать развертывание узла ROS на вашей локальной хост-машине, в разделе Connect вкладки ROS, набор Развертывается к Localhost. Нажмите кнопку Build and Run от вкладки ROS, чтобы развернуть узел. В конце процесса сборки вы будете видеть, что узел ROS работает на локальной хост-машине. Затем запуск annotatedImageDisplay модель, необходимо смочь смотреть видео снабженного аннотацией изображения в Video Viewer выход.

Похожие темы