Модель Human Распознавания активности Simulink для развертывания смартфонов

Этот пример показывает, как подготовить модель Simulink ®, которая классифицирует активность человека на основе сигналов датчика смартфона для генерации кода и развертывания смартфона. В примере представлены две модели Simulink, которые готовы к развертыванию на Android™ устройстве и iOS-устройстве. После установки необходимого пакета поддержки для целевого устройства обучите классификационную модель и разверните модель Simulink на устройстве .

Загрузка набора выборочных данных

Загрузите humanactivity набор данных.

load humanactivity

The humanactivity набор данных содержит 24 075 наблюдений за пятью различными физическими действиями человека: Сидя, Стоя, Ходьба, Бег и Танцы. Каждое наблюдение имеет 60 функции, извлеченных из данных об ускорении, измеренных датчиками акселерометра смартфона. Набор данных содержит следующие переменные:

  • actid - Вектор отклика, содержащий идентификаторы активности в целых числах: 1, 2, 3, 4 и 5, представляющие Сидя, Стоя, Ходьбу, Бег и Танцы, соответственно

  • actnames - Имена действий, соответствующие целочисленным идентификаторам действий

  • feat - Матрица признаков из 60 функций для 24 075 наблюдений

  • featlabels - Метки 60 функций

Приложение Sensor HAR (human распознавания активности) [1] использовалось для создания humanactivity набор данных. При измерении необработанных данных об ускорении с помощью этого приложения человек поместил смартфон в карман так, чтобы смартфон был вверх тормашками, а экран столкнулся к человеку. Затем программное обеспечение калибровало измеренные необработанные данные соответственно и извлекло 60 функции из калиброванных данных. Для получения дополнительной информации о калибровке и редукции данных см. [2] и [3], соответственно. Модели Simulink, описанные позже, также используют необработанные данные ускорения и включают блоки для калибровки и редукции данных.

Подготовка данных

Этот пример использует 90% наблюдений для обучения модели, которая классифицирует пять типов деятельности человека и 10% наблюдений для валидации обученной модели. Использование cvpartition чтобы задать 10% -ное удержание для тестового набора.

rng('default') % For reproducibility
Partition = cvpartition(actid,'Holdout',0.10);
trainingInds = training(Partition); % Indices for the training set
XTrain = feat(trainingInds,:);
YTrain = actid(trainingInds);
testInds = test(Partition); % Indices for the test set
XTest = feat(testInds,:);
YTest = actid(testInds);

Преобразуйте матрицу функций XTrain и вектор отклика YTrain в таблицу для загрузки набора обучающих данных в приложение Classification Learner.

tTrain = array2table([XTrain YTrain]);

Укажите имя переменной для каждого столбца таблицы.

