You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This issue is meant to track the implementation of the {LR_Det_Ullrich} algorithm for left/right foot detection for a single IMU sensor placed on the lower back.
Short description:
1) The McCamley algorithm
In the original McCamley algorithm, the angular velocity around the vertical axis ($gyr_{v}$) serves as the distinguishing factor for identifying left and right ICs. The process involves the following steps:
Signal Pre-processing: Subtracting the signal mean and applying a low-pass filter (4th order Butterworth filter with a 2 Hz cut-off frequency).
IC Assignment: Analyzing the sign of the filtered $gyr_{v}$ value at the IC time point $n$ for classification. If the value is positive, the IC is attributed to the right foot; if negative, it's attributed to the left foot.
As a first extension to the original McCamley algorithm, the angular velocity around the anterior-posterior axis, $gyr_{ap}$, can resemble a periodic wave with a constant phase shift w.r.t. $gyr_{v}$ after application of the low-pass filter described above. This is also a suitable input signal for the McCamley algorithm, when inverting the sign. A second and final extension to the original McCamley algorithm is to use the combination of the filtered signals for the vertical and anterior-posterior signals, $gyr_{comb}$:
In the ML-based algorithms, we expand the feature set by incorporating the first and second derivatives of the filtered signals at the time points of the $n$ ICs. Consequently, for a dataset containing a total of $N$ ICs, this results in a $N \times 6$ feature matrix. To ensure uniformity, the feature set is min-max normalized.
Four different algorithms are employed for the left/right detection, which is essentially a binary classification task:
Linear Support Vector Machine (SVM-lin)
Radial Basis Function Support Vector Machine (SVM-rbf)
k-Nearest Neighbours (kNN)
Random Forest Classifiers (RFC)
Link to original implementation: N/A
Reference Papers: Ullrich M, Kuderle A, Reggi L, Cereatti A, Eskofier BM, Kluge F. Machine learning-based distinction of left and right foot contacts in lower back inertial sensor gait data. Annu Int Conf IEEE Eng Med Biol Soc. 2021, available at: https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=9630653
Notes
TBA
Todo-List
Provide ground truth labels for each IC (left or right) from the gold-standard data. Use this to compute the accuracy of the algorithms on the test data. The accuracy is formally defined as the number of agreements between predicted left and right labels and the ground truth labels divided by the total number of ICs, as described in below:
Linked this issue in the meta issue for algorithm development
Created new branch and PR for this algorithm
Input Output datatypes identified
Relevant algorithm parameters identified
Identified all relevant information
Confirmed the info and general implementation plan with the rest of the developer team
Generate results from original implementation
Original algorithm is running locally
Example outputs from original algorithms generated and added to the repo
Implementation of Algorithm
Core algorithm implemented
Wrapper class implemented
Initial peer-code review completed
Extensive docstring added to algorithm class (should include references!)
General tests added for the wrapper class
Unit tests added (in particular to test edge cases)
Example created (example should show how to use the algorithm, visualize the algo results and show a comparison the reference data and the results from the original implementation)
Regression test for example created
Added wrapper class to documentation
Final code review completed
PR merged and meta issue updated
The text was updated successfully, but these errors were encountered:
This issue is meant to track the implementation of the {LR_Det_Ullrich} algorithm for left/right foot detection for a single IMU sensor placed on the lower back.
Short description:
1) The McCamley algorithm
In the original McCamley algorithm, the angular velocity around the vertical axis ($gyr_{v}$ ) serves as the distinguishing factor for identifying left and right ICs. The process involves the following steps:
As a first extension to the original McCamley algorithm, the angular velocity around the anterior-posterior axis,$gyr_{ap}$ , can resemble a periodic wave with a constant phase shift w.r.t. $gyr_{v}$ after application of the low-pass filter described above. This is also a suitable input signal for the McCamley algorithm, when inverting the sign. A second and final extension to the original McCamley algorithm is to use the combination of the filtered signals for the vertical and anterior-posterior signals, $gyr_{comb}$ :
2) Machine Learning Approaches
In the ML-based algorithms, we expand the feature set by incorporating the first and second derivatives of the filtered signals at the time points of the$n$ ICs. Consequently, for a dataset containing a total of $N$ ICs, this results in a $N \times 6$ feature matrix. To ensure uniformity, the feature set is min-max normalized.
Four different algorithms are employed for the left/right detection, which is essentially a binary classification task:
Link to original implementation: N/A
Reference Papers: Ullrich M, Kuderle A, Reggi L, Cereatti A, Eskofier BM, Kluge F. Machine learning-based distinction of left and right foot contacts in lower back inertial sensor gait data. Annu Int Conf IEEE Eng Med Biol Soc. 2021, available at: https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=9630653
Notes
TBA
Todo-List
Provide ground truth labels for each IC (left or right) from the gold-standard data. Use this to compute the accuracy of the algorithms on the test data. The accuracy is formally defined as the number of agreements between predicted left and right labels and the ground truth labels divided by the total number of ICs, as described in below:
Prepare work:
Generate results from original implementation
Implementation of Algorithm
The text was updated successfully, but these errors were encountered: