I3D Baseline for Isolated Sign Language Recognition (i3d-48f-50fps-224px)
This repository contains the weights for the I3D baseline model evaluated under the Signer-Independent (SI) split on the LSFB-isol benchmark, as presented in the paper:
Sign Language Recognition with Video Foundation Models: V-JEPA Transfer and Adaptation
Giovanne Mariano and Helio Pedrini (Institute of Computing, University of Campinas - UNICAMP)
Paper / Repository: GitHub Code & Artifacts
Model Description
- Backbone: Inflated 3D ConvNet (I3D) based on an Inception-v1 backbone.
- Initialization: Pre-trained on ImageNet, Kinetics-600, and Charades.
- Task: Isolated Sign Language Recognition (ISLR) on French Belgian Sign Language (LSFB-isol) across 700 classes.
- Resolution: 224x224 px spatial crop.
- Temporal Configuration: 48 context frames sampled at the native 50 FPS.
- Aggregation: Per-frame logits interpolated back to original temporal length and max-pooled over time. The interpolation is kept for exact reproduction of the original LSFB-isol release paper.
Performance Metrics (700-Class LSFB-isol)
Evaluated under the Signer-Independent (SI) 5-fold split with held-out signers:
| Metric | Value |
|---|---|
| Micro Top-1 Accuracy | 51.77% |
| Macro Top-1 Accuracy | 37.35% |
| Macro Top-5 Accuracy | 64.06% |
| Expected Calibration Error (ECE) | 31.89% |
Hyperparameters & Training Setup
The hyperparameters were selected via Optuna on a reduced 50-class subset:
global:
seed: 73
model_name: i3d
execution:
batch_size: 32
accumulate_grad_batches: 1
num_workers: 4
dataset:
data_root: /path/to/lsfb-isol
train_split: si_train
val_split: si_val
num_classes: 700
pipeline:
max_frames: 80
num_frames: 48
crop_size: 224
target_fps: 50.0
model:
pretrained: imagenet_kinetics_charades
dropout: 0.23
optimizer:
name: sgd
lr: 0.032
momentum: 0.97
weight_decay: 3.3e-06
training:
max_epochs: 50
warmup_epochs: 5
scheduler: cosine
Usage Example
To load the model weights in PyTorch:
import torch
from huggingface_hub import hf_hub_download
# Download weights from Hugging Face Hub
repo_id = "giolucasd/i3d-48f-50fps-224px"
weights_path = hf_hub_download(repo_id=repo_id, filename="best_weights.pt")
# Load state dict
state_dict = torch.load(weights_path, map_location="cpu", weights_only=True)
Citation
@inproceedings{mariano2026sign,
title={Sign Language Recognition with Video Foundation Models: V-JEPA Transfer and Adaptation},
author={Giovanne Mariano and H{\'e}lio Pedrini},
booktitle={Workshop de Vis{\~a}o Computacional (WVC)},
year={2026}
}