|
Download README.md from tphakala/Perch-v2-Models: direct link, hf CLI and curl.
- Browser
- Download file 8.83 kB
-
https://huggingface.co/tphakala/Perch-v2-Models/resolve/main/README.md
- Command line
-
hf download hf://tphakala/Perch-v2-Models/README.md
-
curl -L -o README.md https://huggingface.co/tphakala/Perch-v2-Models/resolve/main/README.md
8.83 kB
| pretty_name: Perch v2 Models (full + regional catalog) | |
| license: apache-2.0 | |
| base_model: | |
| - cgeorgiaw/Perch | |
| tags: | |
| - bioacoustics | |
| - birdnet | |
| - perch | |
| - bird | |
| - vocalization | |
| - audio-classification | |
| - onnx | |
| library_name: onnx | |
| # Perch v2 Models (full + regional catalog) | |
| Google's Perch v2 bioacoustic classifier in three deployment variants, plus a catalog of **region-specific slices** that are smaller and faster while staying numerically identical (bit-exact) to the full model on the species they keep. | |
| ## Origin and attribution | |
| - **Perch v2** by **Google Research** ([bird-vocalization-classifier](https://www.kaggle.com/models/google/bird-vocalization-classifier/)): EfficientNet-B3, ~12M embedding + ~91M classification params, ~15,000 species. | |
| - ONNX conversion and the DFT-to-MatMul (`no_dft`) optimization by [justinchuby](https://huggingface.co/justinchuby/Perch-onnx). | |
| - Labels from [cgeorgiaw/Perch](https://huggingface.co/cgeorgiaw/Perch) (iNaturalist taxonomy). | |
| - Regional slicing uses the **BirdNET Geomodel v3.0** range filter (birdnet-team/geomodel) to pick each region's species. | |
| ## Variants and hardware | |
| | filename token | precision | best for | | |
| |---|---|---| | |
| | `_fp32` | FP32, with DFT | GPU (CUDA/TensorRT), Intel CPU | | |
| | `_no_dft_fp32` | FP32, DFT removed | OpenVINO (RPi5 fast path); also runs on ORT/CUDA | | |
| | `_int8_arm` | partial INT8 (MatMul-only) | ARM CPU / Raspberry Pi, low RAM | | |
| ## Full model | |
| | file | MB | | |
| |---|---:| | |
| | `full/perch_v2_fp32.onnx` | 409 | | |
| | `full/perch_v2_no_dft_fp32.onnx` | 413 | | |
| | `full/perch_v2_int8_arm.onnx` | 131 | | |
| | `full/perch_v2_labels.txt` | 14,795 classes | | |
| ## Why regional models | |
| These slices are built for **real-time detection on resource-constrained devices**, phones, Raspberry Pi and other single-board computers, where running the full 14,795-class Perch v2 continuously is costly in both RAM and CPU. Most of that cost goes to recognising species that cannot occur at the listener's location. Restricting the model to a region's species shrinks the memory footprint and the per-inference compute (the classifier head is ~88% of the model), so an always-on detector keeps up with the live audio stream and leaves headroom for the rest of the application, on hardware where the full model would struggle. Each tile stays **bit-exact** to the full model on the species it keeps; the only change is that out-of-region species are not emitted, which at a fixed monitoring location is exactly what you want. | |
| ## Regional catalog | |
| Each tile: BirdNET Geomodel v3.0 range filter (top ~800 species for temperate regions, ~1200 for bird-rich tropical/subtropical ones, up to ~3500 for the hyper-diverse Neotropics) + 198 FSD50K sound events + a 27-species cosmopolitan core. Ships `_no_dft_fp32` (OpenVINO/GPU) and `_int8_arm` (ARM) + labels + indices. All bit-exact vs the full model on the species they keep. | |
| Each tile folder also has `coverage.png` (a map of the region it covers) and `metadata.json` (species count, covered countries, and the continental `group` it belongs to). | |
| Tiles are organised by continent below. `regional/groups.json` lists the same grouping (ordered continents -> tiles) in one file, and each tile's `metadata.json` carries its `group` / `group_display` / `group_order`, so an application can rebuild these sections without scraping this table. | |
| ### Europe | |
| | region | coverage | classes | fp32 MB | int8-arm MB | | |
| |---|---|---:|---:|---:| | |
| | `nordic` | <img src="regional/nordic/coverage.png" width="210"> | 638 | 65.0 | 44.5 | | |
| | `british-isles` | <img src="regional/british-isles/coverage.png" width="210"> | 776 | 68.4 | 45.4 | | |
| | `central-europe` | <img src="regional/central-europe/coverage.png" width="210"> | 873 | 70.8 | 46.0 | | |
| | `baltics` | <img src="regional/baltics/coverage.png" width="210"> | 655 | 65.4 | 44.6 | | |
| | `iberia` | <img src="regional/iberia/coverage.png" width="210"> | 856 | 70.4 | 45.9 | | |
| | `southern-europe` | <img src="regional/southern-europe/coverage.png" width="210"> | 839 | 70.0 | 45.8 | | |
| | `eastern-europe` | <img src="regional/eastern-europe/coverage.png" width="210"> | 739 | 67.5 | 45.2 | | |
| | `western-palearctic` | <img src="regional/western-palearctic/coverage.png" width="210"> | 1599 | 88.7 | 50.5 | | |
| | `iceland` | <img src="regional/iceland/coverage.png" width="210"> | 591 | 63.9 | 44.3 | | |
| | `svalbard` | <img src="regional/svalbard/coverage.png" width="210"> | 480 | 61.1 | 43.6 | | |
| | `canary-islands` | <img src="regional/canary-islands/coverage.png" width="210"> | 598 | 64.0 | 44.3 | | |
| | `madeira` | <img src="regional/madeira/coverage.png" width="210"> | 459 | 60.6 | 43.4 | | |
| | `azores` | <img src="regional/azores/coverage.png" width="210"> | 426 | 59.8 | 43.2 | | |
| ### Asia | |
| | region | coverage | classes | fp32 MB | int8-arm MB | | |
| |---|---|---:|---:|---:| | |
| | `south-asia-peninsular` | <img src="regional/south-asia-peninsular/coverage.png" width="210"> | 879 | 70.9 | 46.0 | | |
| | `indo-gangetic` | <img src="regional/indo-gangetic/coverage.png" width="210"> | 1406 | 83.9 | 49.3 | | |
| | `himalaya` | <img src="regional/himalaya/coverage.png" width="210"> | 1407 | 83.9 | 49.3 | | |
| | `japan` | <img src="regional/japan/coverage.png" width="210"> | 799 | 69.0 | 45.5 | | |
| | `china-northeast` | <img src="regional/china-northeast/coverage.png" width="210"> | 877 | 70.9 | 46.0 | | |
| | `china-north-central` | <img src="regional/china-north-central/coverage.png" width="210"> | 976 | 73.3 | 46.6 | | |
| | `china-southeast` | <img src="regional/china-southeast/coverage.png" width="210"> | 1373 | 83.1 | 49.1 | | |
| | `china-southwest` | <img src="regional/china-southwest/coverage.png" width="210"> | 1409 | 84.0 | 49.3 | | |
| | `tibet` | <img src="regional/tibet/coverage.png" width="210"> | 1407 | 83.9 | 49.3 | | |
| ### North America | |
| | region | coverage | classes | fp32 MB | int8-arm MB | | |
| |---|---|---:|---:|---:| | |
| | `north-america-east` | <img src="regional/north-america-east/coverage.png" width="210"> | 999 | 73.9 | 46.8 | | |
| | `north-america-west` | <img src="regional/north-america-west/coverage.png" width="210"> | 1002 | 74.0 | 46.8 | | |
| | `canada-alaska` | <img src="regional/canada-alaska/coverage.png" width="210"> | 962 | 73.0 | 46.5 | | |
| ### South America | |
| | region | coverage | classes | fp32 MB | int8-arm MB | | |
| |---|---|---:|---:|---:| | |
| | `amazonia` | <img src="regional/amazonia/coverage.png" width="210"> | 3388 | 132.7 | 61.5 | | |
| | `andes` | <img src="regional/andes/coverage.png" width="210"> | 3535 | 136.3 | 62.4 | | |
| | `eastern-brazil` | <img src="regional/eastern-brazil/coverage.png" width="210"> | 2184 | 103.0 | 54.1 | | |
| | `southern-cone` | <img src="regional/southern-cone/coverage.png" width="210"> | 1855 | 95.0 | 52.0 | | |
| | `galapagos` | <img src="regional/galapagos/coverage.png" width="210"> | 336 | 57.6 | 42.7 | | |
| ### Africa | |
| | region | coverage | classes | fp32 MB | int8-arm MB | | |
| |---|---|---:|---:|---:| | |
| | `southern-africa` | <img src="regional/southern-africa/coverage.png" width="210"> | 1002 | 74.0 | 46.8 | | |
| | `reunion` | <img src="regional/reunion/coverage.png" width="210"> | 274 | 56.1 | 42.3 | | |
| | `mauritius` | <img src="regional/mauritius/coverage.png" width="210"> | 272 | 56.0 | 42.3 | | |
| | `seychelles` | <img src="regional/seychelles/coverage.png" width="210"> | 318 | 57.2 | 42.6 | | |
| | `cape-verde` | <img src="regional/cape-verde/coverage.png" width="210"> | 346 | 57.8 | 42.7 | | |
| | `sao-tome-principe` | <img src="regional/sao-tome-principe/coverage.png" width="210"> | 324 | 57.3 | 42.6 | | |
| | `west-africa` | <img src="regional/west-africa/coverage.png" width="210"> | 1309 | 81.5 | 48.7 | | |
| | `central-africa` | <img src="regional/central-africa/coverage.png" width="210"> | 1883 | 95.6 | 52.2 | | |
| | `east-africa` | <img src="regional/east-africa/coverage.png" width="210"> | 2159 | 102.4 | 53.9 | | |
| ### Oceania | |
| | region | coverage | classes | fp32 MB | int8-arm MB | | |
| |---|---|---:|---:|---:| | |
| | `australia-east` | <img src="regional/australia-east/coverage.png" width="210"> | 946 | 72.6 | 46.4 | | |
| | `new-zealand` | <img src="regional/new-zealand/coverage.png" width="210"> | 486 | 61.3 | 43.6 | | |
| | `hawaii` | <img src="regional/hawaii/coverage.png" width="210"> | 478 | 61.1 | 43.6 | | |
| | `new-caledonia` | <img src="regional/new-caledonia/coverage.png" width="210"> | 377 | 58.6 | 42.9 | | |
| ## Usage | |
| Each model takes 5 s of 32 kHz mono audio (`[1, 160000]`) and outputs a `label` vector of logits over its species list; pair it with the sibling `*_labels.txt` (line count matches the logit count). Pick a variant by hardware (table above). Confidence is a softmax over the model's own classes, so a regional tile normalizes over fewer species than the full model; recalibrate detection thresholds per model. | |
| ## Provenance | |
| Regional slices are gathered from the ProtoPNet head of `perch_v2_no_dft.onnx` and validated bit-exact against the full model on the species they keep. Perch v2 is by Google; see the license above. | |