AlexNet Binary Classifier - Real-Time Activity and Intention Recognition

AlexNet-style convolutional neural network that classifies whether a person is entering a door or just passing by it. Trained with TensorFlow/Keras as part of the Real-Time Activity and Intention Recognition project.

Model Details

  • Architecture: AlexNet (5 conv layers + BatchNorm, 3ร—3 overlapping max-pooling, two 4096-unit dense layers with 0.5 dropout, softmax output)
  • Framework: TensorFlow / Keras (saved in the modern .keras format)
  • Input: RGB image, 227ร—227ร—3, raw 0-255 pixel values (rescaling to [0, 1] is built into the model - do not normalize before feeding images)
  • Output: softmax probabilities over 2 classes
    • 0 - passing by the door
    • 1 - entering the door

Performance

Evaluated on a held-out, balanced test set of 1,120 images (560 per class):

Metric Value
Test accuracy 98.84%
F1-score (passing by, 0) 0.99
F1-score (entering, 1) 0.99
Test loss 0.0755

Confusion matrix:

Pred: passing by Pred: entering
True: passing by 548 12
True: entering 1 559

Usage

import keras
import numpy as np
from huggingface_hub import hf_hub_download

model_path = hf_hub_download(
    repo_id="sdrfsh/alexnet-door-entry-classifier",
    filename="alexnet.keras",
)
model = keras.models.load_model(model_path)

img = keras.utils.load_img("image.jpg", target_size=(227, 227))
x = np.expand_dims(keras.utils.img_to_array(img), axis=0)

probs = model.predict(x)
label = int(probs.argmax(axis=1)[0])
class_names = {0: "passing by", 1: "entering"}
print(f"Prediction: {class_names[label]}  (confidence {probs.max():.2%})")

Training

  • Optimizer: Adam (initial LR 1e-4, reduced on plateau)
  • Loss: sparse categorical cross-entropy
  • Regularization: dropout 0.5 on dense layers, batch normalization, early stopping on validation loss (best weights restored)
  • Data split: 72% train / 18% validation / 10% test (stratified)

Full training code and the wider project (real-time inference pipeline, data preparation) are available in the GitHub repository: ๐Ÿ‘‰ https://github.com/sdrfsh/realtime-activity-and-intention-recognition

Fine-tuning for other activity-recognition tasks

This model can be used as a starting point and fine-tuned on other activity-recognition datasets (e.g., different actions, intentions, or interaction classes). The convolutional layers have learned general visual features from person/door scenes, so for a related task you can reuse them and retrain only the classification head, then optionally unfreeze the full network:

import keras
from keras import layers
from huggingface_hub import hf_hub_download

path = hf_hub_download("sdrfsh/alexnet-door-entry-classifier", "alexnet.keras")
base = keras.models.load_model(path)

NUM_CLASSES = 4  # number of classes in your dataset

# Reuse everything except the final classification layer
backbone = keras.Model(base.inputs, base.layers[-2].output)
backbone.trainable = False  # stage 1: freeze the pretrained layers

model = keras.Sequential([
    backbone,
    layers.Dense(NUM_CLASSES, activation="softmax"),
])
model.compile(optimizer=keras.optimizers.Adam(1e-3),
              loss="sparse_categorical_crossentropy", metrics=["accuracy"])
model.fit(train_ds, validation_data=val_ds, epochs=10)

# Stage 2 (optional): unfreeze and fine-tune the whole network at a low LR
backbone.trainable = True
model.compile(optimizer=keras.optimizers.Adam(1e-5),
              loss="sparse_categorical_crossentropy", metrics=["accuracy"])
model.fit(train_ds, validation_data=val_ds, epochs=10)

Input images should be 227ร—227ร—3 with raw 0-255 pixel values, as with the base model.

Limitations

  • Trained specifically to distinguish a person entering a door from a person passing by it; performance on other scenes, camera angles, or doors unlike those in the training data is untested.
  • Input images must be resizable to 227ร—227 without destroying the relevant content.

Citation

If you use this model, please link back to the GitHub repository.

Downloads last month
31
Inference Providers NEW
This model isn't deployed by any Inference Provider. ๐Ÿ™‹ Ask for provider support