| --- |
| title: Forager's Field Station |
| emoji: π |
| colorFrom: yellow |
| colorTo: green |
| sdk: gradio |
| sdk_version: 6.16.0 |
| python_version: "3.11" |
| app_file: app.py |
| pinned: false |
| hf_oauth: true |
| license: apache-2.0 |
| short_description: Pocket-sized intelligence for identifying edible wild foods |
| --- |
| |
| # Forager's Field Station |
|
|
| Photograph a wild plant or mushroom and the model identifies it β **or refuses |
| when it isn't sure.** A domain router plus three `tf_efficientnet_lite2` |
| classifiers (~9M params each), ~0.04B parameters total. The same stack runs |
| offline on a Hailo 8L NPU in a handheld field device; this Space is its CPU twin. |
|
|
| Built for the **Build Small Hackathon** β Backyard AI track. The honest fit: |
| a forager in the woods has no signal, so a small on-device model isn't a |
| compromise, it's the only thing that works. |
|
|
| ## How it works |
|
|
| ``` |
| photo ββΊ domain router (berry / mushroom / plant / other) |
| β conf < 0.74 or "other" ββΊ ABSTAIN |
| βΌ |
| ONE expert owns each domain (no cross-expert voting): |
| berry ββΊ berry_expert mushroom ββΊ highvalue_expert |
| plant ββΊ medicinals_expert |
| β below confidence gate ββΊ ABSTAIN |
| βΌ |
| SAFE / CAUTION / DEADLY + scientific name, lookalike, key difference |
| ``` |
|
|
| Single-expert routing is a safety choice: an off-domain expert never gets to |
| misclassify an input it doesn't own (e.g. the mushroom expert never sees a |
| plant, so it can't call a poison hemlock "ramps"). The deadly plants live in the |
| medicinals expert, which scored 0% toxic-as-edible on held-out validation. |
|
|
| The system is built to **refuse by default.** Across real-world test photos it |
| abstained rather than guess on the cases it couldn't handle, and never labelled |
| a deadly specimen as edible. |
|
|
| ## Models |
|
|
| | Model | Domain | Classes | |
| |---|---|---| |
| | `domain_router_v2` | berry / mushroom / plant / other | 4 | |
| | `berry_expert` | wild berries + toxic lookalikes | 11 | |
| | `highvalue_expert` | chanterelles, morels, lion's mane, ginseng⦠| 11 | |
| | `medicinals_expert` | wild medicinal plants + toxic lookalikes | 21 | |
|
|
| Trained on iNaturalist research-grade observations. Apache-2.0. |
|
|
| π¦ **Weights published as fine-tuned models:** [HomesteaderLabs/forager-field-station-models](https://huggingface.co/HomesteaderLabs/forager-field-station-models) β `.pt` + `.onnx` for the router and all three experts, fine-tuned from `timm/tf_efficientnet_lite2.in1k`. |
|
|
| ## Field notes |
|
|
| The build story β edge constraints, the single-expert safety pivot, the |
| safety-vs-usefulness curve, and a one-line bug that inverted our OOD detector β is in |
| [FIELD_NOTES.md](FIELD_NOTES.md). |
|
|
| ## Safety notice |
|
|
| **Identification aid only β never an authority.** Wild plant and mushroom |
| identification carries fatal risk. No output should be acted on β including any |
| consumption decision β without independent verification by a qualified expert. |
| Amatoxin poisoning (Amanita, Galerina, Conocybe) is lethal with no reliable |
| field antidote. The maintainers accept no liability for decisions made from |
| model output. |
|
|
| β [HomesteaderLabs](https://homesteaderlabs.com) |
|
|