В этом примере показано, как обучить сверточную нейронную сеть (CNN) локализации и позиционирования с помощью сгенерированных данных IEEE ® 802.11az™. Используя обученный CNN, можно предсказать местоположение или положение нескольких станций (STA) на основе отпечатка пальца, состоящего из многоканальных импульсных откликов (CIR), и оценить производительность CNN.
Стандарт IEEE 802.11az Wi-Fi™ [1], обычно называемый positioning (NGP) следующего поколения, обеспечивает функции физического уровня, которые обеспечивают расширенное масштабирование и позиционирование с использованием классических методов.
Классические методы основаны на условиях линии визирования (LOS) для эффективного извлечения временной информации, такой как время прихода (ToA), или пространственной информации, такой как угол прихода (AoA), из многолучевого сигнала для вычисления расстояния или дальности между устройствами. Когда диапазон между как минимум тремя устройствами может быть измерен, трилатерация может быть использована для вычисления оценки положения. Дополнительные сведения об использовании классического ранжирования и методов позиционирования см. в примере определения времени прибытия 802.11az Using Super-Resolution.
Методы дактилоскопии и глубокого обучения могут быть использованы в системах позиционирования Wi-Fi для достижения субметровой точности даже в средах многолучевого распространения (NLOS) [2]. Отпечаток пальца обычно содержит информацию о состоянии канала (CSI), такую как индикатор уровня принятого сигнала (RSSI) или оценку канала из принятого сигнала, измеренную в конкретном местоположении в среде [3].
На этапе обучения сети пример создает базу данных путем выборки отпечатков каналов в нескольких известных местоположениях в среде. Сеть оценивает местоположение пользователя на основе сигнала, принятого в неизвестном местоположении, используя базу данных в качестве ссылки.
В этом примере создается набор данных CIR-отпечатков пальцев с использованием сигналов 802.11az в среде внутри помещения, маркируя каждый отпечаток пальца своей информацией о местоположении. Пример обучает CNN предсказывать местоположения STA, используя подмножество отпечатков пальцев, затем оценивает производительность обученной модели, генерируя прогнозы местоположений STA на основе их CIR отпечатков пальцев оставшейся части набора данных.
Для простоты в этом примере используется небольшой набор данных, что приводит к короткому времени моделирования. Для получения более точных результатов используйте больший набор данных. В примере представлены предварительно подготовленные модели, показывающие высокий уровень производительности, который может быть достигнут с помощью большего количества данных обучения.
Создание данных обучения для офисной среды внутри помещения, указанной в office.stl файл.
mapFileName = "office.stl";
helperVisualizeScenario(mapFileName)
В примере показаны четыре точки доступа (AP) и несколько STA, указанных в этой среде. Пример генерирует отпечатки пальцев на основе канала распространения, определенного средой, затем генерирует ассоциированную импульсную характеристику канала с использованием методов отслеживания лучей. Дополнительные сведения об трассировке лучей для сред внутри помещений см. в примере канала связи MIMO-OFDM внутри помещений с использованием трассировки лучей.
Выберите размер антенных решеток передачи и приема и полосу пропускания канала. Эти параметры управляют количеством данных и их разрешением в каждом отпечатке пальца. Более крупные антенные решетки создают больше реализаций канала и больше CIR на отпечаток пальца. Более высокая полоса пропускания увеличивает частоту дискретизации CIR, фиксируя ее более подробно. Изменение этих параметров делает набор данных несовместимым с предварительно подготовленными моделями, поскольку размеры каждого отпечатка должны соответствовать форме входного слоя модели.
S = RandStream("mt19937ar","Seed",5489); % Set the RNG for reproducibility. RandStream.setGlobalStream(S); txArraySize =[4 1]; % Linear transmit array rxArraySize =
[4 1]; % Linear receive array chanBW =
"CBW40";
Укажите количество STA, используемых для отображения среды и распределения STA. Для равномерного распределения STA в каждом измерении в виде равномерно распределенной сетки задайте distribution кому uniform. Для случайного распределения STA в среде установите distribution кому random.
При равномерном распределении STA в примере определяется количество STA с помощью значения staSeparation, которая измеряет расстояние в метрах между STA во всех измерениях.
При случайном распределении STA укажите количество STA, установив значение numSTAs.
distribution ="uniform"; staSeparation =
0.5; % STA separation, in meters, used only when the distribution is uniform numSTAs =
500; % Number of STAs, used only when distribution is random
Определите, выполняется ли в примере локализация или позиционирование [4]. Локализация - это задача классификации, в которой выходом модели является прогнозируемая метка, связанная с дискретной областью карты, в которой находится STA. Локализация полезна для задач, где точное позиционирование менее важно, чем возможность оценить общее местоположение пользователя с высокой степенью точности, например, помещение на полу здания или проходной в магазине. Позиционирование - это задача регрессии, в которой выходом модели является прогнозируемое положение STA. Позиционирование может оценить точное местоположение пользователя, но может иметь более высокую погрешность для положений в области по сравнению с локализацией.
task =
"localization"; Задача локализации определяет общее местоположение STA, а не его точное местоположение. На этой диаграмме показана компоновка небольшой станции с дискретными областями, используемыми в качестве классов для локализации. Красные квадратные маркеры указывают местоположение точек доступа. Синяя пунктирная рамка представляет область, в которой в примере выполняется распределение STA во время процесса обучения. В примере высота STA ограничена диапазоном от 0,8 до 1,8 метра. Этот диапазон представляет собой реалистичный набор значений для портативных потребительских устройств. Это ограничение также минимизирует вероятность размещения STA в недоступных позициях.

