referee-hands-s / README.md
itspublu's picture
Qualify development-sheet benchmark
b8cb229 verified
|
Raw
History Blame Contribute Delete
2.76 kB
---
license: apache-2.0
library_name: pytorch
pipeline_tag: image-classification
tags:
- robotics
- capture-qa
- hand-detection
- edge
datasets:
- lerobot/droid_1.0.1
- imageomics/KABR
model-index:
- name: referee-hands-s
results:
- task:
type: image-classification
name: Hand/gripper visibility (clip-level)
dataset:
type: referee-lab/hands-visible
name: referee-lab/hands-visible
split: full
metrics:
- type: accuracy
name: Provisional development-sheet clip accuracy
value: 0.9778
---
# referee-hands-s
A 1.5M-parameter MobileNetV3-small classifier for hand/gripper visibility in
robot-training footage. 96px inputs, sized for microcontroller-class deployment.
The published 97.8% result is from a 45-clip, in-domain development sheet that
was repeatedly consulted during development and has not yet passed the declared
independent two-grader gate. It is reproducible development evidence, not a
frozen external benchmark.
## Benchmark
97.8% clip accuracy on
[referee-lab/hands-visible](https://github.com/publu/referee-lab) (45-clip
provisional development sheet, robot + wildlife domains) — matching gemma3:27b
on that sheet at 1/18,000th the parameters.
| Model | Params | Accuracy |
|---|---|---|
| gemma3:27b | 27B | 97.8% |
| **referee-hands-s** | **1.5M** | **97.8%** |
| referee-hands-s, cross-video split | 1.5M | 95.6% |
| qwen2.5vl:32b | 32B | 74.4% |
| *constant-answer floor* | — | *68.9%* |
The cross-video row keeps every training frame at least 60 seconds away from
any test clip on its source stream. Under that separation the model scores
100% on real footage (41/41); its two misses are synthetic drawn-hand control
clips outside the training distribution.
## Intended use and scope
Version 1 targets fixed-camera and wrist-camera **robot workspace footage**
the domain it was trained on (DROID, ALOHA-sim, KABR negatives). Human
egocentric and general webcam scenes are outside the v1 training distribution;
a mixed-domain v2 is in development. Use for capture-pipeline gating in the
supported domain.
## Usage
```python
import torch
from torchvision import models, transforms
from safetensors.torch import load_file
net = models.mobilenet_v3_small()
net.classifier[3] = torch.nn.Linear(net.classifier[3].in_features, 1)
net.load_state_dict(load_file("model.safetensors"))
net.eval()
tf = transforms.Compose([transforms.Resize((96, 96)), transforms.ToTensor()])
p = torch.sigmoid(net(tf(img).unsqueeze(0)).squeeze()) # P(hand/gripper visible)
```
Clip-level verdict: sample ~12 frames, yes if `max(p) > 0.5`.
Training: distilled from gemma3:27b pseudo-labels on CC BY / CC0 / MIT media.
Benchmark, gates, and tooling: https://github.com/publu/referee-lab