Project 09 / 10 · Vision
Human Action Recognition
Systematic benchmark of four CNN architectures classifying 40 human actions across 9,500+ Stanford 40 images — scratch vs. transfer learning.
01 / Context
The problem
This study tests how four established CNN families behave on a relatively small, diverse action dataset, comparing models trained from scratch against ImageNet transfer learning under a consistent setup.
02 / System workflow
From input to output
- 01Stanford 40 images
- 02Resize + normalize
- 03CNN training
- 04Held-out evaluation
- 05Streamlit inference
03 / Architecture
Inside the system
The dataset contains 9,532 still images across 40 action classes with a 75/15/10 train, validation, and test split.
VGG-16, ResNet-50, DenseNet-121, and GoogLeNet are implemented in a shared training and evaluation pipeline.
Images are resized to 224×224 and normalized with ImageNet statistics; Adam and cross-entropy are used across experiments.
04 / Engineering decisions
What shaped the build
Decision 01
Transfer learning benchmark
Pretrained and scratch variants reveal the value of ImageNet features when labeled task data is limited.
Decision 02
Architecture-level comparison
Training curves, confusion matrices, precision, recall, and weighted F1 preserve more evidence than a single accuracy number.
Decision 03
Interactive validation
The Streamlit application supports live training and random-image predictions with true and predicted labels.
05 / Evidence
Measured, not implied
77.99%
Best accuracy
Fine-tuned DenseNet-121 on held-out test data.
77.90%
Weighted F1
DenseNet-121 precision and recall balance.
40
Action classes
Stanford 40 categories across 9,532 images.
06 / Delivery
What shipped
- 01A command-line training entry point keeps model runs reproducible from the shared configuration.
- 02The Streamlit interface exposes dataset selection, live loss and accuracy plots, and image prediction.
- 03The repository keeps the research notebook, report, model modules, and application together for inspection.
Constraint documented
Scratch-trained DenseNet and GoogLeNet reach only 31.76% and 19.60% accuracy, showing that the available dataset is not large enough to learn comparable representations from initialization.