Автоматизируйте тестирование на детектор транспортного средства видения

В этом примере показано, как автоматизировать тестирование находящегося в YOLOv2 алгоритма детектора транспортного средства и сгенерированного кода при помощи Simulink® Test™. В этом примере, вас:

  • Оцените поведение находящегося в YOLOv2 алгоритма детектора транспортного средства на различных сценариях тестирования с различными тестовыми требованиями.

  • Автоматизируйте тестирование находящегося в YOLOv2 алгоритма детектора транспортного средства и сгенерированного Math Kernel Library для Глубоких нейронных сетей (MKL-DNN) код или код CUDA.

Введение

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

Для получения информации о том, как спроектировать и сгенерировать код для детектора транспортного средства, видит, Генерируют Код для Детектора Транспортного средства Видения.

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

  1. Рассмотрите требования — Исследуют сценарии тестирования и рассматривают требования, которые описывают условия испытания.

  2. Рассмотрите тестовую модель — Анализ тестовая модель детектора транспортного средства видения, которая содержит метрические оценки. Эти метрические оценки интегрируют тестовую модель с Simulink Test для автоматизированного тестирования.

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

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

  5. Автоматизируйте тестирование со сгенерированным кодом — Конфигурируют модель, чтобы сгенерировать или MKL-DNN или код CUDA от детектора транспортного средства YOLOv2, запустить автоматизированные тесты на сгенерированном коде и получить результаты анализа покрытия.

  6. Автоматизируйте тестирование параллельно — Уменьшают полное время выполнения для тестов при помощи параллельных вычислений на многоядерном компьютере.

В этом примере вы включаете симуляцию уровня системы посредством интеграции с Нереальным Engine™ от Epic Games®. 3D среда симуляции требует Windows® 64-битная платформа.

if ~ispc
    error("The 3D simulation environment requires a Windows 64-bit platform")
end

Рассмотрите требования

Этот пример содержит 10 сценариев тестирования для оценки модели. Чтобы задать высокоуровневые требования тестирования для каждого сценария, используйте Simulink Requirements™.

Чтобы исследовать тестовые требования и тестовую модель, откройте рабочую копию файлов проекта в качестве примера. MATLAB копирует файлы в папку в качестве примера так, чтобы можно было отредактировать их.

addpath(fullfile(matlabroot,"toolbox","driving","drivingdemos"))
helperDrivingProjectSetup("VisionVehicleDetector.zip",workDir=pwd);

Откройте тестовый файл требований.

open("VisionVehicleDetectorTestRequirements.slreqx")

Можно также открыть файл с помощью вкладки Requirements менеджера по Требованиям приложение в Simulink.

Панель отображает информацию о сценариях тестирования и тестовых требованиях в текстовом и графическом формате.

  • scenario_VVD_01_Curve_FiveVehicles — Кривой дорожный сценарий с автомобилем, оборудованным датчиком в левом маршруте и четырех целевых транспортных средствах, перемещающихся в смежных маршрутах.

  • scenario_LFACC_01_Curve_DecelTarget — Кривой дорожный сценарий с замедляющимся ведущим транспортным средством в маршруте эго.

  • scenario_LFACC_02_Curve_AutoRetarget — Кривой дорожный сценарий с изменяющимися ведущими транспортными средствами в маршруте эго.

  • scenario_LFACC_03_Curve_StopnGo — Кривой дорожный сценарий с ведущим транспортным средством, замедляющимся в маршруте эго.

  • scenario_LFACC_04_Curve_CutInOut — Кривой дорожный сценарий с ведущим сокращением транспортного средства в маршрут эго, чтобы обогнать медленное транспортное средство в смежном маршруте и затем сокращение из маршрута эго.

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

  • scenario_LFACC_06_Straight_StopandGoLeadCar — Прямой дорожный сценарий с ведущим транспортным средством, которое ломается в маршруте эго.

  • scenario_FVSF_01_Curve_FourVehicles — Кривой дорожный сценарий с ведущим сокращением транспортного средства из маршрута эго, чтобы обогнать медленное транспортное средство.

  • scenario_FVSF_02_Straight_FourVehicles — Прямой дорожный сценарий, где неавтомобили, оборудованные датчиком варьируются свои скорости.

  • scenario_FVSF_03_Curve_SixVehicles — Кривой дорожный сценарий, где автомобиль эго варьируется своя скорость.

Рассмотрите тестовую модель

Пример снова использует модель от, Генерируют Код для Детектора Транспортного средства Видения.

Откройте тестовую модель.

open_system("VisionVehicleDetectorTestBench")