tTrain.Properties.VariableNames = [featlabels' 'Activities'];

Обучите Boosted Tree Ensemble используя приложение Classification Learner

Обучите классификационную модель с помощью приложения Classification Learner. Чтобы открыть приложение Classification Learner, введите classificationLearner в командной строке. Также перейдите на вкладку Приложения и щелкните стреле справа от раздела Приложения, чтобы открыть галерею. Затем в разделе Машинное обучение и Глубокое Обучение нажмите Classification Learner.

На вкладке Classification Learner, в Разделе файла, нажмите New Session и выберите From Workspace.

В диалоговом окне «Новый сеанс из рабочей области» щелкните стреле для переменной «Переменная набора данных» и выберите таблицу tTrain. Classification Learner обнаруживает предикторы и ответ из таблицы.

Опция по умолчанию является 5-кратной перекрестной проверкой, которая защищает от сверхподбора кривой. Щелкните Пуск сеанса. Classification Learner загружает набор данных и строит график графика поля точек из первых двух функций.

На вкладке Classification Learner щелкните стреле справа от раздела Model Type, чтобы открыть галерею. Затем в разделе «Классификаторы ансамблей» выберите «Бустерные деревья».

На панели Сводка текущей модели (Current Model Summary) отображаются настройки по умолчанию модели ансамбля бустерного дерева.

На вкладке Classification Learner, в разделе Training, нажмите Train. Когда обучение завершено, на панели Модели (Models) отображается 5-кратная перекрестная проверенная точность классификации.

На вкладке Учитель классификации (Classification Learner) в разделе Экспорт (Export) щелкните Экспорт модели (Export Model), а затем выберите Экспорт компактной модели (Export Compact Model). Нажмите кнопку ОК в диалоговом окне. Структура trainedModel появляется в рабочем пространстве MATLAB ®. Полевые ClassificationEnsemble от trainedModel содержит компактную модель. Извлеките обученную модель из структуры.

classificationEnsemble = trainedModel.ClassificationEnsemble;

Обучите ансамбль усиленного дерева в командной строке

Также можно обучить ту же классификационную модель в командной строке.

template = templateTree('MaxNumSplits',20,'Reproducible',true);
classificationEnsemble = fitcensemble(XTrain,YTrain, ...
    'Method','AdaBoostM2', ...
    'NumLearningCycles',30, ...
    'Learners',template, ...
    'LearnRate',0.1, ...
    'ClassNames',[1; 2; 3; 4; 5]);

Выполните 5-кратную перекрестную валидацию для classificationEnsemble и вычислите точность валидации.

partitionedModel = crossval(classificationEnsemble,'KFold',5);
validationAccuracy = 1-kfoldLoss(partitionedModel)
validationAccuracy = 0.9833

Оценка эффективности по тестовым данным

Оцените эффективность на тестовые данные наборе.

testAccuracy = 1-loss(classificationEnsemble,XTest,YTest)
testAccuracy = 0.9759

Обученная модель правильно классифицирует 97,59% деятельности человека на наборе тестовых данных. Этот результат подтверждает, что обученная модель не перегружается набором обучающих данных.

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

Сохраните обученную модель

Для генерации кода, включая объект классификационной модели, используйте saveLearnerForCoder и loadLearnerForCoder.

Сохраните обученную модель при помощи saveLearnerForCoder.

saveLearnerForCoder(classificationEnsemble,'EnsembleModel.mat');

Функциональный блок predictActivity в моделях Simulink загружает обученную модель при помощи loadLearnerForCoder и использует обученную модель для классификации новых данных.

Развертывание модели Simulink на устройстве

Теперь, когда вы подготовили классификационную модель, можно открыть модель Simulink, в зависимости от того, какой тип смартфона у вас есть, и развернуть модель на своем устройстве. Обратите внимание, что модель Simulink требует EnsembleModel.mat файл и файл калибровочной матрицы slexHARAndroidCalibrationMatrix.mat или slexHARiOSCalibrationMatrix.mat. Если вы нажмете кнопку, расположенную в правом верхнем разделе этой страницы и откроете этот пример в MATLAB, то MATLAB открывает папку примера, которая включает эти файлы калибровочной матрицы.

Тип slexHARAndroidExample чтобы открыть модель Simulink для развертывания Android.

Тип slexHARiOSExample чтобы открыть модель Simulink для развертывания iOS. Открыть модель можно на платформе Mac OS.

Две модели Simulink классифицируют деятельность человека на основе данных об ускорении, измеренных датчиком смартфона. Модели включают следующие блоки:

  • Блок Accelerometer получает необработанные данные об ускорении от датчиков акселерометра на устройстве.

  • Калибровочный блок является блоком MATLAB Function, который калибрует необработанные данные ускорения. Этот блок использует калибровочную матрицу в slexHARAndroidCalibrationMatrix.mat файл или slexHARiOSCalibrationMatrix.mat файл. Если вы нажмете кнопку, расположенную в правом верхнем разделе этой страницы и откроете этот пример в MATLAB, то MATLAB открывает папку примера, которая включает эти файлы.

  • Блоки отображения Acc X, Acc Y и Acc Z соединяются с калибровочным блоком и отображают калиброванные точки данных для каждой оси на устройстве.

  • Каждый из блоков Buffer, X Buffer, Y Buffer и Z Buffer буферизует 32 выборки оси акселерометра с 12 выборками перекрытия между буферизованными системами координат. После сбора 20 выборки каждый блок Buffer соединяет 20 выборки с 12 выборками из предыдущей системы координат и передает общее количество 32 выборки в блок extractFeatures. Каждый блок Buffer получает выборку входа каждые 0,1 секунды и выводит буферизованную систему координат, включающую 32 выборки каждые 2 секунды.

  • Блок extractFeatures является блоком MATLAB Function, который извлекает 60 функции из буферной системы координат 32 выборок акселерометра. Этот функциональный блок использует DSP System Toolbox™ и Signal Processing Toolbox™.

  • Блок predictActivity является блоком MATLAB Function, который загружает обученную модель из EnsembleModel.mat файл при помощи loadLearnerForCoder и классифицирует пользовательскую активность, используя извлеченные функции. Выход является целым числом от 1 до 5, соответствующим Siting, Standing, Walking, Running и Dancing, соответственно.

  • Блок Предсказанная активность отображает классифицированные значения пользовательской активности на устройстве.

  • Подсистема Выхода видео использует мультипортовый блок switch, чтобы выбрать соответствующие данные изображения активности пользователя для отображения на устройстве. Блок Convert to RGB разлагает выбранное изображение на отдельные векторы RGB и передает изображение в блок Activity Display.

Чтобы перенести модель Simulink на ваше устройство, выполните шаги в Run Model on Android Devices (Simulink Support Package for Android Devices) или Run Model on Apple iOS Devices (Simulink Support Package for Apple iOS De). Запустите модель на своем устройстве, поместите устройство так же, как описано ранее для сбора обучающих данных, и попробуйте пять действий. Модель соответственно отображает классифицированное действие.

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

Точность модели может отличаться от точности тестовых данных набора (testaccuracy), в зависимости от устройства. Чтобы улучшить модель, можно рассмотреть возможность использования дополнительных датчиков и обновления калибровочной матрицы. Также можно добавить еще один блок выхода для обратной связи по звуку в подсистему выхода с помощью Audio Toolbox™. Используйте блок ThingSpeak™ записи для публикации секретных действий и данных об ускорении с вашего устройства в Интернет вещей. Для получения дополнительной информации смотрите https://thingspeak.com/.

Ссылки

[1] El Helou, A. Sensor HAR recognition App. MathWorks File Exchange https://www.mathworks.com/matlabcentral/fileexchange/54138-sensor-har-recognition-app

[2] STMicroelectronics, AN4508 Application note. «Параметры и калибровка малогабаритного 3-осевого акселерометра». 2014.

[3] El Helou, A. Sensor Data Analytics. Файлы MathWorks Exchange https://www.mathworks.com/matlabcentral/fileexchange/54139-sensor-data-analytics--french-webinar-code-

См. также

| | |

Похожие темы