В этом разделе показано, как синтезировать набор данных для обучения CNN.
Создайте объекты AP и STA и визуализируйте их в сценарии внутри помещения. Если используется файл, отличный от office.stl, необходимо настроить местоположения AP и STA в пределах dlPositioningCreateEnvironment для соответствия новой среде.
if distribution == "uniform" [APs,STAs] = dlPositioningCreateEnvironment(txArraySize,rxArraySize,staSeparation,"uniform"); else [APs,STAs] = dlPositioningCreateEnvironment(txArraySize,rxArraySize,numSTAs,"random"); end helperVisualizeScenario(mapFileName,APs,STAs) view([65.99 32.49])

Задайте параметры модели распространения луча. В этом примере учитываются только отражения LOS и первого порядка путем установки MaxNumReflections параметр для 1. Для более точных моделей распространения установите MaxNumReflections свойство для 2. Увеличение максимального количества отражений увеличивает время моделирования. Чтобы учесть только распространение LOS, установите значение MaxNumReflections свойство для 0.
pm = propagationModel("raytracing-image-method", ... "CoordinateSystem","cartesian", ... "SurfaceMaterial","wood", ... "MaxNumReflections",1);
Выполните анализ трассировки лучей для всех пар AP-STA. raytrace функция возвращает сгенерированные лучи в массиве ячеек размером NAP-by-NSTA, где - количество точек доступа, а - количество STA.
% Perform ray tracing for all transmitters and receivers in parallel rays = raytrace(APs,STAs,pm,"Map",mapFileName); size(rays)
ans = 1×2
4 480
Визуализация вычисленных лучей между всеми AP и одним STA. Цвет представляет связанную потерю пути в дБ.
helperVisualizeScenario(mapFileName,APs,STAs(30))
helperVisualizeRays([rays{:, 30}]);
view([84.75 56.38])
В этом разделе показано, как вычислить CIR для каждой пары AP-STA с помощью вычисленных лучей. На этой диаграмме показана цепочка обработки, используемая в примере для генерации CIR.

