ChickenNet Research 0.1.0 — Perch 2
A research-only three-head chicken-vocalization classifier fitted on frozen 1,536-dimensional Google Perch 2 embeddings.
Status: research candidate, not deployed.
Artifact SHA-256: a5b83b648b19d2837fe775161cf35fce22f2a717e630c08253f2b9c6d2fe58d0
Dataset hash: 974df55df9a3262944e32563e1111cf6f32cf52a128548a39aab5d69852bc3b0
Outputs
The fitted heads are independent. They are not a softmax and do not sum to one. The
serialized inference contract gates both subtype heads on
chicken_vocalization_present, so crow or other-vocalization labels are suppressed
when the broad head does not pass.
| Head | Locked threshold |
|---|---|
chicken_vocalization_present |
0.21 |
chicken_crow |
0.20 |
chicken_other_vocalization |
0.34 |
A window may activate the broad presence head plus one subtype head. Low scores across every head should be treated as abstention/background.
Feature contract
- Backbone: Google Perch 2 CPU release
- Input to Perch: five seconds, 32 kHz, mono, float32
- Input to this artifact: one 1,536-dimensional Perch embedding
- Verified Perch model-tree SHA-256:
3fb2d54b3e34534f1130052b25737e54bbb5ebfd340ec040d4510772b64c81ff - The Perch weights are not included in this repository.
The official Perch code repository is Apache-2.0. The Kaggle model-weight license was not exposed by the metadata available during this build, so this card does not claim that the weights themselves are Apache-2.0.
Training data
| Source | Windows | Role | Rights |
|---|---|---|---|
| Ross-308 | 317 | chicken vocalization contexts and animal-free ambient recordings | CC BY 4.0 |
| ESC-50 | 2,000 | rooster, hen, and broad environmental negatives | CC BY-NC 3.0 / noncommercial research lane |
Total: 2,317 five-second windows.
Ross-308 was split by individual bird. Its health and lighting fields were retained only as provenance, never used as targets. Clean annotations were merged into non-overlapping five-second contexts from the parent recordings. Noisy/clipped/contact-artifact annotations were excluded and logged.
ESC-50 was split by original Freesound src_file, not its published fold alone. The audit found original source IDs crossing published folds; grouping by src_file prevents that leakage.
No source audio is redistributed here.
Evaluation
Internal grouped test
| Head | Positive support | AP | F1 |
|---|---|---|---|
| chicken vocalization | 62 | 1.000 | 1.000 |
| crow | 4 | 1.000 | 1.000 |
| other vocalization | 58 | 1.000 | 1.000 |
These values are an internal fit check, not field-readiness evidence. Crow support is especially small, and source-domain shortcuts can remain despite grouped splits.
Locked external iNaturalist challenge
The thresholds were frozen before this challenge. It contains 42 permissively licensed Domestic Chicken sounds from 30 observers: 31 CC BY and 11 CC0.
- Broad-head passes: 33/42
- Broad-head weak-positive hit rate: 78.6%
- Median broad-head score: 0.858
This is a taxon-level weak-positive challenge. A centered crop may not contain an audible chicken call. It has no negative examples, so precision and false-positive rate cannot be measured. Crow versus other-call metrics are not reported because call type is not annotated.
Private stationary-microphone confound audit
A private reviewed frog archive supplied 1,308 local fixed-microphone windows. Chicken absence was not separately reviewed, so the following is an upper bound on candidate false positives, not a confirmed false-positive rate:
- broad-head candidate positives: 10/1,308 windows across 8/436 files;
- crow-head candidate positives: 9/1,308 windows across 7/436 files;
- other-vocalization candidate positives: 0/1,308 windows.
No private paths or audio are included in the public artifact.
Use
import joblib
from insectnet.candidate import active_labels, predict_candidate
package = joblib.load("chickennet-research-0.1.0-perch2.joblib")
embedding = ... # shape (N, 1536), produced by the verified Perch 2 feature contract
scores = predict_candidate(package, embedding)
detections = [active_labels(package, row) for row in scores]
Do not feed waveforms directly into this artifact.
Limitations
- Not calibrated for local field deployment.
- No independently reviewed chicken-negative field set yet.
- Crow has only four positive test examples.
- Domestic Chicken taxonomy does not provide call-type labels.
- Ross-308 is a small controlled broiler corpus.
- ESC-50 introduces a noncommercial restriction and coarse source domains.
- The private local candidate positives still require listening review.
- Thresholds should not be changed on the published external challenge.
Sources
- Ross-308: DÃaz de Cerio et al., DOI
10.34810/DATA3437 - ESC-50: Piczak, DOI
10.1145/2733373.2806390 - Perch: Ghani et al., Global birdsong embeddings enable superior transfer learning for bioacoustic classification, Scientific Reports (2023)
Source summaries, retained-private manifest hashes, run metrics, and the public challenge report are included alongside the artifact. Exact row-level training manifests are not published; the public bundle supports artifact/summary consistency checks but cannot by itself reproduce every split assignment.