Чтобы сконфигурировать тестовую модель, используйте helperSLVisionVehicleDetectorSetup скрипт. Задайте сценарий тестирования, как введено к скрипту настройки при помощи scenarioFcnName входной параметр. Значение для scenarioFcnName должно быть одно из имен сценария, заданных в тестовых требованиях. Задайте имя варианта детектора как YOLOv2 Simulation использовать детектор транспортного средства YOLOv2 в режиме normal mode и YOLOv2 Code Generation использовать детектор транспортного средства YOLOv2 в программном обеспечении в режиме (SIL) цикла.

Запустите скрипт настройки.

detectorVariantName = "YOLOv2 Simulation";
helperSLVisionVehicleDetectorSetup(scenarioFcnName="scenario_VVD_01_Curve_FiveVehicles", ...
    detectorVariantName=detectorVariantName)

Можно теперь симулировать модель и визуализировать результаты. Для получения дополнительной информации о симуляции и анализе результатов симуляции, см. Сгенерировать Код для Детектора Транспортного средства Видения.

Этот пример фокусируется на автоматизации запусков симуляции, чтобы протестировать детектор транспортного средства YOLOv2 на различных ведущих сценариях при помощи Simulink Test. Metrics Assessment подсистема выводит необходимые сигналы вычислить метрики.

Откройте Metrics Assessment подсистема.

open_system("VisionVehicleDetectorTestBench/Metrics Assessment");

Metric Assessment подсистема выводит эти значения:

  • Количество агентов — количество транспортных средств в области значений датчика камеры в любой момент времени.

  • Истинные положительные стороны — количество транспортных средств, которые алгоритм обнаруживает правильно.

  • Ложные отрицательные стороны — количество транспортных средств, которые присутствуют, но что алгоритм не обнаруживает.

  • Ложные положительные стороны — количество транспортных средств, которые обнаруживает алгоритм, когда транспортные средства не присутствуют в действительности.

Журналы модели выход следуют из Metric Assessment подсистема к переменной logsout базового рабочего пространства. Можно проверить эффективность алгоритма детектора транспортного средства YOLOv2 путем проверки и графического вывода вычисленных метрик. После симуляции можно также вычислить среднюю точность и средний коэффициент непопаданий от этих регистрируемых метрик, и проверить эффективность детектора транспортного средства YOLOv2 с помощью них.

Отключите визуализацию во время выполнения

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

Отключите визуализацию во время выполнения для Vision Vehicle Detector подсистема.

load_system("VisionVehicleDetector")
blk = "VisionVehicleDetector/Vision Vehicle Detector/YOLOv2 Simulation/YOLOv2";
set_param(blk,EnableDisplay="off");

Конфигурируйте Моделирование 3D Блок Configuration Сцены, чтобы отключить 3D окно симуляции и запустить Нереальный Engine в бездисплейном режиме.

blk = "VisionVehicleDetectorTestBench/Sensors and Environment/Simulation 3D Scene Configuration";
set_param(blk,EnableWindow="off");

Автоматизируйте тестирование

Откройте VisionVehicleDetectorMetricAssessments.mldatx тестовый файл в менеджере по Тесту. Менеджер по Тесту сконфигурирован, чтобы автоматизировать тестирование алгоритма детектора транспортного средства YOLOv2.

sltestmgr
testFile = sltest.testmanager.load("VisionVehicleDetectorTestAssessments.mldatx");

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

  • ОЧИСТКА — вызывает helperPlotDetectionMetrics функция, чтобы построить обнаружение следует из Metric Assessment подсистема. Для получения дополнительной информации об этих графиках, смотрите, Генерируют Код для примера Детектора Транспортного средства Видения.

  • ЛОГИЧЕСКИЕ ОЦЕНКИ AND TEMPORAL — Вызывают пользовательские условия оценить алгоритм.

  • ПОЛЬЗОВАТЕЛЬСКИЕ КРИТЕРИИ — вызывают helperVerifyPrecisionAndSensitivity функция, чтобы оценить метрики точности и чувствительности.

Запустите и исследуйте результаты для одного сценария тестирования

Протестируйте системную модель на scenario_VVD_01_Curve_FiveVehicles сценарий.

testSuite = getTestSuiteByName(testFile,"Test Scenarios");
testCase = getTestCaseByName(testSuite,"scenario_VVD_01_Curve_FiveVehicles");
resultObj = run(testCase);

Сгенерируйте протоколы испытаний, полученные после симуляции.

sltest.testmanager.report(resultObj,"Report.pdf", ...
    Title="YOLOv2 Vehicle Detector", ...
    IncludeMATLABFigures=true,IncludeErrorMessages=true, ...
    IncludeTestResults=false,LaunchReport=true);

Исследуйте Report.pdf. Test environment разделите показывает платформу, на которой запущен тест, и версия MATLAB используется для тестирования. Summary разделите показывает результат теста и длительность симуляции в секундах. Results разделите показывает передачу или результаты сбоя на основе логических и временных критериев оценки. Индивидуально настраиваемые критерии, используемые, чтобы оценить алгоритм для этого теста:

  1. В любом моменте времени, TruePositives <= NumActorsTruth

  2. В любом моменте времени, FalsePositives<= 1

  3. В любом моменте времени, (TruePositives + FalseNegatives) == NumActorsTruth

