Content area
Designing an active prosthesis that reproduces natural human gait remains challenging because of the inherently complex, non-linear biomechanics of locomotion. Activity classification and gait trajectory regression could help to reach a better control system. Three-step deep learning models were developed to work in sequence based on the kinematic readings (linear acceleration and angular velocity) of the shank. For each step, two deep learning configurations were developed and optimized for accuracy and inference time on the ESP32/ESP32S3 microcontrollers to achieve real-time prediction for the prosthesis’s control. The first step is to classify the type of activity the subject is performing whether static (three activities) or dynamic (five activities) activity. The next step to classify the current phase out of eight phases for certain activities such as walking, running, and bicycling. Lastly, the trajectory for the ankle’s angular velocity is generated on the basis of the output of the previous models. In general, MLP could achieve very close accuracy in comparison to CNN while having much faster performance on the embedded microcontroller. Both achieved almost 98% in differentiating between static and dynamic activities. However, MLP achieved a faster inference time of 281 μs, which is approximately 124 times faster than CNN. Both models also achieved a close accuracy of around 93% in the classification of static activities and dynamic activities. MLP predicted 3.154 ms for static activities, making it approximately 86.2% faster than CNN. In dynamic activities, MLP achieved 4.247 ms and CNN achieved 83.032 ms. Finally, for gait trajectory analysis, the MLP was approximately 97% faster than CNN for walking/running, with an RMSE 8.5% lower 0.549 deg/s to 0.6 deg/s. For bicycling, MLP was 74% faster, but RMSE was 26% higher 0.516 deg/s to 0.409 deg/s. In summary, when sufficient phase information is available, the MLP can achieve accuracy comparable to the CNN while offering significantly faster prediction times. However, in cases where such information is lacking, such as in bicycling activity, the CNN delivers a more accurate trajectory with an acceptable inference time.
Article Highlights
Single shank-mounted sensor classifies daily activities and gait phases in real time on a microcontroller.
A lightweight MLP predicts ankle motion 200 ms ahead with accuracy close to a CNN.
ESP32-S3 cuts inference time below 10 ms without any drop in accuracy.
Introduction
During their daily lives, humans regularly carry out various activities such as eating, working, exercising, driving, cleaning, and playing games. Additionally, these tasks involve various fundamental motions, including walking, standing, sitting, bending, and running. Recognizing these activities, known as Human Activity Recognition (HAR), is essential in many fields, including gaming, human-robot interaction, e-commerce, security, rehabilitation, sign language recognition, sports, health monitoring, video surveillance, and robotics [1]. Consequently, one of the most critical applications is assistive devices, with the main focus being the development and implementation of active prostheses for amputee patients. These prosthetics are designed to help people with limb amputations regain as much normal functional motion as possible.
In recent years, lower limb prostheses have been developed from rigid, passive structures to complicated, controlled robotic systems that integrate sensors, actuators, and control systems to emulate the human body’s complex biomechanics [2]. Furthermore, automatically recognizing and classifying human activities is essential for adapting prosthetic control systems to meet the specific needs of prosthetic users [3]. This approach improves amputees’ overall quality of life and allows them to regain natural and intuitive control over their prosthetic limbs. Gait prediction is the prediction of the kinematicparameters of gait in a future window to determine the intended movement of a person. In comparison, gait classification aims to classify current human activity and locomotion surfaces. These predictions and classifications can be used to control the prosthesis parameters in real-time, such as joint angles, angular velocity, damping, and motion stiffness, to create a gait’s kinematicmotion that is efficient, natural, and helps the patient have a better transition between different activities, like walking, running, ascending and descending stairs, and slopes.
During the development of active prostheses, the main challenging parameters are control and adaptability, owing to the complex nature of the human gait cycle. The kinematicparameters of human gait, such as linear acceleration and angular velocity of different lower limb parts, such as the femur, tibia, knee, and ankle, are not only highly variable between each person’s pattern of motion but also vary for the same person’s movement while performing different activities on different surfaces. Therefore, HAR, gait classification, and prediction have become crucial research fields in the development of prostheses. Furthermore, the extraction characteristics of the gait signal can be used to detect gait deviations, which can be an indication of tripping, slipping, or loss of balance [4, 5]. In order to capture the movement of the human gait during various activities, researchers and clinicians employ different methodologies to record and analyze the kinematicparameters of human locomotion [6].
Motion Capture: Multiple infrared cameras with reflective markers mounted on main body parts, such as joints; the cameras use the markers to record joint angles and body movement in 3D space [7, 8]. On the other hand, other motion capture systems use non-marker-based image processing, such as time-of-flight (TOF) cameras[7, 9].
Force Plates: Multiple sensors are embedded in the floor and measure the scalar reaction forces of each step during walking. These forces can be used to evaluate the gait cycle’s symmetry, timing, and balance [10].
Pressure Sensors: Used to measure the weight distribution under the foot during different activities, which can help indicate the type of activity performed and gait abnormalities [11].
Electromyography (EMG): EMG uses surface-mounted electrodes to measure the contraction of the main muscles of the lower limb. Its readings can evaluate muscle function and detect abnormalities [12].
Inertial Measurement Units (IMUs): IMU consists mainly of accelerometer and gyroscope sensors. The unit is placed in different parts of the body to measure kinematic parameters (angle, angular velocity, and linear acceleration) for various joints (hip, knee, and ankle); these real-time data can be used to construct a 3D kinematic model for gait analysis [7, 13, 14–15]. In recent research, it is the most used methodology. IMUs are relatively cheap, easily positioned on the body, easy to acquire in data acquisition, and not prone to mechanical wear [16].
Feature Learning: Recurrent neural networks (RNN), convolutional neural networks (CNN), and multi-layer perceptrons (MLP) extract features from raw data, allowing them to learn and adapt.
Temporal Dependencies: Recurrent neural networks (RNN) and convolutional neural networks (CNN) can recognize patterns and trends and are therefore able to forecast and predict time-domain signals. MLPs, while not inherently designed for sequential data, can still model temporal dependencies when combined with techniques like windowing or used in conjunction with other architectures.
Anomaly Detection: Deep learning is capable of detecting anomalies in the signal in the time domain.
Classification and Prediction: Deep learning models can categorize or predict numerical values in a futuristic time window.
Signal Denoising: Deep learning models are capable of removing noise, improving the quality of time signals.
This research aims to develop an independent deep learning-based controller (MLP and CNN) for an active prosthesis that mainly depends computationally on a microcontroller only. This study is divided into three main phases. First is the phase of activity recognition. In order to ensure that the response time of the microcontroller is within an acceptable limit, this phase was divided into two sub-phases. The first model classifies whether it is currently in a passive activity such as sitting or standing or is performing an active action like walking or cycling. The second model classifies the current activity based on the prediction of the first. The next phase classifies the gait into 8 segments (Heel Strike, Initial Swing, Loading Response, Mid-Stance, Mid-Stance, Terminal Stance, Toe Off) based on whether the previous phase predicted current activity as walking or running. The effectiveness of this phase was tested in the previous study and resulted in a better prediction [21]. The third phase focuses on predicting the trajectory of the gait in a time frame of 200 ms ahead. The developed controller aims to implement a deep-learning model in the real-time active prosthesis control system.
This work makes three main contributions:
End-to-end embedded pipeline: We present the first fully on-board, three-stage deep-learning pipeline for lower-limb prosthesis control that (i) separates static from dynamic states, (ii) classifies eight daily activities, and (iii) predicts ankle-joint angular-velocity trajectories 200 ms into the future – running in real time on ESP32 family microcontrollers.
Latency–accuracy benchmark: We compare MLP and CNN architectures on two hardware variants (ESP32 vs. ESP32-S3), report the complete end-to-end latency, and provide a detailed trade-off analysis of accuracy, inference time, and memory footprint.
Minimal-sensor design: We show that the entire pipeline operates with only a single shank-mounted 9-axis IMU, eliminating the need for multi-segment sensor arrays. This reduces power consumption, complexity of the models, inference time, and calibration effort, while still achieving state-of-the-art accuracy, be convenient for subjects when deployed on hardware active prostheses for amputee patients.
Literature review
This study is a continuation of a previous study [21, 22], which concluded that a microcontroller can predict the walking gait trajectory of unforeseen subjects 200 ms ahead based on previous readings of 100 ms. The readings used were the angular velocity and the linear acceleration of the shank, and the algorithm predicted the ankle’s angular velocity. Two deep learning models, MLP and CNN, were developed and tested in two cases, one with a gait phase (stance phase or swing phase) during training and the other without it. The test concluded that, with the provision of the current phase, MLP could achieve a prediction accuracy comparable to CNN with a much better inference time. In contrast, without the phase input, CNN scored with better accuracy. This research is divided into three main phases to develop a human activity detection controller:
Human Activity Recognition (HAR): The initial step of the control system to classify the activity the subject is performing.
Phase Segmentation: After classifying the activity, the model will break the gait trajectory into phases and determine the current phase according to the type of activity and the readings of the sensors.
Gait Trajectory Generation: Depending on the result of the first two phases, the model will generate the kinematictrajectory in a future window frame for the ankle.
The first phase of this study includes the classification of eight activities, three static locomotion modes (sitting — sitting in a car — standing), and five dynamic locomotion modes (bicycling — walking — running — stairs ascending and descending). Jaramillo et al. [26] classified human activity into eight classes (stand, bend, crouch, walk, sit-down, sit-up, and ascend and descend stairs), developed optimized deep learning models CNN, RNN, and LSTM and deployed them on a Jetson Nano board. LSTM could achieve 100% accuracy for standing, 99.6 %, and 100% for walking and sitting down, respectively, with an average inference time of 19.6 ms. While CNN could achieve 100% for standing, 100% for walking, 97. 29% for sitting down and 4.97 ms prediction time. Lee et al. [27] trained deep CNN on foot kinematic readings for seven activities (walking, fast walking, running, stairs, stairs descending, hill climbing, and hill descent). The study showed that the best classification result was achieved using a combination of gyroscope readings, accelerometer, and pressure sensor, which achieved an accuracy of more than 90%. Shi et al. [28], based on the HuGaDB dataset, used the sequential convolution LSTM network (SConvLSTM) based on 1D-CNN and a bidirectional LSTM network for gait recognition. The model was provided with a fixed window of 2 s of sensor data. The developed model achieved a classification accuracy of 97.6% for ten different activities. Kumari et al. [29], based on the HuGaDB dataset, used a stacked LSTM trained with sequences of concatenated feature measures instead of the original signal, with 500 sample readings in each window. The model achieved an accuracy of 91.10% for nine outdoor activities. Gochoo et al. [30], based on the HuGaDB dataset, used Kernel Sliding Perceptron to categorize gait activities. The model’s input was a sliding window of 50 ms of the sensors’ readings. The model achieved an accuracy of 92.5%. Semwal et al [31] classified six walking styles: brisk, normal, very slow, medium, jogging, and fast, from a single IMU mounted on the body’s centre, achieving 87.4% for MLP and 92% for CNN classification accuracy. Tokas et al [32] lower-limb mounted eight sEMG for 22 subjects to classify sitting, standing, and level walking, and could achieve 98.8% (sitting), 98.3% (standing), 99.3% (walking) using an ensemble of CNN and LSTM.
The second phase of this study aims to classify gait phases for walking and running activities. Gait phases have the information to determine the current angle, angular velocity, and torque, which can improve the performance of the controller [33, 34–35]. The human gait cycle can be segmented into two main phases (stance phase and swing phase), four phases (initial contact, foot flat, heel off and toe-off) or even seven phases (load response, mid-stance, terminal stance, pre-swing, initial swing, mid-swing, and terminal swing) [36, 37]. Chao et al. [38] compared phase segmentation between two techniques, the first using a camera-based system and the second using an IMU-based system. It was proven that IMU is reliable and can be used for gait phase segmentation. Kreuzer and Munz [39] used IMU data and trained LSTM data for an input window of 8ms. The developed model could classify five phases with an accuracy of 94.22%. Chen et al. [40] used a downsampled U-Net model of size 0.5 KB that can be deployed on a microcontroller. The model was used to predict two gait phases (swing and stance phases) and achieved an accuracy of 95.5%. Binbin Su et al. [41] used an LSTM neural network architecture to detect five phases of the gait cycle (loading response, midstance, terminal stance, preswing, and swing) up to 200 ms (10-time frames) ahead in the future based on past observations up to 600 ms (30-time frames), and achieved a detection accuracy of 79% for the loading response phase, 87% for the midstance phase, 77% for the terminal stance phase, 85% for the preswing phase, and 95% for the swing phase for the intersubject test. Lee et al. [27] used an intelligent insole with sensors on board (pressure sensor, accelerometer, and gyroscope sensor) and DCNN neural network architecture to detect seven gait phases for seven gait types (walking, fast walking, running, climbing stairs, the descent of stairs, climbing of hills and descent) and proved that the best classification rate could be achieved using the three sensors and could achieve a 94% total classification rate using data from input sensors data from five steps of the window.
The third phase of this study includes the prediction of the gait trajectory. Binbin Su et al. [41] used an LSTM neural network to predict the trajectory of the lower body segment (angular velocity of the thigh, shank, and foot) up to 200 ms (10-time frame) ahead in the future based on previous observations of up to 600 ms (30-time frame), and achieved a z-score normalized angular velocity error of 0.005, MAE of 0.299, RMSE of 0.487 and Coefficient of Determination () of 0.91 for the intersubject foot trajectory. Conte Alcaraz et al. [42] used LSTM to predict ankle angle trajectory using a single IMU. The model could achieve RMSE 3.54degree. Zaroug et al. [43] also used an LSTM neural network autoencoder architecture to predict the lower body segment trajectory (angular velocity of the thigh, shank) up to five samples forward using a previous window size of 25 samples. They obtained a normalized angular velocity MAE of 0.28, MSE of 0.001, and a correlation coefficient between the predicted and actual angular velocity of 0.99 for the trajectory of the intersubject thigh. They achieved an MAE of 0.24, an MSE of 0.001, and a Correlation Coefficient of 0.99 for the trajectory of the intersubject shank. Semwal et al. [44] used a hybrid model, LSTM-CN,N to predict the trajectory of the ankle joint for 42 subjects with different speeds, and proved that mixing temporal (LSTM) and spatial (CNN) blocks improves trajectory fidelity, achieving a CC of 0.96. Hori et al. [45] predicted the trajectory of the foot of a single IMU positioned on the shunt and achieved a mean of for the stride length, for the gait speed, for the stride duration, for the stance duration and for the swing duration.
Finally, the main aim is to develop the developed models on a microcontroller. Alessandrini et al. [46] achieved precision and reached 95.54% applying a trained biLSTM network on an STM32L476RG microcontroller when observing the load of the neural network on the microcontroller hardware. Furthermore, it was found that the network could need more than 100% of the available RAM, and the inference time could reach 150 ms to achieve the best accuracy.
Methodology
Dataset
This research used the HuGaDB: Human Gait Database for Activity Recognition, a comprehensive dataset collected and curated by the National Research University Higher School of Economics, Moscow, Russia. This dataset consists of continuous recordings from wearable inertial sensors that capture various human activities such as walking, running, taking stairs up and down, sitting, and standing, among others [47]. The HuGaDB dataset’s readings were collected from a body-mounted sensor network of six inertial sensors placed on the participants’ right and left legs’ different movement nodes, such as thigh, shin, and foot. Each sensor contains an accelerometer and a gyroscope to capture motion data. Additionally, two electromyography (EMG) sensors were utilized to measure muscle activity attached to the quadriceps. This setup was chosen to capture leg movements for gait and activity analysis accurately. Data were collected from 18 healthy adult participants, consisting of 14 males and 4 females, with an average age of 23.67 years, an average height of 179.06 cm, and an average weight of 73.44 kg. This diversity helps to improve the generalizability of the activity recognition models developed from this dataset. The dataset includes labels for each activity, allowing for supervised learning approaches in activity classification. Each activity is annotated with its start and end times within the dataset, providing segmentation for analysis. The diversity of activities, combined with high-resolution multi-sensor data, makes HuGaDB particularly suitable for exploring the nuances of human motion and developing robust activity classification models.
Data selection
Due to clipping during data recording from the subjects, the corrupted data were omitted from the study. Left leg sensors readings of different subjects were used, for the eight different activities illustrated in Tables 1, 2 and 3.
Table 1. Subject’s data used in the study
Subject | Weight (kg) | Height (cm) | Age | Gender |
|---|---|---|---|---|
1 | 75 | 177 | 24 | Male |
2 | 80 | 183 | 22 | Male |
3 | 65 | 183 | 23 | Male |
4 | 93 | 189 | 24 | Male |
6 | 54 | 168 | 25 | Female |
7 | 52 | 161 | 22 | Female |
8 | 80 | 176 | 23 | Male |
10 | 118 | 183 | 27 | Male |
18 | 70 | 180 | 19 | Male |
Table 2. Used activities and subjects for the study
Type | Activity | Subjects | Samples |
|---|---|---|---|
Static | Sitting | 2, 3, 4, 6, 7, 8, 10, and 18 | 38,615 |
Sitting in a car | 1 | 180,574 | |
Standing | 1, 7, 10 | 9513 | |
Dynamic | Bicycling | 1 | 156,560 |
Walking | 1, 3, 6, 7, 8, 10 | 126,475 | |
Running | 3, 7, and 8 | 5440 | |
Stairs Ascending | 3, 6 and 8 | 8900 | |
Stairs Descending | 3, 6 and 8 | 6921 |
Table 3. Dataset train and test split
Type | Activity | Subjects | |
|---|---|---|---|
Train | Test | ||
Static | Sitting | 2,3,6,7,10 | 4,8,18 |
Sitting in a car | 1 | ||
Standing | 1,10 | 7 | |
Dynamic | Bicycling | 1 | |
Walking | 1,6,7,8,10 | 3,9 | |
Running | 7,8 | 3 | |
Stairs Ascending | 3,8 | 6 | |
Stairs Descending | 6,8 | 3 | |
Data preprocessing
The data were recorded where the subjects performed the activities with some variation in speed, which helps to generalize the training of the deep learning models. The sensors readings of four kinematic parameters were used for every activity. An inertial sensor, was mounted on the rectus femoris muscle, positioned 5 cms above the knee, another affixed around the midpoint of the shinbone, corresponding to the end of the calf, while a further sensor was attached to the metatarsal bones of the feet. The readings used in this study are accelerometer values of the shank along the x, and z-axes and gyroscope values of both the shank and the foot about the y-axis; used readings and configuration of the used mounted sensors are illustrated in Table 4 and Fig 1.
[See PDF for image]
Fig. 1
Sensory system mounting on the left foot. Red color indicates the used readings
Table 4. Sensors readings
Node | Sensor | Axis |
|---|---|---|
Shank | Accelerometer | x-axis |
Shank | Accelerometer | z-axis |
Shank | Gyroscope | y-axis |
Foot | Gyroscope | y-axis |
The dataset contains raw recordings of sensors readings. In addition, IMU accelerometers and gyroscopes generate noisy signals due to vibrations, sudden movements, and environmental interference. In order to reduce the variations in the recorded inertial data, a moving average filter is used [48]. The benefits for applying a moving average window filter [49, 50]:
Noise Reduction: It helps filter high-frequency noise from the IMU data, making the signal more stable.
Data Smoothing: The filter smooths the data by averaging the readings over a specified window, which can help identify trends and patterns in the accelerometer data.
Enhancement of Relevant Features: In applications like human activity recognition, a smoother signal can make it easier to classify relevant features and changes in motion.
Reducing the Impact of Outliers: The moving average filter can compensate for the effect of sudden spikes or drops in the data.
1
where:is the filtered value at the point.
N is the window size.
are the data points within the window being averaged.
2
where:x is the original feature value.
is the mean of the feature values.
is the standard deviation of the feature values.
z is the standardized value.
[See PDF for image]
Fig. 2
Ankle mounted gyroscope signal during walking activity with MAF of 4
[See PDF for image]
Fig. 3
Sliding window illustration on the ankle’s normalized angular velocity data. Input window width of 5 samples (100 ms) and output window of 10 samples (200 ms) in case of regression
Machine learning models
Gait cycle kinematic features consist of time series data of linear acceleration and angular velocity measurements sampled over a fixed time interval. To create a supervised learning training set, a sliding-window technique is applied, where data overlapping segments or windows are used as inputs for predictive models for classifiers or using data from the previous time step to forecast the value of the subsequent time step for regressors [52], as illustrated in Fig. 3.
In time-series data, classifying or forecasting the output can be challenging due to the inherent temporal dependence between the data. Machine learning methods can address complex time series forecasting problems that involve multiple input variables, intricate nonlinear relationships, and missing data [53]. Furthermore, neural networks must handle thousands of readings across various features. Therefore, to predict such complex data while managing the computational limitations of the microcontroller (MC), a suitable deep neural network (DNN) is explored (Figs. 4, 5).
[See PDF for image]
Fig. 4
DMLP neural network diagram
Multilayer perceptron (MLP)
An MLP is a type of neural network that consists of multiple layers of nodes, each layer fully connected to the next. Mathematically, the operations that describe each layer in an MLP are as follows [54]:
Linear Transformation:
3
where:x is the input vector (or the output from the previous layer).
W is the weight matrix.
b is the bias vector.
z is the linear transformation result (pre-activation).
Non-linear Activation:
4
where:is an activation function (e.g. ReLU, sigmoid, ), and a is the output of this layer.
[See PDF for image]
Fig. 5
DCNN neural network diagram
Convolutional neural network (CNN)
On the other hand, a CNN is designed to process data with a grid-like topology, such as images. The primary difference lies in the convolutional layers, which apply a convolution operation instead of a general matrix multiplication [54].
Convolutional Layer:
5
where:x is the input matrix (e.g., an image or a feature map).
K is the convolutional kernel (or filter), a smaller matrix that slides over the input.
denotes the convolution operation.
The output at position (i, j) is obtained by element-wise multiplication of the kernel with a submatrix of x and summing the results.
Non-linear Activation:
6
where:Similar to MLPs, a non-linear activation function is applied element-wise to the result of the convolution.
Pooling Layer:
7
where:pool is a function that reduces the dimensions (e.g., max pooling or average pooling) and f is the size of the pooling window.
Difference between MLP and CNN in time-series application
The main difference between Multilayer Perceptrons (MLPs) and Convolutional Neural Networks (CNNs) lies in their architecture and approach to data processing; each has its advantages and disadvantages when analyzing time series data classification and regression[55, 56, 57, 58, 59–60].
Connection Patterns:
MLP: Fully connected layers, where each neuron is connected to every neuron in the previous layer. With the exception of dropping some connections in order to avoid overfitting. Making them well-suited for general-purpose tasks but inefficient for handling structured data like images or sequences.
CNN: Convolutional layers, where neurons are connected to local regions or filters (receptive fields) to extract features, maintaining the input’s topology. This localized connection pattern, combined with weight sharing across different spatial locations, allows CNNs to detect local patterns such as edges in images or temporal trends in time series data.
Parameter Sharing:
MLP: Each weight is unique to each connection.
CNN: Convolutional layers share parameters across different spatial locations. The same kernel scans the entire input, focusing on local patterns.
Dimensionality:
MLP: Flattens the input into a 1D vector, losing any spatial or temporal structure inherent in the data.
CNN: Preserves the spatial structure of the input through the convolution and pooling operations that reduce dimensionality, enhancing their robustness and sensitivity to small variations.
Hyper-parameters optimization
Bayesian Optimizer (BO) was used to optimize the hyperparameters for the developed models (number of neurons for each layer and the number of hidden layers). Unlike traditional methods such as grid search or random search, Bayesian optimization builds a probabilistic model of the objective function. It uses this model to select the most promising hyperparameters to evaluate sequentially. This approach is efficient for neural networks, where the vast hyperparameter space and evaluations are expensive. By focusing on areas of the hyperparameter space likely to yield better performance, BO can significantly reduce the number of evaluations needed to find optimal or near-optimal hyperparameters. Studies have demonstrated the efficacy of BO in various contexts, showing improvements in training time and model performance compared to other optimization methods [61, 62]. The optimizer was given constraints on the hyperparameters to achieve relatively light computational models suitable for deployment on the embedded system, illustrated in Table 5.
Table 5. Bayesian optimizer constraints for models hyperparameters
Type | Parameter | Min value | Max value |
|---|---|---|---|
MLP | Hidden Layers Number | 2 | 15 |
Hidden Layers Neurons | 10 | 100 | |
Dropout Layers Number | 2 | 15 | |
Dropout Layers Percentage | 0 | 0.7 | |
CNN | Convolutional Layers Number | 1 | 3 |
Convolutional Layers Filter | 16 | 128 | |
Convolutional Layers Kernel size | 3, 5, 7 | ||
Max Pooling Layers Number | 1 | 3 | |
Max Pooling Layers size | 2, 3, 4 | ||
Hidden Layers Number | 2 | 10 | |
Hidden Layers Neurons | 10 | 100 | |
Dropout Layers Number | 2 | 10 | |
Dropout Layers Percentage | 0 | 0.7 | |
Developed models
Single-task deep models provide a better and more specialized architecture that can enhance the performance of classification and regression. Focusing on a single objective can help simplify the complexity of the developed models, resulting in models with fewer parameters, smaller memory sizes, and faster inference times. This helps in deploying the models on limited resource devices such as microcontrollers [63, 64].
This research aims to develop a mid-level controller based on a multistage branched neural network to classify activity and generate a futuristic window of gait based on current activity, illustrated in Fig. 6. For each stage, two models were developed, MLP and CNN, and they were analyzed based on the accuracy of the models and the inference time. The first step of the developed controller is to classify the activity. In order to achieve faster prediction time and to lower the size of the models, this stage was divided into steps. The first step was to predict whether the current activity was static or dynamic. Next, if the activity is static, another classifier will predict whether it is one of three activities (Sitting, Sitting in a Car, or Standing).
Furthermore, if the activity is dynamic, another classifier will predict whether it is one of five activities (Bicycling, Walking, Running, Stairs Up, or Stairs Down). As for trajectory generation, for each static activity, there are three different regressors to predict the gait trajectory, and for dynamic activity, there are five different regressors to predict the gait trajectory. However, a phase segmentation classifier is used to predict the current gait phase (Heel Strike, Initial Swing, Loading Response, Mid-Stance, Terminal Stance, Toe Off) for walking, running, ascending, and descending stairs. Hence, the trajectory depends on both the activity and the current phase. The optimized MLP and CNN models for each stage are shown in Tables 6, 7, 8, 9, 10, 11.
[See PDF for image]
Fig. 6
Flow chart for the developed mid-level controller based on a tree of neural networks
Table 6. MLP and CNN architectures developed for classification of activity type
Layers | MLP | Layers | CNN | ||
|---|---|---|---|---|---|
Type | Number of neurons | Type | Number of Neurons | ||
0 | Input Layer | 15 | 0 | Input Layer | 15 |
1 | Dense Layer | 50 | 1 | Convolutional Layer | 16 |
2 | Dense Layer | 80 | 1 | Convolutional Layer Kernel | |
3 | Dropout Layer | 0.6 | 2 | Convolutional Layer | 32 |
4 | Output Layer | 2 | 2 | Convolutional Layer Kernel | |
– | – | – | 3 | Max-Pooling Layer | |
– | – | – | 4 | Flatten Layer | – |
– | – | – | 5 | Dense Layer | 20 |
– | – | – | 6 | Dense Layer | 10 |
– | – | – | 7 | Dropout Layer | 0.4 |
– | – | – | 8 | Dense Layer | 60 |
– | – | – | 9 | Dropout Layer | 0.15 |
– | – | – | 10 | Dense Layer | 80 |
– | – | – | 11 | Dropout Layer | 0.45 |
– | – | – | 12 | Dense Layer | 60 |
– | – | – | 13 | Dropout Layer | 0.05 |
– | – | – | 14 | Output Layer | 2 |
Activation Function | Relu/Softmax | ||||
Learning Rate | |||||
Cost Function | Sparse Categorical Crossentropy | ||||
Table 7. MLP and CNN architectures developed for classification of static activities
Layers | MLP | Layers | CNN | ||
|---|---|---|---|---|---|
Type | Number of Neurons | Type | Number of Neurons | ||
0 | Input Layer | 15 | 0 | Input Layer | 15 |
1 | Dense Layer | 60 | 1 | Convolutional Layer | 16 |
2 | Dense Layer | 10 | 1 | Convolutional Layer Kernel | |
3 | Dropout Layer | 0.35 | 2 | Convolutional Layer | 48 |
4 | Dense Layer | 60 | 2 | Convolutional Layer Kernel | |
5 | Dropout Layer | 0.2 | 3 | Max-Pooling Layer | |
6 | Dense Layer | 60 | 4 | Flatten Layer | - |
7 | Dropout Layer | 0.05 | 5 | Dense Layer | 30 |
8 | Dense Layer | 70 | 6 | Dense Layer | 40 |
9 | Dropout Layer | 0.35 | 7 | Dropout Layer | 0.5 |
10 | Dense Layer | 60 | 8 | Dense Layer | 80 |
11 | Dropout Layer | 0.1 | 9 | Dropout Layer | 0.6 |
12 | Dense Layer | 20 | 10 | Dense Layer | 10 |
13 | Dropout Layer | 0.45 | 11 | Dropout Layer | 0.45 |
14 | Dense Layer | 40 | 12 | Output Layer | 3 |
15 | Dropout Layer | 0.15 | – | – | – |
16 | Dense Layer | 10 | – | – | – |
17 | Dropout Layer | 0.6 | – | – | – |
18 | Dense Layer | 80 | – | – | – |
19 | Dropout Layer | 0.5 | – | – | – |
20 | Dense Layer | 10 | – | – | – |
21 | Dropout Layer | 0.6 | – | – | – |
22 | Output Layer | 3 | – | – | – |
Activation Function | Relu/Softmax | ||||
Learning Rate | |||||
Cost Function | Sparse Categorical Crossentropy | ||||
Table 8. MLP and CNN architectures developed for classification of dynamic activities
Layers | MLP | Layers | CNN | ||
|---|---|---|---|---|---|
Type | Number of Neurons | Type | Number of Neurons | ||
0 | Input Layer | 15 | 0 | Input Layer | 15 |
1 | Dense Layer | 50 | 1 | Convolutional Layer | 16 |
2 | Dense Layer | 100 | 1 | Convolutional Layer Kernel | |
3 | Dropout Layer | 0.25 | 2 | Convolutional Layer | 80 |
4 | Dense Layer | 90 | 2 | Convolutional Layer Kernel | |
5 | Dropout Layer | 0.1 | 3 | Max-Pooling Layer | |
6 | Dense Layer | 60 | 4 | Flatten Layer | – |
7 | Dropout Layer | 0.6 | 5 | Dense Layer | 30 |
8 | Dense Layer | 80 | 6 | Dense Layer | 90 |
9 | Dropout Layer | 0.1 | 7 | Dropout Layer | 0.05 |
10 | Output Layer | 5 | 8 | Output Layer | 5 |
Activation Function | Relu/Softmax | ||||
Learning Rate | |||||
Cost Function | Sparse Categorical Crossentropy | ||||
Table 9. MLP and CNN architectures developed for classification of running and walking gait phase segments
Layers | MLP | Layers | CNN | ||
|---|---|---|---|---|---|
Type | Number of neurons | Type | Number of Neurons | ||
0 | Input Layer | 20 | 0 | Input Layer | 20 |
1 | Dense Layer | 80 | 1 | Convolutional Layer | 16 |
2 | Dense Layer | 50 | 1 | Convolutional Layer Kernel | |
3 | Dense Layer | 40 | 2 | Convolutional Layer | 128 |
4 | Dropout Layer | 0.65 | 2 | Convolutional Layer Kernel | |
5 | Dense Layer | 40 | 3 | Max-Pooling Layer | |
6 | Output Layer | 8 | 4 | Flatten Layer | – |
– | – | – | 5 | Dense Layer | 10 |
– | – | – | 6 | Dense Layer | 60 |
– | – | – | 7 | Dropout Layer | 0.35 |
– | – | – | 8 | Dense Layer | 60 |
– | – | – | 9 | Dropout Layer | 0.55 |
– | – | – | 10 | Output Layer | 8 |
Activation Function | Relu/Softmax | ||||
Learning Rate | |||||
Cost Function | Sparse Categorical Crossentropy | ||||
Table 10. MLP and CNN architectures developed for running and walking gait trajectory generation
Layers | MLP | Layers | CNN | ||
|---|---|---|---|---|---|
Type | Number of Neurons | Type | Number of Neurons | ||
0 | Input Layer | 25 | 0 | Input Layer | 25 |
1 | Dense Layer | 80 | 1 | Convolutional Layer | 16 |
2 | Dense Layer | 60 | 1 | Convolutional Layer Kernel | |
3 | Dropout Layer | 0.45 | 2 | Convolutional Layer | 32 |
4 | Dense Layer | 20 | 2 | Convolutional Layer Kernel | |
5 | Output Layer | 10 | 3 | Max-Pooling Layer | |
– | – | – | 4 | Flatten Layer | – |
– | – | – | 5 | Dense Layer | 50 |
– | – | – | 6 | Dense Layer | 70 |
– | – | – | 7 | Dropout Layer | 0.3 |
– | – | – | 8 | Dense Layer | 70 |
– | – | – | 9 | Dropout Layer | 0.05 |
– | – | – | 10 | Dense Layer | 80 |
– | – | – | 11 | Dropout Layer | 0.25 |
– | – | – | 12 | Dense Layer | 70 |
– | – | – | 13 | Dropout Layer | 0.1 |
– | – | – | 14 | Output Layer | 10 |
Activation Function | Relu | ||||
Learning Rate | |||||
Cost Function | Root Mean Squared Error | ||||
Table 11. MLP and CNN architectures developed for bicycling gait trajectory generation
Layers | MLP | Layers | CNN | ||
|---|---|---|---|---|---|
Type | Number of Neurons | Type | Number of Neurons | ||
0 | Input Layer | 15 | 0 | Input Layer | 15 |
1 | Dense Layer | 90 | 1 | Convolutional Layer | 16 |
2 | Dense Layer | 80 | 1 | Convolutional Layer Kernel | |
3 | Dropout Layer | 0.05 | 2 | Convolutional Layer | 32 |
4 | Dense Layer | 10 | 2 | Convolutional Layer Kernel | |
5 | Dropout Layer | 0.65 | 3 | Max-Pooling Layer | |
6 | Output Layer | 10 | 4 | Flatten Layer | – |
– | – | – | 5 | Dense Layer | 20 |
– | – | – | 6 | Dense Layer | 40 |
– | – | – | 7 | Output Layer | 10 |
Activation Function | Relu | ||||
Learning Rate | |||||
Cost Function | Root Mean Squared Error | ||||
Neural network model classification performance evaluation
Human activity recognition is a classification problem. The evaluation of classifiers involves various performance metrics to evaluate their effectiveness in making accurate predictions. The most common methods, based on previous research, to evaluate activity recognition are as follows [65]:
Accuracy for Classi: Accuracy is the proportion of correctly predicted instances out of the total instances.
8
where:TP = True Positives.
TN = True Negatives.
FP = False Positives.
FN = False Negatives.
Precision for Classi: Precision (also called Positive Predictive Value) is the proportion of true positive predictions out of all positive predictions made by the model.
9
Recall for Classi: Recall (also called Sensitivity or True Positive Rate) is the proportion of true positive predictions out of all actual positive instances.
10
F1-Score for Classi: F1-Score is the harmonic mean of precision and recall. Provides a balance between precision and recall.
11
Confusion Matrix: The confusion matrix is a table that is used to describe the performance of a classification model. It contains four key metrics: True Positives (TP), True Negatives (TN), False Positives (FP), and False Negatives (FN). In a multi-class classification problem, the confusion matrix for class i can be represented as follows (Table 12):
Table 12. Confusion matrix for certain class i
Predicted Class i | Predicted Not Class i | |
|---|---|---|
Actual Class i | ||
Actual Not Class i |
Neural network model regression performance evaluation
After classification of either the activity or the current phase of the predicted activity, a gait cycle kinematics trajectory is predicted. There are many statistical tools to evaluate the performance of the regression model by comparing the predicted gait trajectory with the actual trajectory. The most common methods based on previous research to evaluate the generated trajectory are as follows [66]:
Mean Absolute Error (MAE): It is the average over the test sample of the absolute differences between prediction and actual observation where all individual differences have equal weight. Measures the average magnitude of errors in a set of predictions, without considering their sign.
12
Mean Squared Error (MSE): This is a loss function that measures the average squared difference between actual and predicted values. It is useful because it penalizes larger errors more than smaller ones.
13
Root Mean Squared Error (RMSE): This is the square root of MSE and provides a metric with the same units as the target variable. It is useful for interpreting the prediction error of the model.
14
Coefficient of Determination (): This metric explains how much of the variance in the dependent variable is explained by the independent variables in the model. It is a good indicator of the model’s goodness of fit.
15
Pearson Correlation Coefficient (CC): It is a measure of the linear correlation between two variables, often used to determine the strength and direction of the relationship between the predicted values and the actual values in regression models.
16
Results
Trained MLP and CNN evaluation
The TensorFlow library was used to develop the models. The hyperparameters of the models were optimized with the Bayesian optimizer algorithm, including the number of layers, the number of neurons in each layer, batch size, and the number of epochs. The optimum configuration was then determined to satisfy the best possible accuracy with an acceptable inference time and a model size suitable for the microcontroller hardware. The inter-subject or cross-subject method was used to validate the performance of the models, where the models were tested on never-seen-before subjects as illustrated in Table 3, which indicates which subjects were used for training and which for testing. The performance metrics for each model are shown in Figs. 7, 8, 9, 10, 11, 12 and Tables 13, 14, 15, 16, 17.
Microcontroller inference test
The models were trained and exported using TensorFlow micro to a C source file containing the TensorFlow Lite model as a char array without optimization or quantization, and then exported to the microcontroller’s IDE. This study used two microcontrollers, ESP32 and ESP32S3, as illustrated in the Table 18. The computation time for each microcontroller was measured by providing kinematic data for the test data set subjects in the MCU. Then, the prediction time and memory utilization to complete the prediction were calculated; the results can be found in Tables 19 and 20.
[See PDF for image]
Fig. 7
MLP and CNN models for activity type classification performance
Table 13. Comparison of MLP and CNN models for activity type classification performance metrics
Activity type | MLP | CNN | ||||||
|---|---|---|---|---|---|---|---|---|
Precision | Recall | F1-score | Support | Precision | Recall | F1-score | Support | |
Dynamic | 0.97 | 0.99 | 0.98 | 43,277 | 0.98 | 0.98 | 0.98 | 43,277 |
Static | 0.99 | 0.97 | 0.98 | 43,240 | 0.98 | 0.98 | 0.98 | 43,240 |
[See PDF for image]
Fig. 8
MLP and CNN models for static activities classification performance
Table 14. Comparison of MLP and CNN models for static activities classification performance metrics
Activity type | MLP | CNN | ||||||
|---|---|---|---|---|---|---|---|---|
Precision | Recall | F1-Score | Support | Precision | Recall | F1-Score | Support | |
Sitting | 1.00 | 0.76 | 0.86 | 10,496 | 1.00 | 0.73 | 0.84 | 10,496 |
Sitting in car | 0.99 | 1.00 | 0.99 | 28,758 | 0.99 | 1.00 | 1.00 | 28,758 |
Standing | 0.64 | 1.00 | 0.78 | 3986 | 0.60 | 1.00 | 0.75 | 3986 |
[See PDF for image]
Fig. 9
MLP and CNN models for dynamic activity classification performance
Table 15. Comparison of MLP and CNN models for dynamic activities classification performance metrics
Activity type | MLP | CNN | ||||||
|---|---|---|---|---|---|---|---|---|
Precision | Recall | F1-Score | Support | Precision | Recall | F1-Score | Support | |
Bicycling | 1.00 | 0.95 | 0.98 | 35,342 | 1.00 | 0.96 | 0.98 | 35,342 |
Running | 0.94 | 0.90 | 0.92 | 1427 | 0.89 | 0.72 | 0.80 | 1427 |
Walking | 0.88 | 0.72 | 0.80 | 4307 | 0.80 | 0.74 | 0.77 | 4307 |
Stairs descending | 0.33 | 0.56 | 0.42 | 955 | 0.33 | 0.59 | 0.42 | 955 |
Stairs ascending | 0.39 | 0.96 | 0.56 | 1239 | 0.45 | 0.91 | 0.60 | 1239 |
[See PDF for image]
Fig. 10
MLP and CNN models for running and walking phase segmentation classification performance
Table 16. Comparison of MLP and CNN models for running and walking phase segmentation classification performance metrics
Phase | MLP | CNN | ||||||
|---|---|---|---|---|---|---|---|---|
Precision | Recall | F1-Score | Support | Precision | Recall | F1-Score | Support | |
Heel strike | 0.15 | 0.40 | 0.22 | 187 | 0.11 | 0.29 | 0.16 | 187 |
Initial swing | 0.92 | 0.82 | 0.87 | 2751 | 0.87 | 0.83 | 0.85 | 2751 |
Loading response | 0.87 | 0.88 | 0.88 | 2042 | 0.89 | 0.83 | 0.86 | 2042 |
Mid-stance | 0.33 | 0.44 | 0.57 | 188 | 0.44 | 0.82 | 0.57 | 188 |
Mid-swing | 0.45 | 0.45 | 0.59 | 188 | 0.37 | 0.95 | 0.53 | 188 |
Terminal stance | 0.80 | 0.83 | 0.60 | 1826 | 0.83 | 0.86 | 0.85 | 1826 |
Terminal swing | 0.96 | 0.85 | 0.60 | 2032 | 0.95 | 0.76 | 0.84 | 2032 |
Toe off | 0.45 | 0.10 | 0.05 | 187 | 0.03 | 0.01 | 0.05 | 187 |
[See PDF for image]
Fig. 11
Linear correlation between the actual values (x-axis) and the predicted values (y-axis) for ankle’s angular velocity of the unseen subjects performing walking and running activities
[See PDF for image]
Fig. 12
Linear correlation between the actual values (x-axis) and the predicted values (y-axis) for ankle’s angular velocity of the unseen subjects performing bicycling activity
Table 17. Models normalized statistical results comparison for gait trajectory regression
Parameter | Running/Walking | Bicycling | ||
|---|---|---|---|---|
MLP | CNN | MLP | CNN | |
Bias (deg/s) | 0.146 | 0.367 | 0.522 | 0.500 |
MAE (deg/s) | 0.193 | 0.219 | 0.365 | 0.284 |
RMSE (deg/s) | 0.549 | 0.600 | 0.516 | 0.409 |
R⌃2 | 0.695 | 0.636 | 0.733 | 0.833 |
CC | 0.860 | 0.851 | 0.889 | 0.915 |
Table 18. Comparison between the used micro-controllers relevant specifications
Feature | ESP32 | ESP32-S3 |
|---|---|---|
Core | Tensilica Xtensa 32-bit LX6 dual core (up to 240MHz) | Tensilica Xtensa 32-bit LX7 dual core (up to 240MHz) |
SRAM | 520 KB | 512 KB |
ROM | 448 KB | 384 KB |
Embedded flash | 4 MB | 16 MB |
Table 19. Microcontroller inference time test for single prediction
Parameters | Activity type (Classification) | Static Activities (Classification) | Dynamic activities (Classification) | |||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
ESP32 | ESP32S3 | ESP32 | ESP32S3 | ESP32 | ESP32S3 | |||||||
MLP | CNN | MLP | CNN | MLP | CNN | MLP | CNN | MLP | CNN | MLP | CNN | |
Inference Time | 541 us | 42.494 ms | 281 us | 34.916 ms | 4.246 ms | 27.649 ms | 3.154 ms | 22.844 ms | 5.654 ms | 103.427 ms | 4.247 ms | 83.032 ms |
Ram | 7% | 8% | 6% | 6% | 7% | 8% | 6% | 7% | 7% | 9% | 6% | 8% |
Memory | 8% | 12% | 2% | 3% | 10% | 10% | 2% | 2% | 10% | 16% | 2% | 4% |
Table 20. Microcontroller inference time test for single prediction
Parameters | Running/Walking (Phase) (Classification) | Running/Walking (Traj) (Regression) | Bicycling (Traj) (Regression) | |||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
ESP32 | ESP32S3 | ESP32 | ESP32S3 | ESP32 | ESP32S3 | |||||||
MLP | CNN | MLP | CNN | MLP | CNN | MLP | CNN | MLP | CNN | MLP | CNN | |
Inference Time | 1.157 ms | 943.342 ms | 370 us | 14.932 ms | 1.133 ms | 74.615 ms | 520 us | 16.932 ms | 1.631 ms | 29.232 ms | 1.394 ms | 5.481 ms |
Ram | 7% | 11% | 6% | 10% | 9% | 9% | 8% | 8% | 7% | 8% | 6% | 7% |
Memory | 11% | 15% | 2% | 3.5% | 11% | 14% | 2.5% | 4% | 11% | 14% | 2.5% | 3% |
Discussion
This research aims to develop a control system for an active prosthesis dependent on a mounted embedded system. Therefore, the focus will be on mounted sensors instead of external sources, depending mainly on the kinematicparameters of the shank. This study investigated two configurations of neural networks, MLP and CNN, to predict human current activity using angular velocity and linear acceleration of the IMU mounted on the shank. Previous studies used trained models to perform predictions for different activities. However, this study deconstructs the classification into a multi-step prediction instead of a direct one.
During the training process, CNN achieved higher accuracy classification than MLP. However, the prediction time of the models when deployed on the MCU did not apply to deployment due to the considerable delay in real-time application; for this reason, most high-accuracy CNNs were left out of this study. Firstly, when comparing the trained models for the first stage (static - dynamic), due to CNN limitation, MLP could achieve nearly the same accuracy of 98 and have the same f1 score of 98, and could achieve a 99 faster prediction time of 281 in contrast to CNN, which took 34.916 ms on ESP32S3. Second, for static activities classification, MLP could have a more extensive model to achieve 94 accuracy compared to 93.4 CNN; MLP has a better f1 score for sitting and standing while sitting in the car, which is slightly better predicted by CNN. MLP could predict 3.154 ms, while CNN took 22.844 ms. Finally, MLP and CNN achieved an accuracy 92 for classifying dynamic activities. MLP has a much better classification for running and walking, while CNN predicts better stairs ascending and descending. When comparing the inference time, MLP achieved 4.247 ms while CNN took 83.032 ms.
The multi-step tree approach was used to develop smaller models focusing on more straightforward tasks, which made them faster in inference time and less memory cost on the MCU. The models are compared with the findings of other publications based on the best accuracy while maintaining the network size due to the hardware capabilities’ limitations. The trained models could achieve an almost identical accuracy 98% in differentiating between static and dynamic activities. 94% and 93.4% accuracy in distinguishing between different static activities for MLP and CNN, respectively. Almost 92% classification accuracy for both models for dynamic activities. Lee et al. [27] used deep CNN five-step kinematic gait parameters of the foot such as accelerometer, gyroscope, and pressure sensor to classify seven activities (walking, fast walking, running, climbing stairs, ascending stairs, climbing stairs, and ascending stairs). Moreover, it could achieve a classification accuracy of about using only an accelerometer and a gyroscope. However, it could achieve an accuracy of almost by adding pressure sensor readings. Jaramillo et al. [26] classified human activity into eight classes (stand, bend, crouch, walk, sit down, sit up, and ascend and descend stairs) using readings from a 150-time-step IMU sensor mounted on the lower back of the subject. Shi et al. [28] used sequential convolution and a bidirectional LSTM network for gait classification (Sit, stand, go upstairs, go downstairs, walk) and could achieve an overall accuracy of 97.6. Kumari et al. [29] used LSTM to predict outdoor activities (jogging, jumping, walking, running, cycling, skiing, ascending and descending stairs) with a precision of 91.10. Gochoo et al. [30] used Kernel Sliding Perceptron to classify gait activities and achieved an accuracy of 92.5; Comparison between the proposed methodology and previous research is in Tables 21, 22.
Next, eight phases (Heel Strike, Initial Swing, Loading Response, Mid Stance, Mid Swing, Terminal Stance, Terminal Swing, and Toe Off) of walking and running activities were classified to improve the accuracy of the trajectory regression models. Both MLP and CNN achieved similar classification accuracy, around 80%. However, MLP performed better in classifying the heel strike and loading response phases, while CNN outperformed MLP in accurately identifying the mid-swing phase. However, both models struggled to classify the heel strike and toe-off phases. Kreuzer and Mun et al. [39] could achieve a classification accuracy of 92% using ConvLSTM for the classification of five phases (loading response, loading response, mid stance, terminal stance, and swing phase) for walking activity. Chen et al. [40] used downsampled U-Net to classify two phases (Swing and Stance Phase) for walking and running activities and could achieve a classification accuracy of 95.9%. Binbin Su et al. [41] achieved a classification accuracy of 95% using LSTM to classify five phases loading response, midstance, terminal stance, pre-swing, and swing) up to 200 ms ahead based on observations of 600 ms for walking activity. He achieved a detection accuracy of 79% for the loading response phase, 87% for the midstance phase, 77% for the terminal stance phase, 85% for the pre-swing phase, and 95% for the swing phase for the intersubject test. Marcos Mazón et al. [68] classified seven phases with the transition between the phases with an accuracy of 89% using CNN-LSTM; Comparison between the proposed methodology and previous research is in Table 23.
Table 21. Results comparison of activity classification
Activity Type | Sensors | Number of Subjects Train/Test | Mount | Input size (Sensors Readings) | Model | Deployed | Inference Time | Accuracy () | |
|---|---|---|---|---|---|---|---|---|---|
Lee [27] | Dynamic | IMU IMU + Pressure | 14 | Foot | 3780 8820 | CNN | – | – | 92 93.5 |
Jaramillo [26] | Static - Dynamic | IMU | 4/2 | Lower Back | 750 | CNN RNN | Jetson Nano | 4.97 ms 8.47 ms | 97.56 86.19 |
Shi [28] | Static - Dynamic | IMU | 18 | Thighs, Calves,and Ankles | 1152 | SConvLSTM CNN BiLSTM | - | - | 97.6 91.7 88.4 |
Kumari [29] | Dynamic | IMU | 10 | Thighs, and Shank | 500 | LSTM | - | - | 93.4 |
Gochoo [30] | Static - Dynamic | IMU | 18 | Chest, Wrist, and Thigh | MLKSP | - | - | 92.5 | |
Kim [67] | Dynamic | IMU + Force | 6 | Knee, and Ankle | 180/90 | LSTM/DNN | Exynos 9810 | 1.2 ms | 96 |
Proposed MCU Optimized | Static | IMU | 6/2 1 | Shank | 180 | MLP CNN | ESP32/ESP32S3 | 4.246 ms/3.1547 ms 27.649 ms/22.844 ms | 94 93.4 |
Dynamic | 5.64 ms/4.4247 ms 103.427 ms/83.032 ms | 92.0 91.9 |
Shared subjects between train and test
Table 22. Results comparison of phase classification
Activity | Number of phases | Number of subjects Train/Test | Sensor/Mount | Input size (Sensors readings) | Model | Deployed | Inference time | Accuracy () | |
|---|---|---|---|---|---|---|---|---|---|
Kreuzer and Mun [39] | Walking | 5 | 10/1 | IMU Foot, Tibia, Thigh , Hip and Arm | 480 | ConvLSTM | – | – | 92 |
Chen [40] | Walking/Running | 2 | 2/1 | IMU/Foot | 510 | U-Net | - | - | 95.9 |
Binbin Su [41] | Walking | 5 | 11/1 | IMU Foot, Shank ,and Thigh | 2205 | LSTM | – | – | 95 |
Marcos Mazón [68] | Walking | 7 | 8/1 | IMU Foot, Shank ,and Thigh | variable | CNN-LSTM | – | – | 89 |
Proposed MCU Optimized | Walking/Running | 8 | 11/2 | IMU/Shank | 180 | MLP CNN | ESP32/ESP32S3 | 1.157 ms/370 us 94.342 ms/14.932 ms | 80 80 |
Table 23. Results comparison of activity trajectory generation
Trajectory parameter | Sensors | Number of subjects Train/Test | Mount | Input size (Sensors readings) | Model | Deployed | Inference time | RMSE | |
|---|---|---|---|---|---|---|---|---|---|
Binbin Su [41] | Foot angular velocity (Walking) | IMU | 11/1 | Thigh, Shank and Foot | 2205 | LSTM | - | - | 0.487 |
Conte Alcaraz [42] | Ankle angle (Walking) | IMU | 20 | Foot | 746,400 | LSTM | - | - | 3.54 |
Zaroug [43] | Shank angular velocity (Walking) | IMU | 5/1 | Foot | 200 | LSTM | - | - | 0.024 |
Hernandez [69] | Foot angle (Walking/Running) | IMU | 23/4 | Pelvis, thigh, and tibia | 3000 | Conv LSTM | - | - | MAE 0.5 |
Slucock [70] | Knee angle (Static and Dynamic) | IMU/Potentiometer | 12 | Pelvis, thigh, and tibia | 40 | LSTM | Teensy 4.1 | below 50 ms | 0.464 |
Proposed MCU Optimized | Walking/Running | IMU | 6/2 1 | Shank | 180 | MLP CNN | ESP32/ESP32S3 | 1.133 ms/520 us 74.615 ms/16.932 ms | 0.549 0.6 |
Bicycling | 1.631 ms/1.394 ms 29.232 ms/5.481 ms | 0.516 0.409 |
Shared subjects between train and test
Lastly, the gait trajectory for three activities, walking, running, and bicycling was predicted to be 200 ms ahead of future windows based on the output of the previous classifiers. MLP could achieve an RMSE of 0.549 deg/sec for walking/running and 0.516 deg/sec for bicycling, while CNN achieved an RMSE of 0.6 deg/sec and 0.516 deg/sec for walking/running and bicycling, respectively. Binbin Su et al. [41] used IMU sensors mounted on the thigh, shank, and foot to predict the ankle’s angular velocity using LSMT and achieved an RMSE of 0.487. Conte Alcaraz et al. [42] used an IMU sensor mounted on the foot to predict the ankle’s angle while walking and could attain regression with an RMSE of 3.54. Zaroug et al. [43] used LSMT to predict the shank’s angular velocity during walking activity, resulting in RMSE 0.024. Hernandez el al. [69] used ConvLSMT to predict the foot’s angle while walking and running and achieved MAE 0.5.
Due to the current limitations of the used dataset, this study has a noticeable imbalance in the subject’s data and the diversity of subjects in training and testing. Some classes could have more training samples than others, especially for instantaneous events such as Heel Strikes and Toe-off. However, this was compensated by setting class weights during the training stage. Another limitation is the total dependency on the shank kinematic parameters, which leads to severe declassification for some classes, such as the stairs ascent and descent classes, walking and running Heel Strike, and Toe-off gait phases. The shank’s kinematicparameters lack enough information for the models to predict similar events.
Conclusion
In this study, we confirmed that MLP can achieve comparable and sometimes better prediction results than CNN, especially when provided with enough data. However, CNN generally performs better with minimal data. The optimized MLP and CNN models can classify activities for new, never-seen subjects with acceptable accuracy, depending only on the given 100 ms of sensor readings. Due to the computation of CNN, the model’s hyper-parameter should be lowered. On the other hand, since MLP has a lower computational load than CNN, it could have deeper layers and more neurons. This allows MLP to achieve close accuracy to CNN with a much better inference time delay in the MCU, highlighting the efficiency of MLP in this context. Overall, while CNN could have higher accuracy in some aspects, MLP’s efficiency is a significant advantage. A comparison of the results accuracy for classification and regression is illustrated in Tables 24 and 25.
Finally, complete dependency on IMU is efficient, but activities similar to kinematic patterns, such as walking, ascending stairs, and descending, can confuse deep learning models and cause unacceptable declassification. Moreover, instantaneous walking and running events could not be predicted satisfactorily. From the literature, it was found that using a pressure sensor grid on the ground, which has information on weight distribution, in addition to IMU readings, helped the developed models classify dynamic activities with better accuracy. For that, in future studies, a new dataset should be recorded, with enough subjects, balanced classes, more activities, and pressure sensors under the feet of the test subjects during data acquisition (Table 26).
Table 24. Models classification accuracy comparison
Activity | MLP | CNN |
|---|---|---|
Type (Static - Dynamic) | 0.9802 | 0.9793 |
Static (Standing - Sitting - Sitting in Car) | 0.9407 | 0.9339 |
Dynamic (Bicycling - Walking - Running - Stairs Up - Stairs Down) | 0.9206 | 0.919 |
Running and walking (Eight Gait Segments) | 0.808 | 0.795 |
Table 25. Models regression RMSE comparison
Activity | MLP | CNN |
|---|---|---|
Running/Walking | 0.549 | 0.600 |
Bicycling | 0.516 | 0.409 |
Table 26. Average inference latency per sample (milliseconds)
Task type | MLP | CNN | ||
|---|---|---|---|---|
ESP32 | ESP32-S3 | ESP32 | ESP32-S3 | |
Classification | 2.90 | 2.01 | 279.23 | 38.93 |
Regression | 1.38 | 0.96 | 51.92 | 11.21 |
Average of four classification tasks: activity type, static, dynamic, and running/walking phase. Average of two regression tasks: running/walking trajectory and bicycling trajectory
Author contributions
M.K.: Data collection, analysis, methodology, and writing original draft. A.E.: Conceptualization, review, editing, and final approval of the version to be published. M.A.F.: Conceptualization, spervision, administration, guidance on research direction, and contribution to the interpretation of results.
Funding
This research received no external funding.
Data availability
All data used in this study can be found at https://github.com/romanchereshnev/HuGaDB
Declarations
Ethics approval and consent to participate
Not applicable. The study uses only publicly available anonymised datasets and does not involve human or animal experimentation requiring institutional review. No new human participants were recruited; the work relies entirely on open-access sensor recordings.
Competing interests
The authors declare no Conflict of interest.
Abbreviations
Bayesian optimization
Convolutional neural network
Deep neural network
Electromyography
Finite impulse response
Human activity recognition
Inertial measurement unit
Long short term memory
Moving average filter
Multi-layered Kernel sliding perceptron
Multi-layered perceptron
Recurrent neural network
Temporal movement primitives
Time of flight
Publisher's Note
Springer Nature remains neutral with regard to jurisdictional claims in published maps and institutional affiliations.
References
1. Minh Dang, L; Min, K; Wang, H; Jalil Piran, Md; Hee Lee, C; Moon, H. Sensor-based and vision-based human activity recognition: a comprehensive survey. Pattern Recogn; 2020; 108, [DOI: https://dx.doi.org/10.1016/j.patcog.2020.107561] 107561.
2. Zhang, Y; Jiang, KN; Guo, JC; Song, L. Development of dynamic Ankle Prosthesis (review). Chin J Rehabil Theory Pract; 2019; [DOI: https://dx.doi.org/10.3969/j.issn.1006-9771.2019.12.005]
3. Hernández, I; Yu, W. Control of active lower limb prosthesis using human-in-the-loop scheme. Cogent Eng; 2022; 9,
4. Ahn, S; Kim, J; Koo, B; Kim, Y. Evaluation of inertial sensor-based pre-impact fall detection algorithms using public dataset. Sensors; 2019; 19,
5. Tao, X; Yun, Z. Fall prediction based on biomechanics equilibrium using Kinect. Int J Distrib Sens Netw; 2017; 13,
6. Alaqtash, M; Yu, H; Brower, R; Abdelgawad, A; Sarkodie-Gyan, T. Application of wearable sensors for human gait analysis using fuzzy computational algorithm. Eng Appl Artif Intell; 2011; 24,
7. Muro-de-la-Herran, A; Garcia-Zapirain, B; Mendez-Zorrilla, A. Gait analysis methods: an overview of wearable and non-wearable systems, highlighting clinical applications. Sensors (Basel Switzerland); 2014; 14,
8. Ferreira, JP; Vieira, A; Ferreira, P; Crisóstomo, M; Coimbra, AP. Human knee joint walking pattern generation using computational intelligence techniques. Neural Comput Appl; 2018; 30,
9. Patrizi, A; Pennestrì, E; Valentini, PP. Comparison between low-cost marker-less and high-end marker-based motion capture systems for the computer-aided assessment of working ergonomics. Ergonomics; 2016; 59,
10. Yiou, E; Teyssèdre, C; Artico, R; Fourcade, P. Comparison of base of support size during gait initiation using force-plate and motion-capture system: a Bland and Altman analysis. J Biomech; 2016; 49,
11. Dong, T; Guo, Y; Gu, Y; Wang, L; Liu, T; Wang, X; Li, P; Li, X. Design of a wireless and fully flexible insole using a highly sensitive pressure sensor for gait event detection. Meas Sci Technol; 2021; 32,
12. Campanini, I; Merlo, A; Degola, P; Merletti, R; Vezzosi, G; Farina, D. Effect of electrode location on EMG signal envelope in leg muscles during gait. J Electromyogr Kinesiol; 2007; 17,
13. Clemens, S; Kim, KJ; Gailey, R; Kirk-Sanchez, N; Kristal, A; Gaunaurd, I. Inertial sensor-based measures of gait symmetry and repeatability in people with unilateral lower limb amputation. Clin Biomech; 2020; 72, pp. 102-107. [DOI: https://dx.doi.org/10.1016/j.clinbiomech.2019.12.007]
14. Sprager, S; Juric, M. Inertial sensor-based gait recognition: a review. Sensors; 2015; 15,
15. Sun Y, Yang GZ, Lo B. An artificial neural network framework for lower limb motion signal estimation with foot-mounted inertial sensors. 2018. https://doi.org/10.1109/BSN.2018.8329676.
16. Vu, HTT; Dong, D; Cao, HL; Verstraten, T; Lefeber, D; Vanderborght, B; Geeroms, J. A review of gait phase detection algorithms for lower limb prostheses. Sensors; 2020; 20,
17. Schmidhuber, J. Deep learning in neural networks: an overview. Neural Netw; 2015; 61, pp. 85-117. [DOI: https://dx.doi.org/10.1016/j.neunet.2014.09.003]
18. Torres, JF; Hadjout, D; Sebaa, A; Martínez-Álvarez, F; Troncoso, A. Deep learning for time series forecasting: a survey. Big Data; 2021; 9,
19. Lara-Benítez, P; Carranza-García, M; Riquelme, JC. An experimental review on deep learning architectures for time series forecasting. Int J Neural Syst; 2021; 31,
20. Manero, J; Béjar, J; Cortés, U. “Dust in the Wind..”, deep learning application to wind energy time series forecasting. Energies; 2019; 12,
21. Karakish, M; Fouz, MA; El-sawaf, A. Gait trajectory prediction on an embedded microcontroller using deep learning. Sensors; 2022; 22,
22. Karakish M, ELsawaf A, El-Sebah MIA, Fouz MA. Stairs gait cycle trajectory prediction and phase segmentation using deep learning. 2023. https://doi.org/10.1109/ICCTA60978.2023.10969432.
23. Miao Y, Zhang Y, Li R, Wu Q, Wang S, Wang X. Lower-limb movements prediction method based on adaptive temporal movement primitives for weight-loading exoskeletons. Industrial Robot The International Journal of Robotics Research and Application. 2025. https://doi.org/10.1108/IR-11-2024-0516. Advance online publication.
24. Wu, X; Ma, Y; Yong, X; Wang, C; He, Y; Li, N. Locomotion mode identification and gait phase estimation for exoskeletons during continuous multilocomotion tasks. IEEE Trans Cogn Dev Syst; 2021; 13,
25. Dey, S; Yoshida, T; Foerster, RH; Ernst, M; Schmalz, T; Schilling, AF. Continuous prediction of joint angular positions and moments: a potential control strategy for active knee-ankle prostheses. IEEE Trans Med Robot Bionics; 2020; 2,
26. Jaramillo, IE; Jeong, JG; Lopez, PR; Lee, CH; Kang, DY; Ha, TJ; Oh, JH; Jung, H; Lee, JH; Lee, WH; Kim, TS. Real-time human activity recognition with IMU and encoder sensors in wearable exoskeleton robot via deep learning networks. Sensors; 2022; 22,
27. Lee, SS; Choi, ST; Choi, SI. Classification of gait type based on deep learning using various sensors with smart insole. Sensors; 2019; 19,
28. Shi, LF; Liu, ZY; Zhou, KJ; Shi, Y; Jing, X. Novel deep learning network for gait recognition using multimodal inertial sensors. Sensors; 2023; 23,
29. Kumari G, Chakraborty J, Nandy A. Effect of reduced dimensionality on deep learning for human activity recognition. 2020. https://doi.org/10.1109/ICCCNT49239.2020.9225419.
30. Gochoo, M; Tahir, SBUD; Jalal, A; Kim, K. Monitoring real-time personal locomotion behaviors over smart indoor-outdoor environments via Body-Worn sensors. IEEE Access; 2021; 9, pp. 70556-70570. [DOI: https://dx.doi.org/10.1109/ACCESS.2021.3078513]
31. Semwal, VB; Gaud, N; Lalwani, P; Bijalwan, V; Alok, AK. Pattern identification of different human joints for different walking styles using inertial measurement unit (imu) sensor. Artif Intell Rev; 2022; 55,
32. Tokas, P; Semwal, VB; Jain, S. Deep ensemble learning approach for lower limb movement recognition from multichannel sEMG signals. Neural Comput Appl; 2024; 36,
33. Cherelle, P; Grosu, V; Flynn, L; Junius, K; Moltedo, M; Vanderborght, B; Lefeber, D. The ankle mimicking prosthetic foot 3-Locking mechanisms, actuator design, control and experiments with an amputee. Robot Auton Syst; 2017; 91, pp. 327-336. [DOI: https://dx.doi.org/10.1016/j.robot.2017.02.004]
34. Kazerooni, H; Steger, R; Huang, L. Hybrid control of the Berkeley lower extremity exoskeleton (BLEEX). Int J Robot Res; 2006; 25,
35. Grimmer, M; Schmidt, K; Duarte, JE; Neuner, L; Koginov, G; Riener, R. Stance and swing detection based on the angular velocity of lower limb segments during walking. Front Neurorobot; 2019; 13, 57. [DOI: https://dx.doi.org/10.3389/fnbot.2019.00057]
36. Taborri, J; Palermo, E; Rossi, S; Cappa, P. Gait partitioning methods: a systematic review. Sensors; 2016; 16,
37. Neumann DA. Kinesiology of the Musculoskeletal System - E-Book: Foundations for Rehabilitation (Elsevier Health Sciences, 2013).
38. Cho, YS; Jang, SH; Cho, JS; Kim, MJ; Lee, HD; Lee, SY; Moon, SB. Evaluation of validity and reliability of inertial measurement unit-based gait analysis systems. Ann Rehabil Med; 2018; 42,
39. Kreuzer, D; Munz, M. Deep convolutional and LSTM networks on multi-channel time series data for gait phase recognition. Sensors; 2021; 21,
40. Chen, Y; Sui, JD; Chang, TS. Real time on sensor gait phase detection with 0.5KB. Deep Learn Model; 2020; [DOI: https://dx.doi.org/10.1109/ICCE-Taiwan49838.2020.9258180]
41. Su, B; Gutierrez-Farewik, EM. Gait trajectory and gait phase prediction based on an LSTM network. Sensors; 2020; 20,
42. Conte Alcaraz, J; Moghaddamnia, S; Peissig, J. Efficiency of deep neural networks for joint angle modeling in digital gait assessment. EURASIP J Adv Signal Proc; 2021; 2021,
43. Zaroug, A; Lai, DTH; Mudie, K; Begg, R. Lower limb kinematics trajectory prediction using long short-term memory neural networks. Front Bioeng Biotechnol; 2020; 8, 362. [DOI: https://dx.doi.org/10.3389/fbioe.2020.00362]
44. Semwal, VB; Jain, R; Maheshwari, P; Chadda, S; Sharma, V; Li, K. Gait reference trajectory generation at different walking speeds using LSTM and CNN. Multimedia Tools Appl; 2023; 82, pp. 33401-33419. [DOI: https://dx.doi.org/10.1007/s11042-023-14733-2]
45. Hori, K; Mao, Y; Ono, Y; Ora, H; Hirobe, Y; Sawada, H; Inaba, A; Orimo, S; Miyake, Y. Inertial measurement unit-based estimation of foot trajectory for clinical gait analysis. Front Physiol; 2020; 10, 1530. [DOI: https://dx.doi.org/10.3389/fphys.2019.01530]
46. Alessandrini, M; Biagetti, G; Crippa, P; Falaschetti, L; Turchetti, C. Recurrent neural network for human activity recognition in embedded systems using PPG and accelerometer data. Electronics; 2021; 10,
47. Chereshnev R, Kertész-Farkas A. in Analysis of Images, Social Networks and Texts, ed. by W.M. van der Aalst, D.I. Ignatov, M. Khachay, S.O. Kuznetsov, V. Lempitsky, I.A. Lomazova, N. Loukachevitch, A. Napoli, A. Panchenko, P.M. Pardalos, A.V. Savchenko, S. Wasserman (Springer International Publishing, Cham, 2018),131–141. https://doi.org/10.1007/978-3-319-73013-4_12.
48. Chen Y, Li D, Li Y, Ma X, Wei J. Use moving average filter to reduce noises in wearable PPG during continuous monitoring. 2017. https://doi.org/10.1007/978-3-319-49655-9_26.
49. Bangera SS, Shiyana TD, Srinidhi GK, Vasani YR, Sukesh Rao M. in Advances in Communication, Signal Processing, VLSI, and Embedded Systems, ed. by S. Kalya, M. Kulkarni, K. Shivaprakasha (Springer, Singapore, 2020), 1–14. https://doi.org/10.1007/978-981-15-0626-0_1.
50. Gulmammadov F. Analysis, modeling and compensation of bias drift in MEMS inertial sensors. 2009. https://doi.org/10.1109/RAST.2009.5158260.
51. Ahsan, MM; Mahmud, MAP; Saha, PK; Gupta, KD; Siddique, Z. Effect of data scaling methods on machine learning algorithms and model performance. Technologies; 2021; 9,
52. Brownlee J. Deep learning for time series forecasting: predict the future with MLPs, CNNs and LSTMs in Python (Machine Learning Mastery, 2018).
53. Banos, O; Galvez, JM; Damas, M; Pomares, H; Rojas, I. Window size impact in human activity recognition. Sensors; 2014; 14,
54. Sandhu, KS; Lozada, DN; Zhang, Z; Pumphrey, MO; Carter, AH. Deep learning for predicting complex traits in spring wheat breeding program. Front Plant Sci; 2021; [DOI: https://dx.doi.org/10.3389/fpls.2020.613325]
55. Chen SA, Li CL, Yoder N, Arik SO, Pfister T. TSMixer: an All-MLP architecture for time series forecasting. 2023. https://doi.org/10.48550/arXiv.2303.06053.
56. Shiblee Md, Kalra PK, Chandra B. in Advances in Neuro-Information Processing, ed. by M. Köppen, N. Kasabov, G. Coghill (Springer, Berlin, Heidelberg, 2009). 37–44. https://doi.org/10.1007/978-3-642-03040-6_5.
57. Xin P, Zhao H. Time series forecasting using multilayer neural network constructed by a Monte-Carlo based algorithm. 2009. https://doi.org/10.1109/SWS.2009.5271810.
58. Borovykh A, Bohte S, Oosterlee CW. Conditional Time Series Forecasting with Convolutional Neural Networks 2018. https://doi.org/10.48550/arXiv.1703.04691.
59. Wang Z, Yan W, Oates T. Time series classification from scratch with deep neural networks: a strong baseline. 2016. https://doi.org/10.48550/arXiv.1611.06455.
60. Tiwari A. Comparative study on time series forecasting using deep learning models. 2020. https://doi.org/10.13140/RG.2.2.26561.71521/1.
61. Bergstra J, Bardenet R, Bengio Y, Kégl B. in Advances in Neural Information Processing Systems, vol. 24, ed. by J. Shawe-Taylor, R. Zemel, P. Bartlett, F. Pereira, K. Weinberger (Curran Associates, Inc., 2011).
62. Snoek J, Larochelle H, Adams RP. in Advances in Neural Information Processing Systems, vol. 25, ed. by F. Pereira, C. Burges, L. Bottou, K. Weinberger (Curran Associates, Inc., 2012)
63. Lin J, Chen WM, Lin Y, Cohn J, Gan C, Han S. MCUNet: Tiny Deep Learning on IoT Devices. 2020. https://doi.org/10.48550/arXiv.2007.10319.
64. Wang Z, Yan W, Oates T. Time Series classification from scratch with deep neural networks: A Strong Baseline. 2016. https://doi.org/10.48550/arXiv.1611.06455.
65. Liu, Y; Zhou, Y; Wen, S; Tang, C. A strategy on selecting performance metrics for classifier evaluation. Int J Mobile Comput Multimedia Commun; 2014; 6,
66. Botchkarev A. Evaluating performance of regression machine learning models using multiple error metrics in azure machine learning studio. ssrn scholarly. Social Science Research Network. Rochester, NY 2018;3177507. https://doi.org/10.2139/ssrn.3177507.
67. Kim, M; Simon, AM; Hargrove, LJ. Seamless and intuitive control of a powered prosthetic leg using deep neural network for transfemoral amputees. Wearable Technol; 2022; 3, [DOI: https://dx.doi.org/10.1017/wtc.2022.19] e24.
68. Marcos Mazon, D; Groefsema, M; Schomaker, LRB; Carloni, R. IMU-based classification of locomotion modes, transitions, and gait phases with convolutional recurrent neural networks. Sensors; 2022; 22,
69. Hernandez, V; Dadkhah, D; Babakeshizadeh, V; Kulić, D. Lower body kinematics estimation from wearable sensors for walking and running: a deep learning approach. Gait & Posture; 2021; 83, pp. 185-193. [DOI: https://dx.doi.org/10.1016/j.gaitpost.2020.10.026]
70. Slucock, T; Howells, G; Hoque, S; Sirlantzis, K. Development of a microcontroller-based recurrent neural network predictive system for lower limb exoskeletons. J Intell & Robotic Syst; 2025; 111,
© The Author(s) 2025. This work is published under http://creativecommons.org/licenses/by-nc-nd/4.0/ (the “License”). Notwithstanding the ProQuest Terms and Conditions, you may use this content in accordance with the terms of the License.