В этом примере демонстрируются проблемы, связанные с отслеживанием транспортных средств на шоссе при наличии радиолокационных отражений многолучевого распространения. Он также показывает подход фильтрации призраков, используемый с расширенным отслеживающим объектом для одновременной фильтрации обнаружения призраков и отслеживания объектов.
Автомобильные радиолокационные датчики устойчивы к неблагоприятным условиям окружающей среды, возникающим во время вождения, таким как туман, снег, дождь и сильный солнечный свет. Автомобильные радиолокационные датчики имеют это преимущество, поскольку они работают по существу на больших длинах волн по сравнению с датчиками видимой длины волны, такими как лидар и камера. В качестве побочного эффекта использования больших длин волн поверхности вокруг радиолокационного датчика действуют подобно зеркалам и создают нежелательные обнаружения вследствие многолучевого распространения. Эти обнаружения часто называют скрытыми обнаружениями, потому что они, по-видимому, происходят из регионов, где не существует цели. В этом примере показано влияние этих многолучевых отражений на разработку и настройку стратегии отслеживания объектов с использованием радиолокационных обнаружений. Для получения дополнительной информации о многолучевом явлении и моделировании обнаружения призраков см. пример Simulate Radar Ghosts to Multipath Return (Radar Toolbox).
В этом примере моделируется обнаружение многолучевого распространения с помощью радиолокационных датчиков в сценарии вождения городского шоссе. Трасса моделируется шлагбаумом по обе стороны дороги. Сценарий состоит из эго-транспортного средства и четырех других транспортных средств, едущих по шоссе. Эго-автомобиль оснащен четырьмя радиолокационными датчиками, обеспечивающими 360-градусное покрытие. На этом изображении показана конфигурация радиолокационных датчиков и детекторы от одного сканирования датчиков. Красные области представляют поле зрения радиолокационных датчиков, а черные точки - детекторы.
![]()
Радиолокационные датчики сообщают об обнаружениях от транспортных средств и от барьеров, которые находятся по обе стороны шоссе. Также РЛС сообщают об обнаружениях, которые, похоже, не происходят от какого-либо реального объекта в сценарии. Это призрачные обнаружения из-за многолучевого распространения радиолокационных сигналов. Объектные трекеры предполагают, что все обнаружения происходят от реальных объектов или равномерно распределенных случайных загромождений в поле зрения. Вопреки этому предположению, обнаружения призраков обычно более устойчивы, чем загромождение, и ведут себя подобно обнаружениям от реальных целей. По этой причине алгоритм отслеживания объектов с большой вероятностью генерирует ложные дорожки из этих обнаружений. Важно отфильтровать эти обнаружения перед обработкой радиолокационного сканирования с помощью трекера.
Сценарий, используемый в этом примере, создается с помощью drivingScenario. Вы используете radarDataGenerator (Radar Toolbox) Система object™ для моделирования возвращений радара с прямого пути и от отражений в сценарии. HasGhosts свойство датчика указано как true для моделирования многолучевых отражений. Создание сценария и моделей датчиков переносится в вспомогательную функцию, helperCreateMultipathDrivingScenario, который прилагается к этому примеру. Набор данных, полученный при моделировании датчика, записывается в файл MAT, который содержит данные с радара и соответствующие конфигурации датчика. Для записи данных для другого сценария или конфигурации датчика можно использовать следующую команду:
% Command to record data.
helperRecordData(scenario, egoVehicle, sensors, fName);
% Create the scenario [scenario, egoVehicle, sensors] = helperCreateMultipathDrivingScenario; % Load the recorded data load('MultiPathRadarScenarioRecording.mat','detectionLog','configurationLog');
В этом разделе настраивается интегрированный алгоритм для одновременной фильтрации радиолокационных обнаружений и отслеживания расширенных объектов. Блок-схема иллюстрирует цепь радиолокационной обработки, используемую в этом примере.
![]()
Далее вы узнаете о каждом из этих шагов и соответствующих вспомогательных функциях.
Доплеровский анализ
Радиолокационные датчики сообщают измеренную относительную радиальную скорость отраженных сигналов. На этом шаге вы используете измеренную радиальную скорость обнаружений, чтобы определить, является ли цель статической или динамической [1]. При предыдущем радиолокационном сканировании большой процент радиолокационных обнаружений происходит из статической среды вокруг эго-транспортного средства. Поэтому классификация каждого обнаружения как статического или динамического значительно помогает улучшить понимание сцены. Вы используете функцию помощника, helperClassifyStaticDynamic, чтобы классифицировать каждое обнаружение как статическое или динамическое.
Статические отражатели
Статическая среда также обычно ответственна за большой процент отражений, о которых сообщают радиолокационные датчики. После сегментирования набора данных и поиска статических обнаружений выполняется их обработка для поиска сегментов 2-D линий в кадре координат эго-транспортного средства. Во-первых, алгоритм DBSCAN используется для кластеризации статических обнаружений в различные кластеры вокруг транспортного средства ego. Во-вторых, на каждый кластер помещается сегмент 2-D линии. Эти установленные линейные сегменты определяют возможные отражающие поверхности для сигналов, распространяющихся обратно на радар. Вы используете функцию помощника helperFindStaticReflectors для поиска этих 2-D сегментов линии из статических обнаружений.
Анализ окклюзии
Отражение от поверхностей приводит к обнаружениям от радиолокационного датчика, которые, по-видимому, возникают за отражателем. После сегментирования динамических обнаружений от радара используется простой анализ окклюзии, чтобы определить, перекрыто ли обнаружение радара за возможным отражателем. Поскольку сигналы могут отражаться статическими или динамическими объектами, анализ окклюзии выполняется в два этапа. Во-первых, динамические обнаружения проверяют по окклюзии с 2-D отрезками линии, представляющими статические отражатели. Вы используете функцию помощника helperClassifyGhostsUsingReflectors классифицировать, является ли обнаружение закупоренным статическим отражателем. Во-вторых, алгоритм использует информацию о предсказанных дорожках из расширенного алгоритма слежения для проверки окклюзии от динамических объектов в сцене. Алгоритм использует только подтвержденные дорожки от трекера, чтобы предотвратить переполнение радиолокационных обнаружений при наличии предварительных или ложных дорожек. Вы используете функцию помощника helperClassifyGhostsUsingTracks классифицировать, является ли обнаружение перекрытым динамическим объектом.
Весь этот алгоритм обработки радиолокационных обнаружений и их классификации затем оборачивается в большую вспомогательную функцию, helperClassifyRadarDetections, который классифицирует и разделяет список обнаружения на четыре основные категории:
Целевые обнаруженные объекты - эти обнаруженные объекты классифицируются как исходящие от реальных динамических целей в сцене.
Обнаружения среды - эти обнаружения классифицируются как исходящие из статической среды.
Ghost (Static) - эти обнаружения классифицируются для получения от динамических целей, но отражаются через статическую среду.
Ghost (Динамический) - эти обнаружения классифицируются, чтобы исходить из динамических целей, но отражаются через другие динамические объекты.
Целевые обнаружения обрабатываются с помощью расширенного трекера объектов. В этом примере используется расширенный трекер объектов «Гамма-гауссова обратная гипотеза вероятности Вишарта» (GGIW-PHD). Трекер GGIW-PHD моделирует цель с эллиптической формой, и модель измерения предполагает, что обнаружения равномерно распределены в пределах цели. Эта модель позволяет целевому объекту принимать 2-рывковые скрытые обнаружения, которые имеют более высокую вероятность быть неправильно классифицированными как реальная цель. Эти 2-рывковые призрачные обнаружения также сообщают о доплеровском измерении, которое несовместимо с фактическим движением цели. Когда эти скрытые обнаружения и реальные целевые обнаружения от одного и того же объекта оцениваются как принадлежащие одному и тому же разделу обнаружений, неправильная доплеровская информация потенциально может вызвать расхождение оценки дорожки.
Чтобы уменьшить эту проблему, трекер обрабатывает измерения дальности с более высокой дисперсией шума измерения, чтобы учесть это несовершенство в целевой модели измерения. Трекер также использует комбинацию высокого порога назначения и низкого порога объединения. Высокий порог назначения позволяет трекеру уменьшить генерацию новых компонентов из обнаруженных целей-призраков, которые неправильно классифицируются как обнаруженные цели. Низкий порог слияния позволяет трекеру отбрасывать скорректированные компоненты (гипотезу) дорожки, которые могли бы расходиться из-за коррекции с обнаружениями призраков.
Вы настраиваете трекер с помощью trackerPHD object™ системы. Для получения дополнительной информации о расширенных объектных трекерах см. пример расширенного объектного слежения за автотранспортными средствами с помощью радара и камеры.
% Configuration of the sensors from the recording to set up the tracker [~, sensorConfigurations] = helperAssembleData(detectionLog{1},configurationLog{1}); % Configure the tracker to use the GGIW-PHD filter with constant turn-rate motion model for i = 1:numel(sensorConfigurations) sensorConfigurations{i}.FilterInitializationFcn = @helperInitGGIWFilter; sensorConfigurations{i}.SensorTransformFcn = @ctmeas; end % Create the tracker using trackerPHD with Name-value pairs tracker = trackerPHD('SensorConfigurations', sensorConfigurations,... 'PartitioningFcn',@(x)helperMultipathExamplePartitionFcn(x,2,5),... 'AssignmentThreshold',450,... 'ExtractionThreshold',0.8,... 'ConfirmationThreshold',0.98,... 'MergingThreshold',25,... 'DeletionThreshold',1e-3,... 'BirthRate',1e-2,... 'HasSensorConfigurationsInput',true... );
Затем вы продвигаете сценарий, используете записанные измерения от датчиков и обрабатываете их с помощью описанного ранее алгоритма. Производительность алгоритма отслеживания анализируется с помощью метрики Generalized Optimum Subpattern Assignment (GOSPA). Вы также анализируете производительность алгоритма фильтрации классификации, оценивая матрицу путаницы между истинной и оценочной классификацией радиолокационных обнаружений. Получить истинную классификационную информацию об обнаружениях можно с помощью helperTrueClassificationInfo функция помощника.
% Create trackGOSPAMetric object to calculate GOSPA metric gospaMetric = trackGOSPAMetric('Distance','custom', ... 'DistanceFcn',@helperGOSPADistance, ... 'CutoffDistance',35); % Create display for visualization of results display = helperMultiPathTrackingDisplay; % Predicted track list for ghost filtering predictedTracks = objectTrack.empty(0,1); % Confusion matrix confMat = zeros(5,5,numel(detectionLog)); % GOSPA metric gospa = zeros(4,numel(detectionLog)); % Ground truth groundTruth = scenario.Actors(2:end); for i = 1:numel(detectionLog) % Advance scene for visualization of ground truth advance(scenario); % Current time time = scenario.SimulationTime; % Detections and sensor configurations [detections, configurations] = helperAssembleData(detectionLog{i},configurationLog{i}); % Predict confirmed tracks to current time for classifying ghosts if isLocked(tracker) predictedTracks = predictTracksToTime(tracker,'confirmed',time); end % Classify radar detections as targets, ghosts, or static environment [targets, ghostStatic, ghostDynamic, static, reflectors, classificationInfo] = helperClassifyRadarDetections(detections, egoVehicle, predictedTracks); % Pass detections from target and sensor configurations to the tracker confirmedTracks = tracker(targets, configurations, time); % Visualize the results display(egoVehicle, sensors, targets, confirmedTracks, ghostStatic, ghostDynamic, static, reflectors); % Calculate GOSPA metric [gospa(1, i),~,~,gospa(2,i),gospa(3,i),gospa(4,i)] = gospaMetric(confirmedTracks, groundTruth); % Get true classification information and generate confusion matrix trueClassificationInfo = helperTrueClassificationInfo(detections); confMat(:,:,i) = helperConfusionMatrix(trueClassificationInfo, classificationInfo); end
Анимация и анализ снимков
Следующая анимация показывает результат цепочки обработки радиолокационных данных. Черные эллипсы вокруг транспортных средств представляют предполагаемые трассы. Радиолокационные детекторы визуализируются четырьмя различными цветами в зависимости от их прогнозируемой классификации по алгоритму. Черные точки в визуализации представляют статические радиолокационные обнаружения целей. Обратите внимание, что эти обнаружения перекрываются черными линиями, которые представляют статические отражатели, найденные с помощью алгоритма DBSCAN. Маркеры борозды представляют детекции, обработанные расширенным отслеживающим объектом, в то время как зеленые и синие маркеры представляют радиолокационные детекции, классифицированные как отражения через статические и динамические объекты соответственно. Обратите внимание, что трекер способен поддерживать дорожку на всех четырех транспортных средствах во время сценария, и никакие ложные дорожки не были подтверждены трекером.
![]()
Затем проанализируйте производительность алгоритма с помощью различных снимков, полученных во время моделирования. Снимок ниже фиксируется в момент времени = 3 секунды и показывает ситуацию перед эго-транспортным средством. В это время эго-транспортное средство приближается к тихоходному грузовику, и левый радиолокационный датчик наблюдает отражения этих объектов через левый барьер. Эти обнаруженные объекты отображаются как зеркальные обнаруженные объекты в барьере. Обратите внимание, что черная линия, оцененная как 2-D отражатель, находится в зоне видимости этих обнаружений. Поэтому алгоритм способен правильно классифицировать эти обнаружения как цели-призраки, отраженные от статических объектов.
f = showSnaps(display,1:2,1); if ~isempty(f) ax = findall(f,'Type','Axes','Tag','birdsEyePlotAxes'); ax.XLim = [-10 30]; ax.YLim = [-10 20]; end
![]()
Затем проанализируйте производительность алгоритма с помощью снимка, снятого в момент времени = 4,5 секунды. В это время эго-транспортное средство находится еще ближе к грузовику, и грузовик находится примерно на полпути между зеленым транспортным средством и эго-транспортным средством. Во время этих ситуаций левая сторона грузовика действует как сильный отражатель и генерирует призрачные обнаружения. Обнаруженные сигналы на правой половине зеленого транспортного средства поступают от обнаруженных сигналов от зеленого транспортного средства, когда сигнал перемещается обратно к датчику после отражения от грузовика. Алгоритм способен классифицировать эти обнаружения как скрытые обнаружения, генерируемые из динамических отражений объектов, поскольку оцененная протяженность грузовика находится в прямой видимости этих обнаружений.
f = showSnaps(display,1:2,2); if ~isempty(f) ax = findall(f,'Type','Axes','Tag','birdsEyePlotAxes'); ax.XLim = [-10 30]; ax.YLim = [-10 20]; end
![]()
Также обратите внимание на проезжающее мимо транспортное средство, обозначенное желтым автомобилем слева от эго-транспортного средства. Детекции, которые, по-видимому, происходят от невидимой поверхности желтого транспортного средства, представляют собой детекции заграждений с двойным отскоком, отраженные через переднюю поверхность проезжающего транспортного средства. Эти обнаружения-призраки неправильно классифицируются как целевые, потому что они, по-видимому, происходят изнутри оценочной протяженности транспортного средства. В том же месте детекторы, которые лежат за барьером, также являются детекторами 2-скакания передней поверхности, когда сигнал отражается от барьера и возвращается к датчику. Поскольку эти обнаружения лежат за пределами дорожки и дорожка находится в прямой видимости, они классифицируются как призрачные обнаружения от отражений от динамических объектов.
Анализ производительности
Количественная оценка производительности алгоритма отслеживания с использованием метрики GOSPA и связанных с ней компонентов. Меньшее значение метрики означает лучшую производительность отслеживания. На рисунке ниже компонент «Пропущенная цель» метрики остается нулевым после нескольких шагов в начале, представляя собой задержку установления трекера. Этот компонент показывает, что трекер не пропустил цели. Кроме того, компонент «Ложные дорожки» метрики остается нулевым, представляя, что никакие ложные дорожки не были подтверждены трекером.
figure; plot(gospa','LineWidth',2); legend('GOSPA','Localization GOSPA','Missed-target GOSPA','False-tracks GOSPA');
![]()
Аналогично алгоритму слежения, вы также количественно анализируете производительность алгоритма классификации радиолокационного обнаружения с помощью матрицы путаницы [2]. Строки, показанные в таблице, обозначают истинную классификационную информацию радиолокационных детекторов, а столбцы представляют предсказанную классификационную информацию. Например, второй элемент первой строки определяет процент целевых обнаружений, предсказанных как призраки от отражений статических объектов.
Более 94% целевых обнаружений классифицированы правильно. Однако небольшой процент целевых обнаружений неправильно классифицируется как призраки от динамических отражений. Кроме того, приблизительно 9% призраков от отражений статических объектов и 35% призраков от отражений динамических объектов неправильно классифицируются как цели и отправляются в трекер для обработки. Распространенной ситуацией, когда это происходит в этом примере, является ситуация, когда обнаруженные отражения от 2-образного отскока лежат внутри расчетной протяженности транспортного средства. Кроме того, алгоритм классификации, используемый в этом примере, не предназначен для обнаружения ложных тревог или беспорядков в сцене. Поэтому пятый столбец матрицы путаницы равен нулю. Из-за пространственного распределения ложных аварийных сигналов внутри поля зрения большинство ложных аварийных сигналов классифицируются либо как отражения от статических объектов, либо как динамические объекты.
% Accumulate confusion matrix over all steps confusionMatrix = sum(confMat,3); numElements = sum(confusionMatrix,2); numElemsTable = array2table(numElements,'VariableNames',{'Number of Detections'},'RowNames',{'Targets','Ghost (S)','Ghost (D)','Environment','Clutter'}); disp('True Information');disp(numElemsTable);
True Information
Number of Detections
____________________
Targets 1982
Ghost (S) 3818
Ghost (D) 345
Environment 25358
Clutter 150
% Calculate percentages percentMatrix = confusionMatrix./numElements*100; percentMatrixTable = array2table(round(percentMatrix,2),'RowNames',{'Targets','Ghost (S)','Ghost (D)','Environment','Clutter'},... "VariableNames",{'Targets','Ghost (S)','Ghost (D)', 'Environment','Clutter'}); disp('True vs Predicted Confusion Matrix (%)');disp(percentMatrixTable);
True vs Predicted Confusion Matrix (%)
Targets Ghost (S) Ghost (D) Environment Clutter
_______ _________ _________ ___________ _______
Targets 94.6 1.06 3.88 0.45 0
Ghost (S) 9.25 74.1 16.24 0.42 0
Ghost (D) 38.84 0 61.16 0 0
Environment 0.93 3.07 2.59 93.4 0
Clutter 16.67 62 20 1.33 0
В этом примере моделируется радиолокационное обнаружение вследствие многолучевого распространения в сценарии движения по городской магистрали. Вы настроили алгоритм обработки данных для одновременной фильтрации скрытых обнаружений и отслеживания транспортных средств на шоссе. Вы также проанализировали производительность алгоритма отслеживания и алгоритма классификации, используя метрику GOSPA и матрицу путаницы.
[1] Пророк, Роберт, и др. «Мгновенная идентификация обнаружения призраков в автомобильных сценариях». Конференция IEEE Radar 2019 (RadarConf). IEEE, 2019.
[2] Краус, Флориан и др. «Использование машинного обучения для обнаружения изображений-призраков на автомобильных радарах». IEEE 2020 23-я Международная конференция по интеллектуальным транспортным системам (ITSC). IEEE, 2020.