mirror of
https://github.com/DeeJanuz/frametop.git
synced 2026-10-20 04:07:07 +02:00
Catalogs list each kind's versions with notes, cost and benchmark numbers: hands/models.json (Latest = v13b-p1, stock) and gaze/tracker/models.json (classic, SteamVR, eyes-v0 as Testing). Installs read their branch's catalog from GitHub, so a new version reaches them with a push; offline, the copy in the install is used. models/catalog.py (+ ft-models CLI) validates catalogs strictly, downloads versions from the kind's fixed Hugging Face repo pinned to a commit, and keeps only files matching their sha256. HANDS_MODEL and EYES_MODEL pick latest (follows new versions), a version by name, or a builtin. ft-hands and ft-eyes read them at start; Input Settings restarts hand tracking and ft-gazed restarts ft-eyes when the setting changes. The services fetch what the setting needs at start (HANDS_MODELS_UPDATE / EYES_MODELS_UPDATE = 0 turn that off). Input Settings: "Hand model" on the Hands page, "Eye tracker" on the Gaze page (replaces the Own/SteamVR switch), tagged Recommended / Testing / Older / Built in, with a benchmark table against the model in use. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Model versions
Users pick which hand and eye models Frametop runs on Frametop Input Settings' Hands and Gaze pages.
Each page lists the versions in a catalog, with notes on what to expect and benchmark numbers set
against the one in use. catalog.py reads the catalogs, downloads versions and says what a setting
runs; ft-models is the same from a terminal.
| Kind | Catalog | Setting (frametop.conf) | Downloads go to | Files from |
|---|---|---|---|---|
| hands | hands/models.json |
HANDS_MODEL: latest, stock, a version |
hands/models/versions/NAME |
DeeJanuz/frametop-hands-models |
| eyes | gaze/tracker/models.json |
EYES_MODEL: classic, latest, a version; GAZE_TRACKER=steam for SteamVR's |
gaze/tracker/models/NAME |
DeeJanuz/frametop-eyes-models |
- Latest follows the catalog's
latest, so it moves when a new version ships. A version picked by name stays put. For hands, latest ishands/models/student, whichhands/models.shkeeps onhands/models.pin(older installs only read that pin). The catalog's latest must be the same files:models/test/test_catalog.pychecks it. - Where the list comes from. Installs read their branch's catalog from GitHub (
mainfor a stable release,experimentalfor an experimental one or a clone on that branch), so a push reaches them without a release: Input Settings' "Check for new versions", and the services when they start (ft-models auto, at most every 15 minutes;HANDS_MODELS_UPDATE=0/EYES_MODELS_UPDATE=0turn that off). Offline, or when GitHub's copy isn't valid, the copy in the install is used. - Trust. A catalog only names files. They come from the kind's Hugging Face repo, which is
fixed in
catalog.pyand never taken from a catalog. Each download is pinned to a commit and must match its sha256, or it isn't kept. Catalog checks are strict: one bad entry and the whole catalog is ignored. The texts are shown as plain text. - Who applies it. ft-hands reads
HANDS_MODELat start, and Input Settings restarts hand tracking after a change. ft-eyes readsEYES_MODELat start, and the gaze service restarts it when the setting changes. Each eye net keeps its own calibration (net-NAME/), so a switch asks for one calibration.
Shipping a version
- Upload the version's folder to the kind's Hugging Face repo, next to the earlier ones (hands:
frame-hands'
model-repo/, eyes: frame-eyes'model-repo/), with a NOTICE: how it was trained, what it was tested on, the numbers. - Print its files' hashes from that staging folder:
models/ft-models hashes eyes ~/Desktop/Projects/frame-eyes/model-repo eyes-v1 - Add an entry to the catalog: name, title, kind (
custom), status (testinguntil it's the one to recommend), date, summary, notes (what to expect against the current latest and the baseline), cost,bench(the catalog's metrics, measured the same way as the other entries),format,rev(the Hugging Face commit) andfiles. Set the old latest's status toolderwhen a new one is recommended. - To make it latest, set
latest. For hands, also re-pinhands/models.pinwith frame-hands'model-repo/pin.py VERSION REV CHECKOUT. - Run
python3 models/test/test_catalog.pyandmodels/ft-models fetch KIND NAME(a real download, checked), then push to experimental. Stable installs see it once it's on main.
Raise format (and SPECS[kind]["format"] in catalog.py) when a version needs a newer runtime.
Older installs then list the version as needing a newer Frametop instead of running it.