v0.4.0
Highlights
- Embeddings JSON/JSONL records with a stable contract (
index,image,grid, row-majorpatches), plus a D2EMB v2 preview binary format carrying grid dims. - Batched and multi-image inference via
--batchand repeated-iinputs. - Feature-mode preprocessing is now bounded by default (
--preprocess bounded, shortest edge 518 + true-ceil patch alignment), withhf(HF AutoImageProcessor recipe) andcrop518(fixed 37x37 grid) modes,--no-resizeopt-out, and a--max-tokenscap enforced before graph construction. - Strict numeric parsing for all value flags; graph and model buffer allocation failures exit cleanly instead of aborting.
- Backbone-only DINOv2 GGUF loading and conversion support.
- Parity and benchmark evidence for both small checkpoints (8/8 checks each), plus register-token guidance for feature workflows.
Changelog
[0.4.0] - 2026-09-21
Added
- Return cls, pooled, and score embeddings from dino_predict
- Add output-mode, version, and help flags to CLI parsing
- Emit embeddings JSON and restore top-k output in CLI
- (scripts) Add parity check vs PyTorch reference
- (params) Add n_batch and --batch flag with bounds checking
- (graph) Batch-aware encoder graph in forward_features and attn
- (predict) Multi-image dino_predict API
- (cli) Accept multiple -i inputs and comma-separated image lists
- (cli) Run multi-image inference in n_batch chunks
- (cli) Report per-image throughput in bench output
- (cli) Add preview binary embeddings output
- Harden backbone-only DINOv2 loading
- (preprocess) Bound feature mode with --preprocess, --no-resize, --max-tokens
- (cli) Add index and grid to records, D2EMB v2 header
Fixed
- Preserve aspect ratio in classify preprocess resize
- Pool over actual patch-token count in classify head
- Route dino_model_load logs to stderr
- (scripts) Gate parity on patch flat+mean cosine, keep token min informational
- (dinov2) Exclude register tokens from classify pooling
- (dinov2) Bounds-check value flags in dino_params_parse
- (scripts) Fail parity check on empty image list and CLI timeout
- Add missing scale param to attn declaration
- (cli) Address batched inference review findings
- (cli) Enforce strict numeric parsing
- (cli) Address Task 1 review nits
- (cli) Address binary embeddings review findings
- (ci) Use supported Hugging Face CLI
- (bench) Parse benchmark JSON portably
- Address final parity review findings
- Support backbone-only DINOv2 conversion
- (converter) Harden DINOv2 backbone resolution
- Check ggml graph and model buffer allocation failures
Changed
- (readme) Drop Topics section and topic-count badge
- (plans) Point CUDA smoke-test step at the live HF slug
- Apply clang-format-18 to bench path + bench flag declarations
- Drop unused print_t_f32 debug helper
- Cover classify preprocess aspect and l2_normalize
- Ignore CMake preset build-* directories
- Add cli.md reference and sync CLI docs with embeddings output
- Complete --help blocks and fix model path in cli.md example
- (cli) Fix build preset, threads default, and flag-table lead-in
- Update agent memory for embeddings-dropin learnings
- Batch inference coverage with synthetic tiny model
- Cover flash-attention batch path in dino_predict
- Document batch inference across CLI reference and guides
- (spec) Define register-token recommendations
- Recommend register-token models for feature workflows
- Specify parity benchmark and binary preview
- Add reproducible parity evidence
- (parity) Clarify evidence provenance and downloads
- (bench) Report blocked Ubuntu evidence run
- Record Ubuntu benchmark rerun blocker
- (bench) Record Ubuntu benchmark artifact
- (bench) Preserve model provenance
- (bench) Record current Ubuntu benchmark evidence
- Harden backbone loader review coverage
- (bench) Publish Ubuntu-only benchmark evidence
- Refresh final parity evidence
- Refresh final parity evidence
- Fix regular GGUF checksum
- (spec) Design large-image preprocessing bound and record contract
- Bump project version to 0.4.0
- (spec) Settle preprocess modes, true-ceil alignment, and record contract
- (preprocess) Single resample to bounded target dims, true-ceil ctx sizing
- Record contract, preprocess modes, D2EMB v2
- (parity) Record measured hf-mode residual for tench
- (parity) Record rerun code state and CLI 0.4.0
Miscellaneous
- Add project-scoped mise.toml for clang-format-18 + git-cliff
- Define DINOV2_VERSION from project version
- Add cmake buildPresets so --preset build works
- Merge pull request #10 from espetro/feat/embeddings-dropin
- Merge pull request #11 from espetro/feat/batched-inference
- Merge pull request #12 from espetro/feat/batched-inference
- Merge pull request #13 from espetro/feat/batched-inference
- Merge pull request #14 from espetro/fix/large-image-preprocessing
Full Changelog: v0.3.0...v0.4.0