3D внутреннее расположение с 802.11az снятие отпечатков пальцев и глубокое обучение

В этом примере показано, как обучить сверточную нейронную сеть (CNN) локализации и располагающий при помощи сгенерированных данных IEEE® 802.11az™. Используя обученный CNN, можно предсказать местоположение или положение нескольких станций (STAs) на основе цифрового отпечатка, состоящего из нескольких импульсных характеристик канала (CIRs), и оценить эффективность CNN.

Введение

IEEE 802.11az Wi-Fi™ стандарт [1], обычно называемый расположением следующего поколения (NGP), обеспечивает функции физического уровня, которые включают расширенное расположение и расположение использующих классических методов.

Классические методы используют условия угла обзора (LOS) эффективно извлечь временную информацию, такую как время прибытия (ToA) или пространственная информация, такая как угол прибытия (AoA), от многопутевого сигнала вычислить расстояние или область значений между устройствами. Когда область значений между минимумом трех устройств может быть измерена, трилатерация может быть использована для расчета оценка положения. Для получения дополнительной информации о том, как использовать классическое расположение и расположение методов, см., что the802.11az Располагает Используя Супервремя разрешения примера Оценки Прибытия.

Снятие отпечатков пальцев и методы глубокого обучения может использоваться в системах позиционирования Wi-Fi, чтобы достигнуть точности подметра даже в лучевых средах не угла обзора (NLOS) [2]. Цифровой отпечаток обычно содержит информацию о состоянии канала (CSI), такую как полученный индикатор силы сигнала (RSSI) или оценка канала от полученного сигнала, измеренного в определенном местоположении в среде [3].

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

Этот пример создает набор данных цифровых отпечатков CIR при помощи 802.11az сигналы во внутренней среде, помечая каждый цифровой отпечаток его информацией о местоположении. Пример обучает CNN предсказывать местоположения STA при помощи подмножества цифровых отпечатков, затем оценивает эффективность обученной модели путем генерации предсказаний местоположений STA на основе их остатка цифрового отпечатка CIR от набора данных.

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

Параметры симуляции

Внутренняя среда распространения

Сгенерируйте обучающие данные для внутренней офисной среды, заданной office.stl файл.

mapFileName = "office.stl";
helperVisualizeScenario(mapFileName)

Figure contains an axes. The axes contains 2 objects of type patch, line.

Пример помещает четыре точки доступа (APS) и много STAs, которые вы задаете в этой среде. Пример генерирует цифровые отпечатки на основе канала распространения, заданного средой, затем генерирует связанную импульсную характеристику канала при помощи методов трассировки лучей. Для получения дополнительной информации о трассировке лучей для внутренних сред см. the Внутренняя Линия связи MIMO-OFDM с помощью Трассировки лучей пример.

AP и параметры STA

Выберите размер массивов передающей и приемной антенны и пропускную способность канала. Эти параметры управляют количеством данных и его разрешения в каждом цифровом отпечатке. Большие антенные решетки производят больше реализации канала и больше CIRs на цифровой отпечаток. Более высокая пропускная способность увеличивает частоту дискретизации 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"; 

Укажите, что количество STAs раньше сопоставляло среду и распределение STAs. Чтобы распределить STAs однородно в каждой размерности как равномерно расположенная с интервалами сетка, установите distribution к uniform. Чтобы распределить STAs случайным образом в среде, установите distribution к random.

Когда вы распределяете STAs однородно, пример определяет количество STAs при помощи значения staSeparation, который измеряет расстояние, в метрах, между STAs во всех размерностях.

Когда вы случайным образом распределяете STAs, задаете количество STAs путем устанавливания значения 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, а не его точное местоположение. Эта схема показывает размещение малого офиса с дискретными областями, используемыми в качестве классов для локализации. Маркеры красного квадрата указывают на местоположения APS. Синее пунктирное поле представляет область, где пример распределяет STAs во время учебного процесса. Пример ограничивает высоту STAs к области значений между 0.8 и 1,8 метрами. Эта область значений представляет реалистическое множество значений для портативных потребительских устройств. Это ограничение также сводит к минимуму вероятность STAs, помещаемого в недостижимые положения.

Синтез обучающих данных

Этот раздел показывает, как синтезировать набор данных для обучения CNN.

Сгенерируйте положения STA и AP

Сгенерируйте 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])

Figure contains an axes. The axes contains 4 objects of type patch, line, scatter. These objects represent APs, STAs.

Сгенерируйте характеристики канала при помощи методов трассировки лучей

Установите параметры модели распространения луча. Этот пример рассматривает только LOS и отражения первого порядка путем установки MaxNumReflections параметр к 1. Для более точных моделей распространения, набор MaxNumReflections свойство к 2. Увеличение максимального числа отражений увеличивает время симуляции. Чтобы рассмотреть только распространение LOS, установите MaxNumReflections свойство к 0.

