Add README with credits to upstream model authors
Browse files
README.md
ADDED
|
@@ -0,0 +1,77 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
---
|
| 2 |
+
license: other
|
| 3 |
+
tags:
|
| 4 |
+
- coreml
|
| 5 |
+
- bird-classification
|
| 6 |
+
- object-detection
|
| 7 |
+
- keypoint-detection
|
| 8 |
+
- image-quality-assessment
|
| 9 |
+
---
|
| 10 |
+
|
| 11 |
+
# SuperPicky CoreML Models
|
| 12 |
+
|
| 13 |
+
CoreML-converted copies of the five machine-learning models used by
|
| 14 |
+
[SuperPickyMac](https://github.com/halfhacked/SuperPickyMac), a native macOS
|
| 15 |
+
birding photo-culling app. Each file is the `weights/weight.bin` payload of
|
| 16 |
+
the corresponding `.mlmodelc` directory — the app ships the small scaffold
|
| 17 |
+
files (`model.mil`, `metadata.json`, …) in its app bundle and downloads
|
| 18 |
+
these weight blobs on first launch.
|
| 19 |
+
|
| 20 |
+
**This repository does not introduce any new models.** Every model here is a
|
| 21 |
+
conversion of an existing, independently-published network to Apple's
|
| 22 |
+
Core ML format, for native Neural Engine execution on Apple Silicon. Credit
|
| 23 |
+
and licensing belong to the original authors.
|
| 24 |
+
|
| 25 |
+
## Models and credits
|
| 26 |
+
|
| 27 |
+
| File | Architecture | Source / credit | License |
|
| 28 |
+
|---|---|---|---|
|
| 29 |
+
| `FlightDetector.weight.bin` (41 MB) | EfficientNet-B3 → binary head | Trained by [SuperPicky](https://gitcode.com/Jamesphotography/SuperPicky) (Jamesphotography) for flying-vs-perched bird classification. Backbone: [EfficientNet](https://arxiv.org/abs/1905.11946) (Tan & Le, 2019). | See SuperPicky repo |
|
| 30 |
+
| `KeypointDetector.weight.bin` (94 MB) | ResNet50 + PartLocalizer head | Trained by SuperPicky on [CUB-200-2011](http://www.vision.caltech.edu/datasets/cub_200_2011/) keypoint annotations (left-eye, right-eye, beak). | See SuperPicky repo |
|
| 31 |
+
| `YOLOBirdDetector.weight.bin` (53 MB) | YOLO11l-seg | [Ultralytics YOLO11l-seg](https://github.com/ultralytics/ultralytics); SuperPicky filters detections to COCO class 14 (`bird`). | [AGPL-3.0](https://github.com/ultralytics/ultralytics/blob/main/LICENSE) |
|
| 32 |
+
| `OSEAClassifier.weight.bin` (103 MB) | ResNet34 → 10,964 species | [OSEA bird classifier](https://gitcode.com/sunjiao) by [Sun Jiao](https://gitcode.com/sunjiao). Trained on ~11 k bird species worldwide; SuperPicky feeds each YOLO crop to it for species identification. | See OSEA repo |
|
| 33 |
+
| `AestheticsModel.weight.bin` (266 MB) | CFANet / TOPIQ (ResNet50 backbone + transformer cross-attention) | [TOPIQ](https://github.com/chaofengc/IQA-PyTorch) by Chen *et al.*; CFANet checkpoint trained on the AVA aesthetics dataset. Paper: [TOPIQ: A Top-Down Approach from Semantics to Distortions for Image Quality Assessment](https://arxiv.org/abs/2308.03060). | [NTU S-Lab License](https://github.com/chaofengc/IQA-PyTorch/blob/main/LICENSE.txt) |
|
| 34 |
+
|
| 35 |
+
All source PyTorch checkpoints originate from the [`jamesphotography/SuperPicky-models`](https://huggingface.co/jamesphotography/SuperPicky-models) reference repository — see there for the `.pth` / `.onnx` sources and the corresponding training code.
|
| 36 |
+
|
| 37 |
+
## What this repo contains
|
| 38 |
+
|
| 39 |
+
Five files, one per CoreML model, each identical to the `weight.bin` blob
|
| 40 |
+
produced by `coremltools.convert(...).save()`:
|
| 41 |
+
|
| 42 |
+
| File | SHA-256 | Size |
|
| 43 |
+
|---|---|---|
|
| 44 |
+
| `FlightDetector.weight.bin` | `0105ee79ff06f4f40edace40daa275f71126d8d1fb0737f0fff029c611379610` | 42,634,112 |
|
| 45 |
+
| `KeypointDetector.weight.bin` | `0ce77aefef957af92ffbc58e23897f7b6127ac79ab1d23f8a0395db9f296d82c` | 98,676,800 |
|
| 46 |
+
| `YOLOBirdDetector.weight.bin` | `387b5e33feb8fdaac86e6792ba11cf40d91aaed851bb4ccb0ce04501cbc760ca` | 55,367,168 |
|
| 47 |
+
| `OSEAClassifier.weight.bin` | `cd2ca17e7858e3b49647a01e7830d38405e5b605f6c49c5b8f2490c73bd67bf2` | 107,681,472 |
|
| 48 |
+
| `AestheticsModel.weight.bin` | `9e3612f51c95331d69cf5aecfff5185f4f7316436f00186713f9656fb211f1b9` | 278,668,800 |
|
| 49 |
+
|
| 50 |
+
The SuperPicky Mac app bundles `manifest.json` with exactly these digests and
|
| 51 |
+
refuses to install a downloaded file whose SHA-256 doesn't match — so if you
|
| 52 |
+
modify any file here, the app will reject it.
|
| 53 |
+
|
| 54 |
+
## Reproducing these weights
|
| 55 |
+
|
| 56 |
+
The conversion scripts live in the SuperPickyMac repo under
|
| 57 |
+
[`scripts/convert_*.py`](https://github.com/halfhacked/SuperPickyMac/tree/main/scripts).
|
| 58 |
+
Each script:
|
| 59 |
+
|
| 60 |
+
1. Loads the original PyTorch checkpoint from the SuperPicky source models
|
| 61 |
+
(or a pinned Ultralytics release).
|
| 62 |
+
2. Traces the model with `torch.jit.trace`.
|
| 63 |
+
3. Converts via `coremltools.convert(..., convert_to='mlprogram',
|
| 64 |
+
compute_precision=ct.precision.FLOAT32)`.
|
| 65 |
+
4. Writes a `.mlpackage` directory whose `weights/weight.bin` is the file
|
| 66 |
+
you see here, and runs a parity check against the PyTorch original
|
| 67 |
+
(max absolute delta typically ≤ 1e-6).
|
| 68 |
+
|
| 69 |
+
No architectural changes, no re-training, no quantization — just format
|
| 70 |
+
translation so the models can run on Apple's Neural Engine.
|
| 71 |
+
|
| 72 |
+
## License
|
| 73 |
+
|
| 74 |
+
Each model inherits the license of its upstream source (see the table
|
| 75 |
+
above). This repository packages the CoreML conversion artifacts only;
|
| 76 |
+
please consult the original projects for terms governing commercial use,
|
| 77 |
+
redistribution, and derivative works.
|