Gianella Bejar.
AI & Machine LearningCompletedDraft copy · confirm everything

Exercise classification from smartwatch motion data

A convolutional neural network that recognises exercises from wrist-worn IMU data, built for an applied machine learning course.

My role
Team project for APS360 (your exact contribution to confirm)
Timeline
[Month Year] – [Month Year]
Stack
PythonPyTorchCNNRandom ForestGoogle ColabLaTeX
Links
No public links yet

Overview

This project classifies which exercise someone is doing from the motion sensors in a smartwatch. It was my applied machine learning (APS360) course project, and it connects to a wider interest of mine in wearables and health technology.

The problem

Wearables record a constant stream of accelerometer and gyroscope readings. Turning that stream into something meaningful, such as "this person is doing squats", needs a model that copes with noisy, continuous signals.

Context and motivation

Fitness tracking is one of the most familiar uses of wearable data, and it is a good test of whether a small model can learn from raw sensor streams.

My role

To write: which parts you built (data processing, model, report) and which were shared.

Approach

Two models were compared: a Random Forest baseline and a convolutional neural network (CNN). Comparing against a simple baseline shows whether the extra complexity of the network earns its place.

Technical architecture

Data came from the MM-Fit dataset. The pipeline cleans and aligns the sensor streams, cuts them into windows, and feeds the windows to each model. Work was split across two Colab notebooks: one for data processing and one for the CNN.

Implementation

The hardest bug was in the data, not the model. Sensor readings and exercise labels had to be matched by timestamp, and a misalignment in that step quietly produced bad training data until it was found and fixed by matching on timestamp ranges at centisecond resolution. The lesson was to verify alignment before trusting any accuracy number.

Trade-offs and decisions

OptionTrade-offChosen
Random Forest baselineSimple and quick, but needs hand-built featuresKept as a baseline
CNN on raw windowsLearns features itself, but needs careful data handlingYes

Results and impact

The final CNN was compact, about 179 KB, and competitive with the larger baseline. Add your measured test accuracy here, and only the number you can reproduce.

Lessons learned

Check the data pipeline first. A model can look fine while learning from misaligned data.

What's next

To write.

Notebooks and the report can be linked here if you want them public.