pm = propagationModel("raytracing-image-method", ...
    "CoordinateSystem","cartesian", ...
    "SurfaceMaterial","wood", ...
    "MaxNumReflections",1);

Выполните анализ трассировки лучей для всех пар AP-STA. raytrace функция возвращает сгенерированные лучи в массиве ячеек размера NAP-NSTA, где NAP количество APS и NSTA количество STAs.

% Perform ray tracing for all transmitters and receivers in parallel
rays = raytrace(APs,STAs,pm,"Map",mapFileName);
size(rays)
ans = 1×2

     4   480

Визуализируйте расчетные лучи между всем APS и одним STA. Цвет представляет связанную потерю пути в дБ.

helperVisualizeScenario(mapFileName,APs,STAs(30))
helperVisualizeRays([rays{:, 30}]);
view([84.75 56.38])

Figure contains an axes. The axes contains 18 objects of type patch, line, scatter. These objects represent APs, STAs.

Сгенерируйте 802.11az функции цифрового отпечатка CIR и метки

Этот раздел показывает, как вычислить CIRs для каждой пары AP-STA при помощи расчетных лучей. Эта схема показывает цепь обработки что использование в качестве примера, чтобы сгенерировать CIRs.

Каждый AP передает 802.11az пакет через шумный канал, и каждый STA получает пакет. Пример принимает, что каждый STA может дифференцироваться между APS, и что никакая интерференция не находится между APS.

Пакетный прием в местоположении перестал работать, если путь между местоположением и AP, или если синхронизация перестала работать из-за низкого ОСШ. В этом случае сгенерированный CIR является нулевым вектором.

Этот пример использует величину каждого многопутевого компонента в CIR как обучающие данные. Поэтому сгенерированные CIRs с действительным знаком. Пример хранит CIRs в четырехмерном массиве размера Ns-Ntx-rx-NAP-Nr.

  • Ns количество выборок временного интервала в CIR.

  • Ntx-rx общее количество передачи - получают пары антенны.

  • NAP количество APS.

  • Nr количество реализации канала для всех точек ОСШ.

Пример обучает CNN путем сочетания этих функций с метками положения STA или имен местоположения.

Чтобы симулировать изменения среды, повторите процесс снятия отпечатков пальцев при различных шумовых условиях путем указания диапазона значений ОСШ.

snrs = [10 15 20]; 

Сконфигурируйте параметры формы волны. В частности, определите номер пространственно-временных потоков (STSs) к размеру антенной решетки передачи, чтобы гарантировать, что сигнал от каждой антенны передачи способствует цифровому отпечатку 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 является архитектурой нейронной сети, которая использует двумерные многоканальные изображения. CNNs сохраняют и узнают о функциях из пространственных аспектов данных. Рабочий процесс глубокого обучения включает эти шаги.

  1. Задайте обучающие данные.

  2. Задайте модель нейронной сети.

  3. Сконфигурируйте процесс обучения.

  4. Обучите модель.

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

Задайте обучающие данные

Нейронные сети являются мощными моделями, которые могут соответствовать множеству данных. Чтобы подтвердить результаты, разделите набор данных в 80% обучающих данных и 20%-х данных о валидации. Обучающие данные являются данными, которым модель учится соответствовать путем корректировки ее взвешенных параметров на основе ошибки ее предсказаний. Данные о валидации являются данными, что использование в качестве примера, чтобы гарантировать, что модель выполняет как ожидалось на невидимых данных и не сверхсоответствует обучающим данным.

[training,validation] = dlPositioningSplitDataSet(features,labels,0.2);

Задайте модель нейронной сети

Типичный CNN состоит из семи основных слоев.

  1. Введите слой, который задает размер и тип входных данных

  2. Сверточный слой, который выполняет операции свертки на входе слоя при помощи набора фильтров

  3. Слой нормализации партии., который предотвращает нестабильные градиенты путем нормализации активаций слоя

  4. Слой Activation (ReLU), который нелинейная функция активации, что пороги выход предыдущего функционального уровня

  5. Слой Pooling, который извлекает и объединяет информацию о функции

  6. Слой Dropout, который случайным образом деактивировал процент параметров предыдущего слоя во время обучения предотвратить сверхподбор кривой

  7. Выведите слой, который задает размер и тип выходных данных

Можно сформировать глубокую сеть путем расположения слоев от этих классов и повторения их в блоках. CNN в этом примере состоит из четырех блоков, каждого со сверткой, нормализацией партии., ReLU и средним слоем объединения. Пример добавляет регуляризацию уволенного (20%) перед последними слоями. Эта архитектура похожа на тот из CNN, используемого в Обучать Сверточной нейронной сети для Регрессии (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);

