FR-CULL-8a — Per-face eye state and head pose, as evidence #56

Open
opened 2026-09-19 10:20:52 +00:00 by dtourolle · 1 comment
Owner

For every detected face, record one open-probability per eye and a yaw/pitch/roll, as derived data under FR-CULL-12. Added to the spec 2026-09-19 (7db999c); no code exists.

Why

"Everyone's eyes open" and "facing the camera" are the two questions a group or event cull asks of every frame, and both are facts the detector has already half paid for: eye crops fall out of the five landmarks, and head pose is geometry against a generic template with no model at all. Gaze is deferred (§7) because no weights with a clean data chain exist; pose is the proxy.

Deliverable

  • Eye state from OCEC (MIT code and weights, ODC-By/Apache data — the first clean chain found; D13), a 24×40 crop per eye cut from the landmarks, run in the same indexing pass as detection. Its published F1 is on its own crops; ours are measured on this library before being believed.
  • Head pose solved from the five landmarks against a generic template; "facing the camera" is a stated band.
  • Both stored in the catalog only, recomputed by re-indexing, never in a sidecar.
  • Both terms in the selector language, composable with a person and every other term (FR-CULL-11).
  • Both feed FR-CULL-13's evidence; neither may set a rating or a flag.

Acceptance

  • On ≥500 labelled faces from the reference library, eye state within a stated tolerance of published F1, reported separately for glasses, profile, and faces under 60 px
  • Facing-the-camera agrees with a hand-labelled split at a stated rate
  • Indexing stays inside FR-CULL-8's acceptance (grid never below NFR-P9)
  • TRACES: FR-CULL-8a on the classifier, the pose solver and the schema columns
**For every detected face, record one open-probability per eye and a yaw/pitch/roll, as derived data under FR-CULL-12.** Added to the spec 2026-09-19 (7db999c); no code exists. ## Why "Everyone's eyes open" and "facing the camera" are the two questions a group or event cull asks of every frame, and both are facts the detector has already half paid for: eye crops fall out of the five landmarks, and head pose is geometry against a generic template with no model at all. Gaze is deferred (§7) because no weights with a clean data chain exist; pose is the proxy. ## Deliverable - Eye state from OCEC (MIT code and weights, ODC-By/Apache data — the first clean chain found; D13), a 24×40 crop per eye cut from the landmarks, run in the same indexing pass as detection. Its published F1 is on its own crops; ours are measured on this library before being believed. - Head pose solved from the five landmarks against a generic template; "facing the camera" is a stated band. - Both stored in the catalog only, recomputed by re-indexing, never in a sidecar. - Both terms in the selector language, composable with a person and every other term (FR-CULL-11). - Both feed FR-CULL-13's evidence; neither may set a rating or a flag. ## Acceptance - [ ] On ≥500 labelled faces from the reference library, eye state within a stated tolerance of published F1, reported separately for glasses, profile, and faces under 60 px - [ ] Facing-the-camera agrees with a hand-labelled split at a stated rate - [ ] Indexing stays inside FR-CULL-8's acceptance (grid never below NFR-P9) - [ ] `TRACES: FR-CULL-8a` on the classifier, the pose solver and the schema columns
dtourolle added the catalogunmet-requirementsize:Mculling labels 2026-09-19 10:20:52 +00:00
Author
Owner

Progress check (2026-09-24).

  • eye state end to end: OCEC classifier plus sunglasses (core/dr-face/src/classify.rs, eyes.rs), seven numbers per face in catalog columns and shards (6b51726, b908d86, 54b543f, facb44c), models shipped (6aae4c3), a selector term for "eyes open" (83f4253), a covering index (d706c12)
  • head pose: nothing outside dr-pano, no "facing the camera" term
  • the measurement on ≥500 labelled faces split by glasses / profile / <60 px — faces.md §17.4 has only a 25–60 face proxy sample, and M11–M13 are still to measure
  • indexing throughput against FR-CULL-8's acceptance: none found
Progress check (2026-09-24). - [x] eye state end to end: OCEC classifier plus sunglasses (`core/dr-face/src/classify.rs`, `eyes.rs`), seven numbers per face in catalog columns and shards (6b51726, b908d86, 54b543f, facb44c), models shipped (6aae4c3), a selector term for "eyes open" (83f4253), a covering index (d706c12) - [ ] head pose: nothing outside dr-pano, no "facing the camera" term - [ ] the measurement on ≥500 labelled faces split by glasses / profile / <60 px — faces.md §17.4 has only a 25–60 face proxy sample, and M11–M13 are still to measure - [ ] indexing throughput against FR-CULL-8's acceptance: none found
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Reference: dtourolle/DarkRoom#56