Files
james.maesandClaude Opus 4.7 0d46971563 Swap YOLOv3 (80 classes) for YOLOv8x-OIV7 (601 classes)
Replaces the bundled detector with Ultralytics' YOLOv8x trained on
Open Images V7 — 601 object classes including coffee cup, mug, wine
glass, mobile phone, computer monitor, sunglasses, laptop, plus body
parts (human face / hand / eye / arm / leg). Substantially better
"is that a coffee mug" detection than the 80-class COCO model.

Conversion
- Ultralytics' yolov8x-oiv7.pt → Core ML mlpackage via
  ultralytics.YOLO(...).export(format="coreml", nms=True). Output is a
  Vision-friendly pipeline (preprocessing + model + NMS), so
  VNCoreMLRequest continues to return [VNRecognizedObjectObservation]
  directly with no manual decoding.
- scripts/convert-yolo-oiv7.py is the conversion entry point.
- scripts/fetch-model.sh rewritten as a no-LFS fallback that
  bootstraps a Python venv, installs coremltools + ultralytics, runs
  the conversion, and drops the result into Sources/Resources/Models/.

Bundling
- yolov8x-oiv7.mlpackage is a directory (~131 MB weight.bin + small
  model.mlmodel descriptor + Manifest.json).
- .gitattributes adds LFS tracking for **/weight.bin and
  **/model.mlmodel inside Sources/Resources/Models so the contents go
  to LFS without the surrounding directory metadata pretending to be
  binary.
- Old YOLOv3.mlmodel removed from the repo (still in LFS history if
  needed).

Theme
- Theme.Performance.detectorModelName updated to "yolov8x-oiv7" (the
  detector falls back to mlpackage extension automatically via the
  existing Bundle.main.url lookup).

README + scripts updated to reflect the new model and 601-class
vocabulary.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-16 15:12:51 -05:00
..