Задайте опции, которые управляют учебным процессом. Номер эпох управляет, сколько раз пример обучает модель последовательно на полном обучающем наборе данных. По умолчанию пример обучает модель на графическом процессоре, если вы доступны. Используя графический процессор потребовал Parallel Computing 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:02 |       21.88% |       51.04% |       1.9794 |       1.6179 |      1.0000e-04 |
|       1 |          36 |       00:00:13 |       68.75% |       65.62% |       0.8964 |       0.9594 |      1.0000e-04 |
|       2 |          50 |       00:00:16 |       59.38% |              |       1.0475 |              |      1.0000e-04 |
|       2 |          72 |       00:00:23 |       68.75% |       67.36% |       0.9459 |       0.8693 |      1.0000e-04 |
|       3 |         100 |       00:00:31 |       65.62% |              |       0.9422 |              |      1.0000e-04 |
|       3 |         108 |       00:00:34 |       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 функция генерирует 3D карту, которая отображает истинные местоположения STAs. Цвет, присвоенный каждому STA, обозначает свое предсказанное местоположение. Функция также генерирует матрицу беспорядка, в которой строки соответствуют предсказанному классу, и столбцы соответствуют истинному классу. Диагональные ячейки соответствуют наблюдениям, которые правильно классифицируются. Недиагональные ячейки соответствуют неправильно классифицированным наблюдениям. Если сеть выполняет хорошо, элементы в основной диагонали значительно больше, чем другие элементы матрицы.

Для расположения цвет, присвоенный каждому STA, обозначает ошибку по дальности предсказанного положения. Функция также генерирует кумулятивную функцию распределения (CDF). Ось Y измеряет пропорцию данных, для которых измеренная ошибка по дальности меньше чем или равна соответствующему значению на оси X.

metric = dlPositioningPlotResults(mapFileName,validation.Y,YPred,task);

Figure contains an axes. The axes with title {\bf{CNN Location Prediction}} \fontsize{10}True STA positions coloured by Predicted Class contains 303 objects of type patch, line, scatter. These objects represent conference room, desk1, desk2, desk3, desk4, office, storage.

Figure contains an object of type ConfusionMatrixChart. The chart of type ConfusionMatrixChart has title Accuracy: 68.75%.

Предварительно обученная модель

Этот пример использует небольшой набор данных и ограниченный период подготовки, который приводит к скромным результатам. Можно получить более точные результаты при помощи 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 на наборе данных цифровых отпечатков от равномерного распределения STAs с staSeparation значение 0.1. Пропускная способность была пропускной способностью на 40 МГц с линейными матрицами с четырьмя антеннами в передатчике и приемнике (4×4 MIMO).

Чтобы исследовать эффективность этих предварительно обученных моделей, загрузите и извлеките zip-файл, загрузите соответствующий файл MAT в рабочую область и запустите раздел Evaluate Model Performance снова.

Эффект размера антенной решетки и пропускной способности

Предварительно обученные модели показывают, что увеличенное число STAs и учебные эпохи улучшает производительность. Этот раздел показывает эффект пропускной способности канала и размер антенных решеток на эффективности.

Эти рисунки показывают удар пропускной способности канала при эффективности расположения и локализации. Эти результаты были сгенерированы обучением модель в течение 100 эпох с miniBatchSize значение 256 с набором данных, скомпилированным от равномерного распределения STAs, произведенного с промежутками в 0,1 метра, в которых каждый STA и AP содержали четырехэлементную линейную антенную решетку. Используя большие результаты пропускной способности по более точной оценке, когда более высокая частота дискретизации увеличивает разрешение CIRs.

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

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

Ссылки

  1. Черновой Стандарт IEEE P802.11az™/D2.6 для Информационных технологий — Телекоммуникаций и обмена информацией между системными Локальными сетями и городскими компьютерными сетями — Конкретными требованиями - Поправка 3: Улучшения для расположения.

  2. Kokkinis, Akis, Loizos Kanaris, Антонио Лиотта и Ставрос Стэвроу. “RSS Внутренняя Локализация На основе Единой точки доступа”. Датчики 19, № 17 (27 августа 2019): 3711. https://doi.org/10.3390/s19173711.

  3. Ван, Xuyu, Линцзюнь Гао, Шивен Мао и Сэнтош Пэнди. “Основанное на CSI Снятие отпечатков пальцев для Внутренней Локализации: Подход Глубокого обучения”. Транзакции IEEE на Автомобильной Технологии, 2016, 763–776. https://doi.org/10.1109/TVT.2016.2545523.

  4. Рощи, Пол Д. Принципы GNSS, инерционного, и мультидатчик интегрированные системы навигации. Бостон: дом Artech, 2008.

Для просмотра документации необходимо авторизоваться на сайте