animap-gpu / space /FIXTURES.md
bluman1's picture
Publish services/inference
4b98524 verified
|
Raw
History Blame Contribute Delete
2.36 kB
# The two captures the Space serves
`LocalMediaStore` resolves a media id to `<root>/<media_id><suffix>`, so a
fixture's filename *is* its media id. Both ids are `uuid5` of the slug under the
Space's own namespace, which means they are reproducible from the manifest and
stable across rebuilds — a caller can hard-code one and it will still be there
next month.
NAMESPACE = uuid5(NAMESPACE_URL,
"https://huggingface.co/spaces/bluman1/animap-inference/fixtures")
media_id = uuid5(NAMESPACE, slug)
**Neither image is stored in the Animap repository**, for the reason
`.gitignore` gives for the other 59: the Commons frames are not Animap's work to
redistribute in git, and `evaluation/fetch.py` rebuilds them from their
manifest. `space/publish.py` holds two slugs, resolves each to a file in
`evaluation/images/`, checks its sha256 against `evaluation/dataset.json`, and
writes it into the Space under the media id above. A frame that has drifted, or
that carries a licence with an obligation attached, stops the publish.
| Media id | Slug | Species | Human count | Licence | Attribution |
|---|---|---|---|---|---|
| `aa5e8481-8be6-509d-b1fa-f1a178c7cda0` | `cattle_ng_gombe_farm` | cattle | 7 | CC0 | Abdsomod, [Commons](https://commons.wikimedia.org/wiki/File%3ACows_farming_in_gombe_state_04.jpg) |
| `89f41a99-e419-5777-8009-f8a7ca8c4cfb` | `poultry_chickens_in_line` | poultry | 5 | Public domain | GaylaLin, [Commons](https://commons.wikimedia.org/wiki/File%3AChickens-in-line1.jpg) |
**Public-domain terms on both, and that is the selection rule rather than a
coincidence.** The Space is public, so shipping a frame is redistributing it;
CC0 and public domain are the two rows in the evaluation manifest that carry no
attribution obligation to discharge on a surface nobody has built yet. Twenty
other cattle frames score better as demonstrations and every one of them is
CC BY-SA.
The counts are one non-expert annotator's, checked by a tiled second pass — the
same ground truth the model cards call the weakest part of their measurement.
They are here so a reader can tell a plausible answer from a wrong one, not as a
target the service is graded against.
**These are demonstration captures, not test data.** Nothing asserts against
them; `evaluation/run.py` is what measures the detector, over all 61 frames.