GymNeXt β Gym Equipment Classifier (ONNX)
ConvNeXt-Tiny fine-tuned on 32 classes of gym equipment. Exported to ONNX with external data for browser inference via onnxruntime-web.
Model Details
| Property | Value |
|---|---|
| Architecture | ConvNeXt-Tiny (torchvision) |
| Task | Image Classification |
| Classes | 32 |
| Input | RGB 224Γ224 (ImageNet normalization) |
| Test Accuracy | 87.2% |
| Format | ONNX (FP32, external data) |
| Total Size | ~108 MB |
Classes (alphabetical, matching index order)
0: ab_crunch_machine 16: lateral_raise
1: arm_curl 17: leg_curl
2: back_extension 18: leg_extension
3: barbell 19: leg_press
4: bench 20: leg_raise_tower
5: chest_fly 21: pulley_machine
6: chest_press 22: recumbent_bike
7: chinning_dipping 23: seated_dip
8: dumbbell 24: seated_row
9: elliptical 25: shoulder_press
10: functional_trainer 26: smith_machine
11: hip_abduction 27: squat_rack
12: home_machine 28: stability_ball
13: incline_bench 29: stationary_bike
14: kettlebell 30: torso_rotation
15: lat_pulldown 31: treadmill
Preprocessing
Matches torchvision validation pipeline:
- Resize short edge to 224 (bicubic)
- Center crop to 224Γ224
- Normalize:
mean=[0.485, 0.456, 0.406],std=[0.229, 0.224, 0.225]
Files
gym_convnext_ft.onnxβ model graph (~707 KB)gym_convnext_ft.onnx.dataβ weights (~107 MB)
Both files are required. When using onnxruntime-web, pass the data file via externalData option:
const session = await ort.InferenceSession.create(modelUrl, {
executionProviders: ['webgpu', 'wasm'],
externalData: [{ path: 'gym_convnext_ft.onnx.data', data: dataUrl }],
});
Training
Fine-tuned from ImageNet-pretrained ConvNeXt-Tiny using a merged dataset of gym equipment images (32 classes). Training used AdamW optimizer with cosine LR schedule, EMA, and mixed-precision (AMP).