Каждая точка доступа передает пакет 802.11az через шумный канал, и каждый STA принимает пакет. В примере предполагается, что каждый STA может различать точки доступа и что между точками доступа не возникает никаких помех.
Прием пакетов в местоположении завершается неуспешно, если тракт между местоположением и точкой доступа или если синхронизация завершается неуспешно из-за низкого SNR. В этом случае сгенерированный CIR является вектором нулей.
В этом примере в качестве обучающих данных используется величина каждого компонента многолучевого распространения в CIR. Поэтому сгенерированные CIR являются действительными. В примере CIR хранятся в четырехмерном массиве размером Ns-by-Ntx-rx-by-NAP-by-Nr.
- количество выборок временной области в CIR.
- общее число пар передающая-принимающая антенна.
- количество точек доступа.
- количество реализаций канала для всех точек SNR.
Пример обучает CNN, комбинируя эти функции с метками позиций или имен местоположений STA.
Для моделирования изменений в окружающей среде повторите процесс дактилоскопии в различных шумовых условиях, задав диапазон значений SNR.
snrs = [10 15 20];
Сконфигурируйте параметры формы сигнала. В частности, установить количество пространственно-временных потоков (STS) на размер антенной решетки передачи, чтобы гарантировать, что сигнал от каждой передающей антенны вносит вклад в отпечаток STA во время оценки канала.
cfg = heRangingConfig('ChannelBandwidth',chanBW, ... "NumTransmitAntennas",prod(txArraySize), ... "SecureHELTF",true, ... "GuardInterval",1.6); cfg.User{1}.NumSpaceTimeStreams = prod(txArraySize);
Создайте набор данных.
[features,labels] = dlPositioningGenerateDataSet(rays,STAs,APs,cfg,snrs);
Generating Dataset: 10% complete. Generating Dataset: 20% complete. Generating Dataset: 30% complete. Generating Dataset: 40% complete. Generating Dataset: 50% complete. Generating Dataset: 60% complete. Generating Dataset: 70% complete. Generating Dataset: 80% complete. Generating Dataset: 90% complete. Generating Dataset: 100% complete.
Глубокое обучение использует нейронные сети для аппроксимации функций в различных областях. CNN - нейросетевая архитектура, использующая двумерные многоканальные изображения. CNN сохраняют и изучают особенности пространственных аспектов данных. Процесс глубокого обучения включает в себя следующие шаги.
Определите данные обучения.
Определите модель нейронной сети.
Настройте процесс обучения.
Тренируйте модель.
Оценка производительности модели.
Нейронные сети - это мощные модели, которые могут соответствовать разнообразным данным. Чтобы проверить результаты, разделите набор данных на 80% данных обучения и 20% данных проверки. Обучающие данные - это данные, которые модель учит подгонять, корректируя свои взвешенные параметры на основе ошибки своих прогнозов. Данные проверки - это данные, которые используются в примере для обеспечения того, чтобы модель выполнялась так, как ожидалось для невидимых данных, и не переоборудовала данные обучения.
[training,validation] = dlPositioningSplitDataSet(features,labels,0.2);
Типичный CNN состоит из семи основных уровней.
Входной слой, определяющий размер и тип входных данных
Сверточный слой, который выполняет операции свертки на входе слоя с помощью набора фильтров
Слой пакетной нормализации, который предотвращает неустойчивые градиенты путем нормализации активизаций слоя
Уровень активации (ReLU), который представляет собой нелинейную функцию активации, определяющую пороговые значения выхода предыдущего функционального уровня
Слой объединения, извлекающий и объединяющий информацию об элементах
Уровень отсева, который случайным образом деактивирует процент параметров предыдущего уровня во время обучения, чтобы предотвратить переоборудование
Уровень вывода, определяющий размер и тип выходных данных
Можно сформировать глубокую сеть, расположив слои из этих классов и повторив их блоками. CNN в этом примере состоит из четырех блоков, каждый из которых имеет свертку, пакетную нормализацию, ReLU и средний уровень объединения. Пример добавляет регуляризацию отсева (20%) перед конечными слоями. Эта архитектура аналогична архитектуре CNN, используемой в примере Train Convolutional Neural Network for Regression (Deep Learning Toolbox), которая предсказывает повернутые позиции рукописных цифровых изображений и демонстрирует разнообразные применения моделей глубокого обучения с минимальными изменениями их параметров.
Создайте CNN.
layers = [
imageInputLayer(size(training.X, 1:3))
convolution2dLayer(3,256,"Padding","same")
batchNormalizationLayer
reluLayer
averagePooling2dLayer(2,"Stride",2,"Padding","same")
convolution2dLayer(3,256,"Padding","same")
batchNormalizationLayer
reluLayer
averagePooling2dLayer(2,"Stride",2,"Padding","same")
convolution2dLayer(3,256,"Padding","same")
batchNormalizationLayer
reluLayer
averagePooling2dLayer(2,"Stride",2,"Padding","same")
convolution2dLayer(3,256,"Padding","same")
batchNormalizationLayer
reluLayer
averagePooling2dLayer(2,"Stride",2,"Padding","same")
dropoutLayer(0.2)];Укажите размер выходного слоя и функцию активации для вывода в зависимости от выбранной задачи.
if task == "localization" layers = [ layers fullyConnectedLayer(7) softmaxLayer classificationLayer]; else % positioning layers = [ layers fullyConnectedLayer(3) regressionLayer]; end
Сопоставьте метки, присвоенные сети, с ожидаемыми выходными данными модели для каждой задачи. Функции представляют собой изображение отпечатков CIR для обеих задач.
if task == "localization" valY = validation.Y.classification; trainY = training.Y.classification; else % positioning valY = validation.Y.regression; trainY = training.Y.regression; end
Задайте количество образцов обучающих данных, которые модель оценивает во время каждой итерации обучения. Увеличение количества выборок при использовании большего набора данных.
miniBatchSize = 32;
Установите частоту проверки, чтобы сеть проверялась один раз в эпоху. Сеть оценивает невидимые выборки для проверки обобщения в конце каждого периода проверки.
validationFrequency = floor(size(training.X,4)/miniBatchSize);
Укажите параметры, управляющие процессом обучения. Количество периодов определяет, сколько раз пример последовательно обучает модель по полному набору данных обучения. По умолчанию в примере модель обучается на графическом процессоре, если он доступен. При использовании графического процессора требуется Toolbox™ параллельных вычислений и поддерживаемое устройство графического процессора. Сведения о поддерживаемых устройствах см. в разделе Поддержка графического процессора по выпуску (Parallel Computing Toolbox).
options = trainingOptions("adam", ... "MiniBatchSize",miniBatchSize, ... "MaxEpochs",3, ... "InitialLearnRate", 1e-4,... "Shuffle","every-epoch", ... "ValidationData",{validation.X,valY'}, ... "ValidationFrequency",validationFrequency, ... "Verbose",true, ... "ResetInputNormalization",true, ... "ExecutionEnvironment","auto");
Тренируйте модель.
net = trainNetwork(training.X,trainY',layers,options);
Training on single CPU. Initializing input data normalization. |======================================================================================================================| | Epoch | Iteration | Time Elapsed | Mini-batch | Validation | Mini-batch | Validation | Base Learning | | | | (hh:mm:ss) | Accuracy | Accuracy | Loss | Loss | Rate | |======================================================================================================================| | 1 | 1 | 00:00:01 | 21.88% | 51.04% | 1.9794 | 1.6179 | 1.0000e-04 | | 1 | 36 | 00:00:11 | 68.75% | 65.62% | 0.8964 | 0.9594 | 1.0000e-04 | | 2 | 50 | 00:00:14 | 59.38% | | 1.0475 | | 1.0000e-04 | | 2 | 72 | 00:00:21 | 68.75% | 67.36% | 0.9459 | 0.8693 | 1.0000e-04 | | 3 | 100 | 00:00:29 | 65.62% | | 0.9422 | | 1.0000e-04 | | 3 | 108 | 00:00:33 | 59.38% | 66.32% | 1.0506 | 0.8298 | 1.0000e-04 | |======================================================================================================================|
Исследуйте производительность модели, изучая прогнозируемые значения для данных проверки. Спрогнозировать метки путем передачи элементов набора проверки через сеть, затем оценить производительность сети путем сравнения прогнозируемых меток с метками набора проверки.
if task == "localization" YPred = net.classify(validation.X); else % positioning YPred = net.predict(validation.X); end
Создание визуального и статистического представления результатов.
Для локализации, dlPositioningPlotResults функция генерирует трехмерную карту, которая отображает истинные местоположения STA. Цвет, назначенный каждому STA, обозначает его прогнозируемое местоположение. Функция также генерирует матрицу путаницы, в которой строки соответствуют прогнозируемому классу, а столбцы соответствуют истинному классу. Диагональные ячейки соответствуют наблюдениям, которые правильно классифицированы. Внедиагональные клетки соответствуют неправильно классифицированным наблюдениям. Если сеть работает хорошо, элементы в главной диагонали значительно больше других матричных элементов.
Для позиционирования цвет, назначенный каждому STA, обозначает ошибку расстояния прогнозируемого положения. Функция также генерирует кумулятивную функцию распределения (CDF). Ось Y измеряет долю данных, для которых погрешность измеренного расстояния меньше или равна соответствующему значению на оси X.
metric = dlPositioningPlotResults(mapFileName,validation.Y,YPred,task);


В этом примере используется небольшой набор данных и ограниченный период обучения, что дает скромные результаты. Более точные результаты можно получить с помощью CNN, предварительно подготовленного с большим набором данных. Загрузите полученный CNN для позиционирования и локализации с https://www.mathworks.com/supportfiles/spc/wlan/Positioning80211azExample/pretrained_networks.zip. Этот zip-файл содержит два файла MAT:
localization_cbw40_4x4.mat - CNN обучен локализации
positioning_cbw40_4x4.mat - CNN обучен позиционированию
Все модели были обучены в течение 100 эпох с miniBatchSize значение 256 на наборе данных отпечатков пальцев из равномерного распределения STA с staSeparation значение 0.1. Полоса пропускания составляла 40 МГц с четырёхантенными линейными решётками в передатчике и приёмнике (4 × 4 MIMO).
Чтобы изучить производительность этих предварительно подготовленных моделей, загрузите и извлеките zip-файл, загрузите соответствующий MAT-файл в рабочую область и снова запустите раздел Оценка производительности модели.
Предварительно подготовленные модели показывают, что увеличение числа STA и периодов обучения улучшает производительность. В этом разделе показано влияние полосы пропускания канала и размера антенных решеток на производительность.
Эти рисунки показывают влияние полосы пропускания канала на производительность позиционирования и локализации. Эти результаты были получены путем обучения модели для 100 эпох с miniBatchSize значение 256 с набором данных, составленным из равномерного распределения STA, дискретизированных с интервалами 0,1 метра, в котором каждый STA и AP содержал четырехэлементную линейную антенную решетку. Использование большей полосы пропускания приводит к более точной оценке, поскольку более высокая частота дискретизации увеличивает разрешение CIR.


Эти цифры показывают влияние количества передающих и приемных антенн. Эти результаты были получены с использованием полосы пропускания 20 МГц. Точность увеличивается для более крупных антенных решеток благодаря наличию большего количества канальной информации. Например, канал 4 × 4 содержит 16 реализации канала, тогда как канал 2 × 2 содержит только четыре. Как и ожидалось, CNN работает лучше при обучении с большим количеством данных.


Эти результаты были получены с помощью образцов данных, которые не использовались для обучения CNN. Если выборки данных, используемые для обучения CNN, также используются для оценки производительности, результаты могут отличаться.
IEEE P802.11az™/D2.6 Проект стандарта для информационных технологий - Телекоммуникации и обмен информацией между системами Локальные и городские сети - Особые требования - Поправка 3: Усовершенствования для позиционирования.
Коккинис, Акис, Лоизос Канарис, Антонио Лиотта, и Ставрос Ставру. «Локализация RSS внутри помещения на основе одной точки доступа». Датчики 19, № 17 (27.08.2019): 3711. https://doi.org/10.3390/s19173711.
Ван, Сююй, Линцзюнь Гао, Шивэн Мао и Сантош Пандей. «Отпечатки пальцев на основе CSI для локализации в помещении: подход глубокого обучения». Сделки IEEE по технологии транспортных средств, 2016, 763-776. https://doi.org/10.1109/TVT.2016.2545523.
Гроувз, Пол Д. Принципы ГНСС, инерциальных и мультисенсорных интегрированных навигационных систем. Бостон: Artech House, 2008.