ResNet-18 American Sign Language (ASL) Classifier
This repository contains pre-trained PyTorch weights for a ResNet-18 model fine-tuned for American Sign Language (ASL) alphabetic hand sign classification (static letters A through Y, excluding motion-based letters J and Z).
- Overall Test Accuracy: 98.48% on 7,172 test images.
- Framework: PyTorch
- Base Architecture: ResNet-18 (ImageNet pre-trained)
- Transfer Learning Strategy: Frozen
layer1-layer3, fine-tunedlayer4+ custom head:Linear(512, 256)->BatchNorm1d(256)->ReLU->Dropout(0.3)->Linear(256, 24)
Model Usage
import torch
import torchvision.models as models
import torch.nn as nn
from PIL import Image
from torchvision import transforms
from huggingface_hub import hf_hub_download
# 1. Define Model Architecture
model = models.resnet18()
model.fc = nn.Sequential(
nn.Linear(512, 256),
nn.BatchNorm1d(256),
nn.ReLU(),
nn.Dropout(0.3),
nn.Linear(256, 24)
)
# 2. Download and Load Model Weights
weights_path = hf_hub_download(repo_id="Vecrist/resnet18-handsign-classifier", filename="ResNet-18_9848AccModel_weights.pth")
model.load_state_dict(torch.load(weights_path, map_location="cpu"))
model.eval()
# 3. Preprocess Image
transform = transforms.Compose([
transforms.Resize((224, 224)),
transforms.ToTensor(),
transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225])
])
# 4. Predict
# img = Image.open("path_to_handsign_image.jpg").convert("RGB")
# outputs = model(transform(img).unsqueeze(0))
# predicted_class_idx = outputs.argmax(dim=1).item()
Dataset & Training Details
- Dataset: Kaggle Hand Sign Images dataset (static alphabet signs).
- Optimizer: Adam with differential learning rates (
0.0001forlayer4,0.001for FC head). - Batch Size: 64
- Loss Function:
CrossEntropyLoss - Data Augmentations:
RandomResizedCrop(224),RandomHorizontalFlip, ImageNet Normalization.