├── Images ├── output_26_0.png ├── output_28_0.png ├── output_40_0.png ├── output_41_0.png ├── output_43_1.png ├── output_46_0.png ├── output_48_0.png ├── output_55_1.png ├── output_55_3.png ├── output_55_5.png ├── output_55_7.png ├── output_55_9.png ├── output_56_1.png ├── output_56_3.png ├── output_56_5.png ├── output_75_3.png ├── output_76_0.png ├── output_80_3.png ├── output_83_1.png ├── output_85_1.png ├── output_87_1.png ├── output_89_1.png ├── output_135_0.png ├── output_163_3.png ├── output_198_0.png ├── output_199_0.png ├── output_200_0.png ├── output_201_0.png ├── output_206_1.png ├── output_227_0.png ├── output_228_0.png ├── output_231_1.png ├── output_244_0.png └── Divide and conqure CNN.png ├── Human Activity Detection.pdf ├── Human Activity Detection-Without Verbose .pdf └── README.md /Images/output_26_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/UdiBhaskar/Human-Activity-Recognition--Using-Deep-NN/HEAD/Images/output_26_0.png -------------------------------------------------------------------------------- /Images/output_28_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/UdiBhaskar/Human-Activity-Recognition--Using-Deep-NN/HEAD/Images/output_28_0.png -------------------------------------------------------------------------------- /Images/output_40_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/UdiBhaskar/Human-Activity-Recognition--Using-Deep-NN/HEAD/Images/output_40_0.png -------------------------------------------------------------------------------- /Images/output_41_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/UdiBhaskar/Human-Activity-Recognition--Using-Deep-NN/HEAD/Images/output_41_0.png -------------------------------------------------------------------------------- /Images/output_43_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/UdiBhaskar/Human-Activity-Recognition--Using-Deep-NN/HEAD/Images/output_43_1.png -------------------------------------------------------------------------------- /Images/output_46_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/UdiBhaskar/Human-Activity-Recognition--Using-Deep-NN/HEAD/Images/output_46_0.png -------------------------------------------------------------------------------- /Images/output_48_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/UdiBhaskar/Human-Activity-Recognition--Using-Deep-NN/HEAD/Images/output_48_0.png -------------------------------------------------------------------------------- /Images/output_55_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/UdiBhaskar/Human-Activity-Recognition--Using-Deep-NN/HEAD/Images/output_55_1.png -------------------------------------------------------------------------------- /Images/output_55_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/UdiBhaskar/Human-Activity-Recognition--Using-Deep-NN/HEAD/Images/output_55_3.png -------------------------------------------------------------------------------- /Images/output_55_5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/UdiBhaskar/Human-Activity-Recognition--Using-Deep-NN/HEAD/Images/output_55_5.png -------------------------------------------------------------------------------- /Images/output_55_7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/UdiBhaskar/Human-Activity-Recognition--Using-Deep-NN/HEAD/Images/output_55_7.png -------------------------------------------------------------------------------- /Images/output_55_9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/UdiBhaskar/Human-Activity-Recognition--Using-Deep-NN/HEAD/Images/output_55_9.png -------------------------------------------------------------------------------- /Images/output_56_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/UdiBhaskar/Human-Activity-Recognition--Using-Deep-NN/HEAD/Images/output_56_1.png -------------------------------------------------------------------------------- /Images/output_56_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/UdiBhaskar/Human-Activity-Recognition--Using-Deep-NN/HEAD/Images/output_56_3.png -------------------------------------------------------------------------------- /Images/output_56_5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/UdiBhaskar/Human-Activity-Recognition--Using-Deep-NN/HEAD/Images/output_56_5.png -------------------------------------------------------------------------------- /Images/output_75_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/UdiBhaskar/Human-Activity-Recognition--Using-Deep-NN/HEAD/Images/output_75_3.png -------------------------------------------------------------------------------- /Images/output_76_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/UdiBhaskar/Human-Activity-Recognition--Using-Deep-NN/HEAD/Images/output_76_0.png -------------------------------------------------------------------------------- /Images/output_80_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/UdiBhaskar/Human-Activity-Recognition--Using-Deep-NN/HEAD/Images/output_80_3.png -------------------------------------------------------------------------------- /Images/output_83_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/UdiBhaskar/Human-Activity-Recognition--Using-Deep-NN/HEAD/Images/output_83_1.png -------------------------------------------------------------------------------- /Images/output_85_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/UdiBhaskar/Human-Activity-Recognition--Using-Deep-NN/HEAD/Images/output_85_1.png -------------------------------------------------------------------------------- /Images/output_87_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/UdiBhaskar/Human-Activity-Recognition--Using-Deep-NN/HEAD/Images/output_87_1.png -------------------------------------------------------------------------------- /Images/output_89_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/UdiBhaskar/Human-Activity-Recognition--Using-Deep-NN/HEAD/Images/output_89_1.png -------------------------------------------------------------------------------- /Images/output_135_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/UdiBhaskar/Human-Activity-Recognition--Using-Deep-NN/HEAD/Images/output_135_0.png -------------------------------------------------------------------------------- /Images/output_163_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/UdiBhaskar/Human-Activity-Recognition--Using-Deep-NN/HEAD/Images/output_163_3.png -------------------------------------------------------------------------------- /Images/output_198_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/UdiBhaskar/Human-Activity-Recognition--Using-Deep-NN/HEAD/Images/output_198_0.png -------------------------------------------------------------------------------- /Images/output_199_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/UdiBhaskar/Human-Activity-Recognition--Using-Deep-NN/HEAD/Images/output_199_0.png -------------------------------------------------------------------------------- /Images/output_200_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/UdiBhaskar/Human-Activity-Recognition--Using-Deep-NN/HEAD/Images/output_200_0.png -------------------------------------------------------------------------------- /Images/output_201_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/UdiBhaskar/Human-Activity-Recognition--Using-Deep-NN/HEAD/Images/output_201_0.png -------------------------------------------------------------------------------- /Images/output_206_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/UdiBhaskar/Human-Activity-Recognition--Using-Deep-NN/HEAD/Images/output_206_1.png -------------------------------------------------------------------------------- /Images/output_227_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/UdiBhaskar/Human-Activity-Recognition--Using-Deep-NN/HEAD/Images/output_227_0.png -------------------------------------------------------------------------------- /Images/output_228_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/UdiBhaskar/Human-Activity-Recognition--Using-Deep-NN/HEAD/Images/output_228_0.png -------------------------------------------------------------------------------- /Images/output_231_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/UdiBhaskar/Human-Activity-Recognition--Using-Deep-NN/HEAD/Images/output_231_1.png -------------------------------------------------------------------------------- /Images/output_244_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/UdiBhaskar/Human-Activity-Recognition--Using-Deep-NN/HEAD/Images/output_244_0.png -------------------------------------------------------------------------------- /Human Activity Detection.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/UdiBhaskar/Human-Activity-Recognition--Using-Deep-NN/HEAD/Human Activity Detection.pdf -------------------------------------------------------------------------------- /Images/Divide and conqure CNN.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/UdiBhaskar/Human-Activity-Recognition--Using-Deep-NN/HEAD/Images/Divide and conqure CNN.png -------------------------------------------------------------------------------- /Human Activity Detection-Without Verbose .pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/UdiBhaskar/Human-Activity-Recognition--Using-Deep-NN/HEAD/Human Activity Detection-Without Verbose .pdf -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Human Activity Recognition Using Deep Learning 2 | This project is to build a model that predicts the human activities such as Walking, Walking_Upstairs, Walking_Downstairs, Sitting, Standing or Laying. This dataset is collected from 30 persons(referred as subjects in this dataset), performing different activities with a smartphone to their waists. The data is recorded with the help of sensors (accelerometer and Gyroscope) in that smartphone. This experiment was video recorded to label the data manually. got data from [here](https://archive.ics.uci.edu/ml/datasets/human+activity+recognition+using+smartphones) 3 | ### How data was recorded: 4 | By using the sensors(Gyroscope and accelerometer) in a smartphone, they have captured '3-axial linear acceleration'(tAcc-XYZ) from accelerometer and '3-axial angular velocity' (tGyro-XYZ) from Gyroscope with several variations. The sensor signals (accelerometer and gyroscope) were pre-processed by applying noise filters and then sampled in fixed-width sliding windows of 2.56 sec and 50% overlap (128 readings/window). The sensor acceleration signal, which has gravitational and body motion components, was separated using a Butterworth low-pass filter into body acceleration and gravity. The gravitational force is assumed to have only low frequency components, therefore a filter with 0.3 Hz cutoff frequency was used. From each window, a vector of features was obtained by calculating variables from the time and frequency domain. 5 | ### Attribute Information: 6 | For each record in the dataset it is provided: 7 | - Triaxial acceleration from the accelerometer (total acceleration) and the estimated body acceleration. 8 | - Triaxial Angular velocity from the gyroscope. 9 | - A 561-feature vector with time and frequency domain variables. 10 | - Its activity label.(WALKING, WALKING_UPSTAIRS, WALKING_DOWNSTAIRS, SITTING, STANDING, LAYING) 11 | - An identifier of the subject who carried out the experiment. 12 | 13 | You can check my Total work in [ipynb note book](https://github.com/UdiBhaskar/Human-Activity-Recognition--Using-Deep-NN/blob/master/Human%20Activity%20Detection.ipynb) and [github link](https://github.com/UdiBhaskar/Human-Activity-Recognition--Using-Deep-NN) 14 | ### Some Analysis findings: 15 | - No of Datapoints per Activity 16 | ![No of Datapoints per Activity](https://github.com/UdiBhaskar/Human-Activity-Recognition--Using-Deep-NN/blob/master/Images/output_28_0.png "No of Datapoints per Activity") 17 | - Plotted tBodyAccMag_mean feature find some interesting plot that we can devide activities into stationary and Moving(Dynamic) see below plot 18 | ![Stationary and Moving activities](https://github.com/UdiBhaskar/Human-Activity-Recognition--Using-Deep-NN/blob/master/Images/output_40_0.png "Stationary and Moving activities") 19 | - Magnitude of an acceleration can saperate it well - See below plot 20 | ![Magnitude of an acceleration](https://github.com/UdiBhaskar/Human-Activity-Recognition--Using-Deep-NN/blob/master/Images/output_43_1.png "Magnitude of an acceleration") 21 | - Tried TSNE plots with different perplexity and No of iterations , got similar results as below 22 | ![Magnitude of an accelerationTSNE](https://github.com/UdiBhaskar/Human-Activity-Recognition--Using-Deep-NN/blob/master/Images/output_56_3.png "TSNE") 23 | ### Machine Learning Models: 24 | #### Data: 25 | - We have 561 handcoded features of raw series data. 26 | - Raw data signals in each axis for Accelerometer and Gyroscop. also Accelerometer was divided into body and total. i.e body = total - gravitational force. 27 | - Respective label information 28 | - Data divided into Train and Test 29 | #### Models 30 | 1. Tried some machine learning algoritms and tuned hyperparameters. you can check my entire results in above [ipynb notebook](https://github.com/UdiBhaskar/Human-Activity-Recognition--Using-Deep-NN/blob/master/Human%20Activity%20Detection.ipynb) 31 | got best results with Linear SVC with 96.5%. Check Test confusion matrix below. 32 | ![Linear SVC](https://github.com/UdiBhaskar/Human-Activity-Recognition--Using-Deep-NN/blob/master/Images/output_80_3.png "Linear SVC") 33 | 2. LSTM to Classify features With Raw series data 34 | (SIGNALS ="body_acc_x","body_acc_y","body_acc_z","body_gyro_x","body_gyro_y","body_gyro_z","total_acc_x","total_acc_y","total_acc_z") 35 | Used tensorflow and Keras to build models and Tuned Hyperparameters with Hyperas. Tried 1 and 2 layer LSTM because of lack of hardware to train. Tuend all hyperparameters and got Test accuracy if 91.99%. Below is Test Confusion Matrix. you can check my entire results in above [ipynb notebook](https://github.com/UdiBhaskar/Human-Activity-Recognition--Using-Deep-NN/blob/master/Human%20Activity%20Detection.ipynb) 36 | ![LSTM](https://github.com/UdiBhaskar/Human-Activity-Recognition--Using-Deep-NN/blob/master/Images/output_135_0.png "LSTM") 37 | 3. CNN with 1d Convolution of Raw data 38 | Tried CNN wit 1d Conv and tuned hyperparameters with Hyperas. Got best test accuracy 92.3%. you can check my entire results in above [ipynb notebook](https://github.com/UdiBhaskar/Human-Activity-Recognition--Using-Deep-NN/blob/master/Human%20Activity%20Detection.ipynb). below is Test confusion matrix 39 | ![CNN](https://github.com/UdiBhaskar/Human-Activity-Recognition--Using-Deep-NN/blob/master/Images/output_163_3.png "CNN") 40 | 4. Divide and Conquer-Based with 1D CNN for Raw series Data 41 | - in Data exploration section we observed that we can divide the data into dynamic and static type so divided walking,waling_upstairs,walking_downstairs into category 0 i.e Dynamic, sitting, standing, laying into category 1 i.e. static. 42 | - used 2 more classifiers seperatly for classifying classes of dynamic and static activities. so that model can learn differnt features for static and dynamic activities as below 43 | ![Divide and Conquer-Based with 1D CNN](https://github.com/UdiBhaskar/Human-Activity-Recognition--Using-Deep-NN/blob/master/Images/Divide%20and%20conqure%20CNN.png "Divide and Conquer-Based with 1D CNN") 44 | Trained these 3 cnn models , Tuned hyperparmeters and written prediction pipeline. you can check my entire results in above [ipynb notebook](https://github.com/UdiBhaskar/Human-Activity-Recognition--Using-Deep-NN/blob/master/Human%20Activity%20Detection.ipynb). 45 | Got Test accuracy of 96.9%.. Below is Test confusion Matrix. 46 | ![Divide and Conquer-Based with 1D CNN](https://github.com/UdiBhaskar/Human-Activity-Recognition--Using-Deep-NN/blob/master/Images/output_244_0.png "Divide and Conquer-Based with 1D CNN") 47 | ### Results: 48 | ##### With Handcoded 561 Features and Machine Learning Algorithms 49 | | Algorithm | Test Accuracy % | 50 | | ------------- |-------------| 51 | | Logistic Regression | 96.3 | 52 | | Linear SVC | 96.5 | 53 | | rbf SVM classifier | 96.27 | 54 | | DecisionTree | 86.39 | 55 | | Random Forest | 91.08 | 56 | | GradientBoosting DT | 92.63 | 57 | ##### With Raw Series data and Deep Learning Algorithms 58 | | Algorithm | Test Accuracy % | 59 | | ------------- |-------------| 60 | | LSTM | 91.99 | 61 | | CNN | 92.3 | 62 | | Divide and Conquer-Based with CNN | 96.9 | 63 | 64 | References: 65 | 1. Deep Learning Models for Human Activity Recognition by machinelearningmastery.com 66 | 2. Divide and Conquer-Based 1D CNN Human Activity Recognition Using Test Data Sharpening [paper]( https://www.mdpi.com/1424-8220/18/4/1055/pdf ) 67 | --------------------------------------------------------------------------------