Отчет также отображает графики, регистрируемые от helperPlotDetectionMetrics функция.

Запустите и исследуйте результаты для всех сценариев тестирования

Запустите симуляцию системы для всех тестов.

run(testFile)

В качестве альтернативы можно выбрать Play в менеджере по Тесту приложение.

После завершения тестовых симуляций можно просмотреть результаты для всех тестов во вкладке Results и Artifacts менеджера по Тесту. Для каждого теста проверяйте Custom Criteria Result и Logical And Temporal Assessments. Можно визуализировать полную передачу или привести результаты к сбою.

Можно найти сгенерированный отчет в текущей рабочей директории. Этот отчет содержит подробные сводные данные передачи или состояний сбоя и графиков для каждого теста.

Проверьте тестовое состояние в редакторе требований

Откройте Редактор Требований и выберите Display. Затем выберите Verification Status, чтобы видеть сводные данные состояния верификации для каждого требования. Зеленые и красные панели указывают на передачу и состояние сбоя, соответственно, для каждого результата испытаний симуляции.

Автоматизируйте тестирование со сгенерированным кодом

VisionVehicleDetectorTestBench модель позволяет генерировать или код MKL-DNN или код CUDA от компонента детектора Транспортного средства YOLOv2, чтобы выполнить регрессионное тестирование этих компонентов с помощью верификации SIL.

Сконфигурируйте детектор YOLOv2, чтобы сгенерировать код MKL-DNN

Если у вас есть Embedded Coder™ и лицензии Simulink Coder™, можно сгенерировать код MKLDNN для детектора транспортного средства YOLOv2. Установите DLTargetLibrary к "MKL-DNN".

Сконфигурируйте детектор транспортного средства YOLOv2, чтобы сгенерировать код MKL-DNN.

set_param("VisionVehicleDetector",TargetLang="C++")
set_param("VisionVehicleDetector",GenerateGPUCode="None")
set_param("VisionVehicleDetector",DLTargetLibrary="MKL-DNN")

Сконфигурируйте Детектор YOLOv2, чтобы Сгенерировать код CUDA

Если у вас есть GPU Coder™ и лицензии Simulink Coder, можно сгенерировать код CUDA для детектора транспортного средства YOLOv2. Чтобы проверить, что компиляторы и библиотеки, необходимые для выполнения этого раздела, настраиваются правильно, используйте coder.checkGpuInstall функция. Установите DLTargetLibrary к любому "cudnn" или "tensorrt", на основе доступности соответствующих библиотек по цели. Для получения дополнительной информации о том, как проверить среду графического процессора, см. Сгенерировать Код для примера Детектора Транспортного средства Видения.

Сконфигурируйте модель, чтобы сгенерировать код CUDA.

set_param("VisionVehicleDetector",TargetLang="C++")
set_param("VisionVehicleDetector",GenerateGPUCode="CUDA")
set_param("VisionVehicleDetector",DLTargetLibrary="cuDNN")

Сохраните сконфигурированную систему с помощью save_system("VisionVehicleDetector").

Сконфигурируйте и симулируйте модель в режиме SIL для всех сценариев тестирования

Определите имя варианта детектора к YOLOv2 Code Generation и режим симуляции модели к режиму SIL.

detectorVariantName = "YOLOv2 Code Generation";
model = "VisionVehicleDetectorTestBench/Vision Vehicle Detector";
set_param(model,SimulationMode="Software-in-the-loop")

Симулируйте систему для всех сценариев тестирования и сгенерируйте протокол испытаний при помощи команды MATLAB: run(testFile). Рассмотрите графики и результаты в сгенерированном отчете.

Получите результаты покрытия

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

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

Автоматизируйте тестирование параллельно

Если у вас есть лицензия Parallel Computing Toolbox™, можно сконфигурировать менеджера по тесту, чтобы выполнить тесты в параллели с помощью параллельного пула. Чтобы запустить тесты параллельно, отключите визуализацию во время выполнения и сохраните модели с помощью save_system("VisionVehicleDetector") и save_system("VisionVehicleDetectorTestBench"). Протестируйте менеджера, использует кластер Parallel Computing Toolbox по умолчанию и выполняет тесты только на локальной машине. Запущение тестов в параллели ускоряет выполнение и уменьшает количество времени, требуемое для тестирования. Для получения дополнительной информации о том, как сконфигурировать тесты в параллели с помощью менеджера по Тесту, смотрите, что Тесты Запуска Используют Параллельное Выполнение (Simulink Test).

Похожие темы